# SAML, kapoti all: kiri, millel on sees allkiri

Published: 2026-09-24

SAML logib sind sisse peaaegu igasse töörakendusse ja selle allkiri elab XML-i sees, mida see allkirjastab. Kapoti all: sisselogimise tants rakenduse, brauseri ja identiteedipakkuja vahel, milline näeb välja väide, miks kanoniseerimine peab iga baidi osas kokku leppima ja miks sama veaklass tuleb tagasi aastast 2012 kuni 2025. Ajendatud Trail of Bits'i "SAML: A fractal of bad design" (312 punkti Hacker Newsis).

Canonical: https://thedailydiff.dev/et/video/2026-09-24-saml-under-the-hood/

## Mida see video hõlmab

- SAML: sisselogimine, mis allkirjastab end seestpoolt
- 2002: neli XML-formaati, üks komitee, terve tööstus
- Sisselogimise tants: rakendus → identiteedipakkuja → tagasi läbi sinu brauseri
- Väide: allkiri elab selles, mida see allkirjastab
- Kanoniseerimine: lepi kokku igas baidis või keegi ei logi sisse

## Peatükid

- 0:00 SAML: sisselogimine, mis allkirjastab end seestpoolt
- 0:34 2002: neli XML-formaati, üks komitee, terve tööstus
- 0:46 Sisselogimise tants: rakendus → identiteedipakkuja → tagasi läbi sinu brauseri
- 0:59 Väide: allkiri elab selles, mida see allkirjastab
- 1:10 Kanoniseerimine: lepi kokku igas baidis või keegi ei logi sisse
- 1:32 2012: kontrollija ja lugeja vaatavad erinevaid elemente
- 1:51 2018 ja 2025: kaks parserit, kaks erinevat vastust
- 2:08 Miks see pidevalt katki läheb: halb disain kui fraktal
- 2:27 Esmaspäev: kõigepealt OIDC, hooldatud teek, ranged kujud
- 2:43 Otsus, kapoti all: REVERT

## Tõlgitud transkriptsioon

Tõlgitud ingliskeelsest originaaljutustusest. Saadaolevat heli ja subtiitreid kontrollib YouTube.

### SAML: sisselogimine, mis allkirjastab end seestpoolt

0:00 SAML on XML, mis logib sind sisse peaaegu igasse sinu töörakendusse, ja selle allkiri elab dokumendi sees, mida see allkirjastab, nagu notar klammerdaks oma templi pitseri sisse. Kümme aastat pärast komitee kirjutamist testisid uurijad neliteist SAML-i raamistikku. Üksteist kukkus läbi. Ja sel nädalal jõudis Trail of Bits'i postitus, mis nimetas seda halva disaini fraktaliks, Hacker News'i esilehele. Kolme minutiga: kuidas sisselogimise tants töötab, kuhu allkiri peitub,

0:27 ja miks lahendus, milles kõik kokku lepivad, on teine protokoll. See on The Daily Diff, kapoti all.

### 2002: neli XML-formaati, üks komitee, terve tööstus

0:34 Kakskümmend kaks. Oasise turvakomitee ühendab neli tarnija XML-formaati üheks. Ülikoolid võtavad selle esimesena omaks, siis ehitab Okta sellele ettevõtte, kiireim viis, kuidas komitee dokument tuluks muutus. Avad rakenduse.

### Sisselogimise tants: rakendus → identiteedipakkuja → tagasi läbi sinu brauseri

0:46 Sellel pole aimugi, kes sa oled, seega suunab see sinu brauseri identiteedipakkujale, näiteks sinu ettevõtte Okta. Logid sinna sisse. Okta annab sinu brauserile allkirjastatud XML-dokumendi, mis ütleb, kes sa oled, ja brauser postitab selle tagasi.

### Väide: allkiri elab selles, mida see allkirjastab

0:59 See dokument on väide. See nimetab kasutaja ja allkiri asub selle sees, osutades ID-ga tagasi väitele. Ja kogu asi läbib sinu brauseri, mis tähendab, läbi kasutaja. Selle kontrollimiseks ehitab rakendus

### Kanoniseerimine: lepi kokku igas baidis või keegi ei logi sisse

1:11 täpselt need baidid, mis allkirjastati, uuesti üles. See lõikab allkirja uuesti välja, normaliseerib tühikud ja atribuudi järjekorra ning räsi tulemuse. See on kanoniseerimine ja kui kaks poolt on kasvõi ühe baidi võrra eriarvamusel, keegi ei logi sisse. JSON veebitõend teeb seda teisiti. Päis, sisend ja allkiri asuvad punktidega kõrvuti. Midagi pole vaja enne välja lõigata.

### 2012: kontrollija ja lugeja vaatavad erinevaid elemente

1:32 Siin on viga. Kood, mis kontrollib allkirja, ja kood, mis loeb kasutajanime, on sageli kaks erinevat osa. Kaheteistkümnendal aastal näitas paber nimega On Breaking SAML, et võid teisaldada allkirjastatud väite sinna, kus lugeja seda ignoreerib, ja panna teise sinna, kus see vaatab. Salesforce ja Shibboleth olid üheteistkümne hulgas, kes selle ohvriks langesid. Kaheteistkümnendal aastal näitas Duo, et kasutajanime sees olev kommentaar võib panna mõned

### 2018 ja 2025: kaks parserit, kaks erinevat vastust

1:55 teegid lugema ainult poolt nime, samal ajal kui allkiri oli ikka korrektne. Kaheteistkümnendal aastal leidis GitHub Ruby SAML-i seest kaks XML-parserit, mis olid sama dokumendi osas eriarvamusel. Sama viga, uus kümnend. Trail of Bits nimetab seda fraktaliks, sest igal tasandil, kuhu suumid, on

### Miks see pidevalt katki läheb: halb disain kui fraktal

2:12 sama viga. See on ehitatud XML-ile, allkiri on ümbritsetud, ja tegelikud sisselogimised kasutavad ehk kümnendikku spetsifikatsioonist. Ja Hacker Newsi tippvastus pärineb ostjalt. Kui teil SAML-tuge pole, leian ma toote, millel see on. Mõlemad on tõesed, mis on probleem. Niisiis, esmaspäev. SHIP OpenID Connect esimesena, Fly ja Tailscale müüvad

### Esmaspäev: kõigepealt OIDC, hooldatud teek, ranged kujud

2:31 ettevõtetele ilma SAML-ita üldse. Kui klient seda sunnib, kasutage hooldatud teeki, hoidke seda parandatuna, ja lükake tagasi sõnumid, mis ei näe välja sellised, nagu Okta või Google saadavad. Ärge kunagi kirjutage oma allkirjakontrolli.

### Otsus, kapoti all: REVERT

2:43 Otsus, kapoti all. REVERT. Peaaegu kakskümmend viis aastat, üks veaklass, mis kunagi ei sure, ja lahendus, milles kõik kokku lepivad, on teine protokoll. Eelmisel laupäeval võtsin passkey'd lahti, nii et öelge mulle, mida järgmiseks kommentaarides avada. Ja see on tänane The Daily Diff. Mina olen Niko Axrisist. Ühendage vastutustundlikult.

## Allikad

- [Trail of Bits, "SAML: A fractal of bad design" (Matt Schwager, Sep 21, 2026)](https://blog.trailofbits.com/2026/09/21/saml-a-fractal-of-bad-design/) — blog.trailofbits.com
- [Hacker News thread](https://news.ycombinator.com/item?id=49806335) — news.ycombinator.com
- [Somorovsky et al., "On Breaking SAML: Be Whoever You Want to Be", USENIX Security 2012](https://www.usenix.org/conference/usenixsecurity12/technical-sessions/presentation/somorovsky) — www.usenix.org
- [Duo Labs, SAML vulnerabilities affecting multiple implementations (2018): https://duo.com/blog/duo-finds-saml-vulnerabilities-affecting-multiple-implementations · CERT VU#475445](https://www.kb.cert.org/vuls/id/475445) — www.kb.cert.org
- [GitHub Security Lab, "Sign in as anyone: Bypassing SAML SSO authentication with parser differentials" (Mar 12, 2025)](https://github.blog/security/sign-in-as-anyone-bypassing-saml-sso-authentication-with-parser-differentials/) — github.blog
