SAML, en profunditat: la signatura dins la carta
SAML t'inicia la sessió a gairebé totes les aplicacions de treball, i la seva signatura viu dins del XML que signa.
SAML t'inicia la sessió a gairebé totes les aplicacions de treball, i la seva signatura viu dins del XML que signa. En profunditat: el ball d'inici de sessió entre l'aplicació, el navegador i el proveïdor d'identitat, com és una asserció, per què la canonicalització ha d'estar d'acord en cada byte, i per què la mateixa classe d'errors continua tornant del 2012 al 2025. Impulsat per "SAML: A fractal of bad design" de Trail of Bits (312 punts a Hacker News).
Llegeix l'edició escrita (anglès) ↗
Què cobreix aquest vídeo
- SAML: l'inici de sessió que se signa a si mateix des de dins
- 2002: quatre formats XML, un comitè, tota una indústria
- El ball d'inici de sessió: aplicació → proveïdor d'identitat → de tornada a través del teu navegador
- L'asserció: la signatura viu dins del que signa
- Canonicalització: acord en cada byte, o ningú inicia la sessió
Transcripció traduïda
Traduït de la narració original en anglès. L'àudio i els subtítols disponibles estan controlats per YouTube.
SAML: l'inici de sessió que se signa a si mateix des de dins
0:00 SAML és el XML que t'inicia la sessió a gairebé totes les aplicacions de treball que tens, i la seva signatura viu dins del document que signa, com un notari grapat el seu segell dins el sobre que està segellant. Deu anys després que un comitè el va escriure, els investigadors van provar catorze marcs de SAML. Onze van caure. I aquesta setmana una publicació de Trail of Bits que l'anomena un fractal de mal disseny va arribar a la portada de Hacker News. En tres minuts: com funciona el ball d'inici de sessió, on s'amaga la signatura,
0:27 i per què la solució en què tothom està d'acord és un protocol diferent. Això és The Daily Diff, en profunditat.
2002: quatre formats XML, un comitè, tota una indústria
0:34 Dos mil dos. Un comitè de seguretat a Oasis fusiona quatre formats XML de proveïdors en un de sol. Les universitats l'adopten primer, després Okta construeix una empresa sobre ell, el més ràpid que un document de comitè s'ha convertit en ingressos. Obre l'aplicació.
El ball d'inici de sessió: aplicació → proveïdor d'identitat → de tornada a través del teu navegador
0:46 No té ni idea de qui ets, així que redirigeix el teu navegador al proveïdor d'identitat, posem que l'Okta de la teva empresa. Hi inicies sessió allà. Okta lliura al teu navegador un document XML signat que diu qui ets, i el navegador el torna a publicar.
L'asserció: la signatura viu dins del que signa
0:59 Aquest document és l'asserció. Nomina l'usuari, i la signatura es troba dins d'ell, assenyalant l'asserció pel seu ID. I tot plegat passa pel teu navegador, és a dir, a través de l'usuari. Per comprovar-ho, l'aplicació
Canonicalització: acord en cada byte, o ningú inicia la sessió
1:11 reconstrueix els bytes exactes que es van signar. Talla la signatura, normalitza els espais en blanc i l'ordre dels atributs, i fa un hash del resultat. Això és la canonicalització, i si les dues parts no coincideixen ni en un sol byte, ningú inicia la sessió. Un token web JSON ho fa de manera diferent. Capçalera, càrrega útil i signatura estan costat per costat amb punts al mig. Res a tallar primer.
2012: el verificador i el lector miren elements diferents
1:32 Aquí hi ha la fallada. El codi que comprova la signatura i el codi que llegeix el nom d'usuari són sovint dues peces diferents. El dos mil dotze, un article anomenat On Breaking SAML va mostrar que es podia moure l'asserció signada on el lector la ignora, i posar-ne una segona on la cerca. Salesforce i Shibboleth van ser entre els onze que van caure-hi. El dos mil divuit, Duo va demostrar que un comentari dins d'un nom d'usuari podia fer que algunes
2018 i 2025: dos analitzadors sintàctics, dues respostes diferents
1:55 biblioteques llegissin només la meitat del nom, mentre que la signatura encara era vàlida. El dos mil vint-i-cinc, GitHub va trobar dos analitzadors sintàctics XML dins de Ruby SAML que no coincidien sobre el mateix document. Mateix error, nova dècada. Trail of Bits l'anomena un fractal, perquè cada nivell en el qual s'amplia té la
Per què segueix fallant: un fractal de mal disseny
2:12 mateixa falla. Està construït sobre XML, la signatura està envoltada, i els inicis de sessió reals utilitzen potser una desena part de l'especificació. I la millor resposta a Hacker News prové del comprador. Si no teniu suport SAML, puc trobar un producte que sí que en tingui. Ambdues són certes, que és el problema. Així doncs, dilluns. SHIP IT OpenID Connect primer, Fly i Tailscale venen a
Dilluns: primer OIDC, una biblioteca mantinguda, formes estrictes
2:31 empreses sense SAML en absolut. Si un client l'obliga, utilitzeu una biblioteca mantinguda, manteniu-la actualitzada, i rebutgeu els missatges que no s'assemblen als que envien Okta o Google. No escriguis mai la teva pròpia comprovació de signatura.
Veredicte, en profunditat: REVERT
2:43 Veredicte, en profunditat. REVERT. Gairebé vint-i-cinc anys, una classe d'errors que no mor mai, i la solució en què tothom està d'acord és un protocol diferent. El darrer dissabte vaig desmuntar les passkeys, així que digueu-me què he d'obrir a continuació als comentaris. I aquesta és la diferència d'avui. Sóc en Niko d'Axrisi. Fusiona amb responsabilitat.
Fonts
- Trail of Bits, "SAML: A fractal of bad design" (Matt Schwager, Sep 21, 2026)blog.trailofbits.com
- Hacker News threadnews.ycombinator.com
- Somorovsky et al., "On Breaking SAML: Be Whoever You Want to Be", USENIX Security 2012www.usenix.org
- Duo Labs, SAML vulnerabilities affecting multiple implementations (2018): https://duo.com/blog/duo-finds-saml-vulnerabilities-affecting-multiple-implementations · CERT VU#475445www.kb.cert.org
- GitHub Security Lab, "Sign in as anyone: Bypassing SAML SSO authentication with parser differentials" (Mar 12, 2025)github.blog



