+− THE DAILY DIFFdev & AI news
REVERT

SAML, iš vidaus: parašas laiško viduje

SAML prisijungia prie beveik kiekvienos darbo programos, o jo parašas gyvena pasirašytame XML.

SAML prisijungia prie beveik kiekvienos darbo programos, o jo parašas gyvena pasirašytame XML. Iš vidaus: prisijungimo šokis tarp programos, naršyklės ir tapatybės teikėjo, kaip atrodo patvirtinimas, kodėl kanonizacija turi sutikti su kiekvienu baitu ir kodėl ta pati klaidų klasė nuolat grįžta nuo 2012 iki 2025 m. Paskatinta Trail of Bits „SAML: blogo dizaino fraktalas“ (312 taškų „Hacker News“).

Skaityti rašytinę versiją (anglų k.) ↗

Kas aptariama šiame vaizdo įraše

  • SAML: prisijungimas, kuris pasirašo pats save iš vidaus
  • 2002: keturi XML formatai, vienas komitetas, visa pramonė
  • Prisijungimo šokis: programa → tapatybės teikėjas → atgal per jūsų naršyklę
  • Patvirtinimas: parašas gyvena tame, ką pasirašo
  • Kanonizacija: sutarkite dėl kiekvieno baito, arba niekas neprisijungs

Išverstas transkriptas

Išversta iš originalo anglų kalbos. Galimas garso ir subtitrų valdymas per YouTube.

SAML: prisijungimas, kuris pasirašo pats save iš vidaus

0:00 SAML yra XML, kuris prisijungia prie beveik kiekvienos jūsų turimos darbo programos, ir jo parašas gyvena dokumento, kurį pasirašo, viduje, kaip notaras, įspaudžiantis savo antspaudą į voką, kurį užantspauduoja. Praėjus dešimčiai metų po to, kai komitetas jį parašė, tyrėjai išbandė keturiolika SAML sistemų. Vienuolika žlugo. Ir šią savaitę „Trail of Bits“ įrašas, pavadindamas jį blogo dizaino fraktalu, pateko į pirmajį „Hacker News“ puslapį. Per tris minutes: kaip veikia prisijungimo šokis, kur slepiasi parašas,

0:27 ir kodėl taisymas, dėl kurio visi sutaria, yra kitas protokolas. Tai The Daily Diff, iš vidaus.

2002: keturi XML formatai, vienas komitetas, visa pramonė

0:34 Du tūkstančiai antrasis. „Oasis“ saugumo komitetas sujungia keturis tiekėjų XML formatus į vieną. Universitetai jį pritaiko pirmieji, tada „Okta“ stato ant jo įmonę, greičiausiai komiteto dokumentas kada nors virto pajamomis. Atidarote programą.

Prisijungimo šokis: programa → tapatybės teikėjas → atgal per jūsų naršyklę

0:46 Ji neturi supratimo, kas esate, todėl nukreipia jūsų naršyklę į tapatybės teikėją, sakykime, jūsų įmonės „Okta“. Jūs ten prisijungiate. „Okta“ perduoda jūsų naršyklei pasirašytą XML dokumentą, kuriame nurodyta, kas esate, ir naršyklė jį siunčia atgal.

Patvirtinimas: parašas gyvena tame, ką pasirašo

0:59 Tas dokumentas yra patvirtinimas. Jame nurodytas vartotojas, o parašas yra jo viduje, nurodantis atgal į patvirtinimą pagal jo ID. Ir viskas vyksta per jūsų naršyklę, tai yra, per vartotoją. Norėdama patikrinti, programa

Kanonizacija: sutarkite dėl kiekvieno baito, arba niekas neprisijungs

1:11 atkuria tikslius pasirašytus baitus. Ji iškerpa parašą, normalizuoja tarpus ir atributų tvarką ir maišo rezultatą. Tai kanonizacija, ir jei abi pusės nesutaria dėl nė vieno baito, niekas neprisijungs. JSON žiniatinklio žetonas tai daro kitaip. Antraštė, turinys ir parašas yra šalia su taškais tarp jų. Nieko nereikia iškirpti pirmiausia.

2012: tikrintojas ir skaitytojas žiūri į skirtingus elementus

1:32 Štai ir problema. Kodas, kuris tikrina parašą, ir kodas, kuris skaito vartotojo vardą, dažnai yra dvi skirtingos dalys. Dviejų tūkstančių dvyliktaisiais metais dokumentas pavadinimu „On Breaking SAML“ parodė, kad galite perkelti pasirašytą patvirtinimą ten, kur skaitytojas jo ignoruoja, ir įdėti antrą ten, kur jis ieško. „Salesforce“ ir „Shibboleth“ buvo tarp vienuolikos, kurie tam pasidavė. Dviejų tūkstančių aštuonioliktaisiais metais „Duo“ parodė, kad komentaras vartotojo varde galėjo priversti kai kurias

2018 ir 2025: du analizatoriai, du skirtingi atsakymai

1:55 bibliotekas skaityti tik pusę vardo, o parašas vis dar buvo patikrintas. Dviejų tūkstančių dvidešimt penktaisiais metais „GitHub“ rado du XML analizatorius „ruby SAML“ viduje, nesutariančius dėl to paties dokumento. Ta pati klaida, naujas dešimtmetis. „Trail of Bits“ tai vadina fraktalu, nes kiekvienas lygmuo, į kurį įsižiūrite, turi tą patį

Kodėl tai nuolat genda: blogo dizaino fraktalas

2:12 trūkumą. Jis sukurtas ant XML, parašas yra apgaubtas, ir tikri prisijungimai naudoja galbūt dešimtadalį specifikacijos. O populiariausias atsakymas „Hacker News“ ateina iš pirkėjo. Jei neturite SAML palaikymo, galiu rasti produktą, kuris jį turi. Abu yra tiesa, o tai ir yra problema. Taigi, pirmadienis. Pirmiausia pristatykite „OpenID Connect“, „Fly“ ir „Tailscale“ parduoda

Pirmadienis: OIDC pirmas, prižiūrima biblioteka, griežtos formos

2:31 įmonėms be SAML. Jei klientas priverčia, naudokite prižiūrimą biblioteką, nuolat ją atnaujinkite, ir atmeskite pranešimus, kurie neatrodo taip, kaip siunčia „Okta“ ar „Google“. Niekada nerašykite savo parašo tikrinimo.

Verdiktas, iš vidaus: REVERT

2:43 Verdiktas, iš vidaus. REVERT. Beveik dvidešimt penkeri metai, viena klaidų klasė, kuri niekada nemiršta, ir taisymas, dėl kurio visi sutaria, yra kitas protokolas. Praėjusį šeštadienį išardžiau prieigos raktus, todėl pasakykite man, ką toliau atidaryti komentaruose. Ir tai šiandienos skirtumas. Aš esu Niko iš Axrisi. Suliekite atsakingai.

Šaltiniai

  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

Susiję vaizdo įrašai