Sto leggendo su Insecure Deserialization
e ho ricordato una vulnerabilità di cui ho letto in alcune implementazioni JSON Web Token (JWT) su auth0.
Per farla breve, viene utilizzato l'algoritmo "nessuno", la firma viene rimossa e l'applicazione ritiene che tutto ciò che l'utente invia sia OK. Questo sarebbe sotto Insecure Deserialization
o Using Components with Known Vulnerabilities
? L'esempio dato potrebbe ovviamente essere Broken Access Control
, ma dato che l'utente controlla l'oggetto potrebbe manipolare il sistema anche in altri modi.
{"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.
Gli esempi che trovo provengono da PHP, Python e Java e alcune descrizioni indicano che JSON o XML non fanno parte della classificazione.
However, many programming languages offer a native capability for serializing objects. These native formats usually offer more features than JSON or XML, including customizability of the serialization process. Unfortunately, the features of these native deserialization mechanisms can be repurposed for malicious effect when operating on untrusted data. Attacks against deserializers have been found to allow denial-of-service, access control, and remote code execution attacks.
Sì, la vulnerabilità è più importante della classificazione, ma sono comunque interessato a classificazioni corrette.