+− THE DAILY DIFFdev & AI news
REVERT

SAML, sotto il cofano: la firma dentro la lettera

SAML ti autentica in quasi ogni app di lavoro e la sua firma vive all'interno dell'XML che firma.

SAML ti autentica in quasi ogni app di lavoro e la sua firma vive all'interno dell'XML che firma. Sotto il cofano: la "danza" di login tra app, browser e fornitore di identità, come appare un'asserzione, perché la canonizzazione deve concordare su ogni byte e perché la stessa classe di bug continua a ripresentarsi dal 2012 al 2025. Sollecitato da "SAML: A fractal of bad design" di Trail of Bits (312 punti su Hacker News).

Leggi l'edizione scritta (inglese) ↗

Contenuto di questo video

  • SAML: il login che si firma dall'interno
  • 2002: quattro formati XML, un comitato, un'intera industria
  • La danza di login: app → fornitore di identità → ritorno tramite il tuo browser
  • L'asserzione: la firma vive all'interno di ciò che firma
  • Canonizzazione: accordarsi su ogni byte, altrimenti nessuno effettua il login

Trascrizione tradotta

Tradotto dalla narrazione originale inglese. L'audio e i sottotitoli disponibili sono controllati da YouTube.

SAML: il login che si firma dall'interno

0:00 SAML è l'XML che ti autentica in quasi ogni app di lavoro che possiedi, e la sua firma vive all'interno del documento che firma, come un notaio che pinza il suo timbro all'interno della busta che sta sigillando. Dieci anni dopo che un comitato l'ha scritto, i ricercatori hanno testato quattordici framework SAML. Undici sono caduti. E questa settimana un post di Trail of Bits che lo definisce un frattale di cattiva progettazione ha raggiunto la prima pagina di Hacker News. In tre minuti: come funziona la "danza" di login, dove si nasconde la firma,

0:27 e perché la soluzione su cui tutti concordano è un protocollo diverso. Questo è The Daily Diff, sotto il cofano.

2002: quattro formati XML, un comitato, un'intera industria

0:34 Duemiladue. Un comitato di sicurezza dell'Oasis unisce quattro formati XML di fornitori in uno solo. Le università lo adottano per prime, poi Okta ci costruisce un'azienda, il più velocemente un documento di comitato si sia mai trasformato in entrate. Apri l'app.

La danza di login: app → fornitore di identità → ritorno tramite il tuo browser

0:46 Non ha idea di chi tu sia, quindi reindirizza il tuo browser al fornitore di identità, diciamo l'Okta della tua azienda. Ti autentichi lì. Okta consegna al tuo browser un documento XML firmato che dice chi sei, e il browser lo rimanda indietro.

L'asserzione: la firma vive all'interno di ciò che firma

0:59 Quel documento è l'asserzione. Nomina l'utente, e la firma si trova al suo interno, puntando all'asserzione tramite il suo ID. E il tutto viaggia attraverso il tuo browser, il che significa, attraverso l'utente. Per verificarlo, l'app

Canonizzazione: accordarsi su ogni byte, altrimenti nessuno effettua il login

1:11 ricostruisce i byte esatti che sono stati firmati. Toglie la firma, normalizza gli spazi bianchi e l'ordine degli attributi, e calcola l'hash del risultato. Questa è la canonizzazione, e se le due parti non concordano neanche di un singolo byte, nessuno effettua il login. Un token web JSON lo fa diversamente. Intestazione, payload e firma si trovano fianco a fianco con punti in mezzo. Niente da tagliare prima.

2012: il verificatore e il lettore guardano elementi diversi

1:32 Ecco la falla. Il codice che verifica la firma e il codice che legge il nome utente sono spesso due pezzi diversi. Nel duemiladodici, un articolo intitolato "On Breaking SAML" ha mostrato che si poteva spostare l'asserzione firmata dove il lettore la ignora, e metterne una seconda dove la cerca. Salesforce e Shibboleth erano tra gli undici che ci sono cascati. Nel duemiladiciotto, Duo ha mostrato che un commento all'interno di un nome utente poteva far sì che alcune

2018 e 2025: due parser, due risposte diverse

1:55 librerie leggessero solo metà del nome, mentre la firma risultava comunque valida. Nel duemilaventicinque, GitHub ha trovato due parser XML all'interno di ruby SAML che non concordavano sullo stesso documento. Stesso bug, nuovo decennio. Trail of Bits lo chiama un frattale, perché ogni livello in cui si ingrandisce presenta lo

Perché continua a rompersi: un frattale di cattiva progettazione

2:12 stesso difetto. È costruito su XML, la firma è avvolta, e i login reali usano forse un decimo della specifica. E la risposta principale su Hacker News proviene dall'acquirente. Se non hai il supporto SAML, posso trovare un prodotto che lo ha. Entrambe sono vere, il che è il problema. Quindi, lunedì. SHIP IT OpenID Connect per primo, Fly e Tailscale vendono a

Lunedì: prima OIDC, una libreria mantenuta, forme rigorose

2:31 aziende senza SAML del tutto. Se un cliente lo impone, usa una libreria mantenuta, tienila aggiornata, e rifiuta i messaggi che non assomigliano a quelli inviati da Okta o Google. Non scrivere mai il tuo controllo della firma.

Verdetto, sotto il cofano: REVERT

2:43 Verdetto, sotto il cofano. REVERT. Quasi venticinque anni, una classe di bug che non muore mai, e la soluzione su cui tutti concordano è un protocollo diverso. Sabato scorso ho smontato le passkey, quindi ditemi cosa aprire dopo nei commenti. E questo è il diff per oggi. Sono Niko di Axrisi. Unire responsabilmente.

Fonti

  1. Trail of Bits, "SAML: A fractal of bad design" (Matt Schwager, Sep 21, 2026)blog.trailofbits.com
  2. Hacker News threadnews.ycombinator.com
  3. Somorovsky et al., "On Breaking SAML: Be Whoever You Want to Be", USENIX Security 2012www.usenix.org
  4. 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
  5. GitHub Security Lab, "Sign in as anyone: Bypassing SAML SSO authentication with parser differentials" (Mar 12, 2025)github.blog

Video correlati