Estoy leyendo sobre Insecure Deserialization
y recordé una vulnerabilidad sobre la que leí en algunas implementaciones de JSON Web Token (JWT) en auth0.
En pocas palabras, se usa el algoritmo "ninguno", se elimina la firma y la aplicación cree que todo lo que el usuario envíe está bien. ¿Caería esto bajo Insecure Deserialization
o Using Components with Known Vulnerabilities
? El ejemplo dado podría ser, por supuesto, Broken Access Control
, pero dado que el usuario controla el objeto, también podría manipular el sistema de otras maneras.
{"alg":"HS256","typ":"JWT"}.{ "admin": false, "name": "John Doe", "iat": 1516239022}.signature
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZG1pbiI6ZmFsc2UsIm5hbWUiOiJKb2huIERvZSIsImlhdCI6MTUxNjIzOTAyMn0.lN5mCX6BnfgtoRVHVaTt9hcj3VUcHWAwdnTT-PLca3c
{"alg":"none","typ":"JWT"}.{ "admin": true, "name": "John Doe", "iat": 1516239022}.signature
eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJhZG1pbiI6dHJ1ZSwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.
Los ejemplos que encuentro son de PHP, Python y Java y algunas descripciones indican que JSON o XML no son parte de la clasificación.
Sin embargo, muchos lenguajes de programación ofrecen una capacidad nativa para Serialización de objetos. Estos formatos nativos suelen ofrecer más características. que JSON o XML, incluida la personalización de la serialización proceso. Desafortunadamente, las características de estos nativos de deserialización. Los mecanismos pueden ser reutilizados para efectos maliciosos cuando se opera en datos no fiables. Se han encontrado ataques contra deserializadores para permitir Ataques de denegación de servicio, control de acceso y ejecución remota de código.
Sí, la vulnerabilidad es más importante que la clasificación, pero todavía estoy interesado en las clasificaciones correctas.