SAML, no kura rodas: paraksts vēstules iekšpusē
SAML jūs pieslēdz gandrīz katrai darba lietotnei, un tā paraksts atrodas tā parakstītajā XML.
SAML jūs pieslēdz gandrīz katrai darba lietotnei, un tā paraksts atrodas tā parakstītajā XML. Zem "kapota": pieteikšanās deja starp lietotni, pārlūkprogrammu un identitātes nodrošinātāju, kā izskatās apgalvojums, kāpēc kanonizācijai ir jāvienojas par katru baitu un kāpēc viena un tā pati kļūdu klase turpina atgriezties no 2012. līdz 2025. gadam. Pamudinājums no Trail of Bits "SAML: A fractal of bad design" (312 punkti Hacker News).
Lasiet rakstisko izdevumu (angļu valodā) ↗
Ko aptver šis video
- SAML: pieteikšanās, kas paraksta pati sevi no iekšpuses
- 2002: četri XML formāti, viena komiteja, visa nozare
- Pieteikšanās deja: lietotne → identitātes nodrošinātājs → atpakaļ caur jūsu pārlūkprogrammu
- Apgalvojums: paraksts atrodas tajā, ko tas paraksta
- Kanonizācija: vienojieties par katru baitu, citādi neviens nepieslēgsies
Tulkotais transkripts
Tulkojums no oriģinālā angļu stāstījuma. Pieejamais audio un subtitri tiek kontrolēti no YouTube.
SAML: pieteikšanās, kas paraksta pati sevi no iekšpuses
0:00 SAML ir XML, kas jūs pieslēdz gandrīz katrai jūsu darba lietotnei, un tā paraksts atrodas dokumentā, ko tas paraksta, līdzīgi kā notārs iedur savu zīmogu aploksnē, ko viņš aizzīmogo. Desmit gadus pēc tam, kad komiteja to uzrakstīja, pētnieki pārbaudīja četrpadsmit Saml sistēmas. Vienpadsmit krita. Un šonedēļ Trail of Bits ziņojums, kas to nosauca par slikta dizaina fraktāli, nonāca Hacker News galvenajā lapā. Trīs minūtēs: kā darbojas pieteikšanās deja, kur slēpjas paraksts,
0:27 un kāpēc risinājums, par ko visi vienojas, ir cits protokols. Šis ir The Daily Diff, no kura rodas.
2002: četri XML formāti, viena komiteja, visa nozare
0:34 Divi tūkstoši divi. Oasis drošības komiteja apvieno četrus piegādātāju XML formātus vienā. Universitātes to vispirms pieņem, tad Okta uz tā būvē uzņēmumu, visātrāk komitejas dokuments jebkad pārvērties ieņēmumos. Jūs atverat lietotni.
Pieteikšanās deja: lietotne → identitātes nodrošinātājs → atpakaļ caur jūsu pārlūkprogrammu
0:46 Tai nav ne jausmas, kas jūs esat, tāpēc tā novirza jūsu pārlūkprogrammu uz identitātes nodrošinātāju, piemēram, jūsu uzņēmuma Okta. Jūs tur pieslēdzaties. Okta nodod jūsu pārlūkprogrammai parakstītu XML dokumentu, kas norāda, kas jūs esat, un pārlūkprogramma to nosūta atpakaļ.
Apgalvojums: paraksts atrodas tajā, ko tas paraksta
0:59 Šis dokuments ir apgalvojums. Tas nosauc lietotāju, un paraksts atrodas tajā, norādot atpakaļ uz apgalvojumu pēc tā ID. Un viss notiek caur jūsu pārlūkprogrammu, kas nozīmē, caur lietotāju. Lai to pārbaudītu, lietotne
Kanonizācija: vienojieties par katru baitu, citādi neviens nepieslēgsies
1:11 atkārtoti izveido tieši tos baitus, kas tika parakstīti. Tā izgriež parakstu, normalizē atstarpes un atribūtu secību un hešē rezultātu. Tā ir kanonizācija, un, ja abas puses atšķiras kaut par vienu baitu, neviens nepieslēdzas. JSON tīmekļa žetons to dara citādi. Galvene, derīgā slodze un paraksts atrodas blakus ar punktiem starp tiem. Nekas nav vispirms jāizgriež.
2012: pārbaudītājs un lasītājs skatās uz dažādiem elementiem
1:32 Lūk, kļūda. Kods, kas pārbauda parakstu, un kods, kas nolasa lietotājvārdu, ir bieži divas dažādas daļas. Divi tūkstoši divpadsmitā gadā dokuments ar nosaukumu On Breaking Saml parādīja, ka var pārvietot parakstīto apgalvojumu, kur lasītājs to ignorē, un ievietot otru tur, kur tas meklē. Salesforce un Shibboleth bija starp vienpadsmit, kas tam iekrita. Divi tūkstoši astoņpadsmitā gadā Duo parādīja, ka komentārs lietotājvārdā var likt dažām
2018 un 2025: divi analizētāji, divas dažādas atbildes
1:55 bibliotēkām nolasīt tikai pusi vārda, kamēr paraksts joprojām tika pārbaudīts. Divi tūkstoši divdesmit piektā gadā GitHub atrada divus XML analizētājus ruby Saml nesaskaņas par to pašu dokumentu. Viena kļūda, jauna desmitgade. Trail of Bits to sauc par fraktāli, jo katrā līmenī, kurā tu tuvinies, ir viena un tā pati
Kāpēc tas turpina lūzt: slikta dizaina fraktālis
2:12 kļūda. Tas ir balstīts uz XML, paraksts ir aploksnes veidā, un reālas pieteikšanās izmanto varbūt desmito daļu no specifikācijas. Un labākā atbilde Hacker News nāk no pircēja. Ja jums nav Saml atbalsta, es varu atrast produktu, kam ir. Abi ir patiesi, kas ir problēma. Tātad, pirmdiena. Vispirms Ship OpenID Connect, Fly un Tailscale pārdod
Pirmdiena: vispirms OIDC, uzturēta bibliotēka, stingras formas
2:31 uzņēmumiem vispār bez Saml. Ja klients to pieprasa, izmantojiet uzturētu bibliotēku, regulāri atjauniniet to, un noraidiet ziņojumus, kas neizskatās pēc tā, ko sūta Okta vai Google. Nekad nerakstiet savu paraksta pārbaudi.
Spriedums, no kura rodas: REVERT
2:43 Spriedums, no kura rodas. REVERT. Gandrīz divdesmit pieci gadi, viena kļūdu klase, kas nekad nemirst, un risinājums, par ko visi vienojas, ir cits protokols. Pagājušajā sestdienā es izjaucu passkeys, tāpēc pasakiet man, ko atvērt nākamo komentāros. Un tas ir šodienas atšķirība. Esmu Niko no Axrisi. Apvienojiet atbildīgi.
Avoti
- 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



