+− THE DAILY DIFFdev & AI news
REVERT

SAML, konepellin alla: allekirjoitus kirjeen sisällä

SAML kirjautuu sinut lähes jokaiseen työsovellukseen, ja sen allekirjoitus on sen allekirjoittaman XML:n sisällä.

SAML kirjautuu sinut lähes jokaiseen työsovellukseen, ja sen allekirjoitus on sen allekirjoittaman XML:n sisällä. Konepellin alla: kirjautumistanssi sovelluksen, selaimen ja identiteettipalvelun välillä, miltä väittämä näyttää, miksi kanonisoinnin on sovittava jokaisesta tavusta, ja miksi sama virheluokka palaa jatkuvasti vuosina 2012–2025. Innoittajana Trail of Bitsin "SAML: A fractal of bad design" (312 pistettä Hacker Newsissa).

Lue kirjoitettu versio (englanniksi) ↗

Mitä tämä video käsittelee

  • SAML: sisäpuolelta itsensä allekirjoittava kirjautuminen
  • 2002: neljä XML-muotoa, yksi komitea, koko toimiala
  • Kirjautumistanssi: sovellus → identiteettipalvelu → takaisin selaimesi kautta
  • Väittämä: allekirjoitus on sen sisällä, mitä se allekirjoittaa
  • Kanonisointi: sopikaa jokaisesta tavusta, tai kukaan ei kirjaudu sisään

Käännetty transkriptio

Käännetty alkuperäisestä englanninkielisestä selostuksesta. Käytettävissä olevan äänen ja tekstitysten hallinta tapahtuu YouTuben kautta.

SAML: sisäpuolelta itsensä allekirjoittava kirjautuminen

0:00 SAML on XML, joka kirjautuu sinut lähes jokaiseen omistamaasi työsovellukseen, ja sen allekirjoitus on sen allekirjoittaman asiakirjan sisällä, kuten notaari nitoo leimansa sulkemansa kirjekuoren sisään. Kymmenen vuotta komitean sen kirjoitettuaan tutkijat testasivat neljätoista SAML- kehystä. Yksitoista kaatui. Ja tällä viikolla Trail of Bitsin postaus, jossa sitä kutsutaan huonon suunnittelun fraktaaliksi, nousi Hacker Newsin etusivulle. Kolmessa minuutissa: miten kirjautumistanssi toimii, missä allekirjoitus piilee,

0:27 ja miksi kaikkien hyväksymä korjaus on eri protokolla. Tämä on The Daily Diff, konepellin alla.

2002: neljä XML-muotoa, yksi komitea, koko toimiala

0:34 Kaksituhatta kaksi. Oasisin turvallisuuskomitea yhdistää neljä myyjän XML-muotoa yhdeksi. Yliopistot ottavat sen käyttöön ensin, sitten Okta rakentaa sille yrityksen, nopeimmin komitean asiakirjasta koskaan tullut tulonlähde. Avaat sovelluksen.

Kirjautumistanssi: sovellus → identiteettipalvelu → takaisin selaimesi kautta

0:46 Se ei tiedä kuka olet, joten se ohjaa selaimesi identiteettipalveluun, sanokaamme yrityksesi Oktaan. Kirjaudut sinne. Okta antaa selaimellesi allekirjoitetun XML-asiakirjan, joka kertoo kuka olet, ja selain lähettää sen takaisin.

Väittämä: allekirjoitus on sen sisällä, mitä se allekirjoittaa

0:59 Tuo asiakirja on väittämä. Se nimeää käyttäjän, ja allekirjoitus sijaitsee sen sisällä, osoittaen takaisin väittämään sen tunnuksen perusteella. Ja koko homma kulkee selaimesi kautta, eli käyttäjän kautta. Tarkistaakseen sen, sovellus

Kanonisointi: sopikaa jokaisesta tavusta, tai kukaan ei kirjaudu sisään

1:11 rakentaa uudelleen täsmälleen allekirjoitetut tavut. Se leikkaa allekirjoituksen takaisin ulos, normalisoi välilyönnit ja attribuuttien järjestyksen ja tiivistää tuloksen. Tämä on kanonisointia, ja jos molemmat osapuolet ovat eri mieltä yhdestäkään tavusta, kukaan ei kirjaudu sisään. JSON-verkkotunnus tekee sen eri tavalla. Otsake, hyötykuorma ja allekirjoitus sijaitsevat vierekkäin pisteiden kera. Ei mitään leikattavaa ensin.

2012: tarkistaja ja lukija katsovat eri elementtejä

1:32 Tässä on vika. Koodi, joka tarkistaa allekirjoituksen, ja koodi, joka lukee käyttäjätunnuksen, ovat usein kaksi eri osaa. Vuonna kaksitoista, paperi nimeltä On Breaking SAML osoitti, että allekirjoitetun väittämän voi siirtää sinne, missä lukija jättää sen huomiotta, ja laittaa toisen sinne, minne se katsoo. Salesforce ja Shibboleth olivat niiden yhdentoista joukossa, jotka lankesivat siihen. Vuonna kaksikymmentäkahdeksantoista, Duo osoitti, että käyttäjätunnuksen sisällä oleva kommentti voi saada jotkut

2018 ja 2025: kaksi jäsentäjää, kaksi eri vastausta

1:55 kirjastot lukemaan vain puolet nimestä, kun taas allekirjoitus edelleen täsmäsi. Vuonna kaksikymmentäkahdenkymmentäviisi, GitHub löysi kaksi XML-jäsentäjää Ruby SAMLin sisältä, jotka olivat eri mieltä samasta asiakirjasta. Sama vika, uusi vuosikymmen. Trail of Bits kutsuu sitä fraktaaliksi, koska jokaisella tasolla, jolle zoomaat, on

Miksi se jatkuvasti hajoaa: huonon suunnittelun fraktaali

2:12 sama virhe. Se on rakennettu XML:n päälle, allekirjoitus on kapseloitu, ja todelliset kirjautumiset käyttävät ehkä kymmenesosan spesifikaatiosta. Ja Hacker Newsin suosituin vastaus tulee ostajalta. Jos sinulla ei ole SAML-tukea, voin löytää tuotteen, jossa on. Molemmmat ovat totta, mikä on ongelma. Joten, maanantai. SHIP IT OpenID Connect ensin, Fly ja Tailscale myyvät

Maanantai: OIDC ensin, ylläpidetty kirjasto, tiukat muodot

2:31 yrityksille ilman SAMLia lainkaan. Jos asiakas pakottaa sen, käytä ylläpidettyä kirjastoa, pidä se päivitettynä, ja hylkää viestit, jotka eivät näytä Oktalta tai Googlelta lähetetyiltä. Älä koskaan kirjoita omaa allekirjoituksen tarkistusta.

Tuomio, konepellin alla: REVERT

2:43 Tuomio, konepellin alla. REVERT. Lähes kaksikymmentäviisi vuotta, yksi virheluokka, joka ei koskaan kuole, ja kaikkien hyväksymä korjaus on eri protokolla. Viime lauantaina purin passiavaimet, joten kerro minulle mitä avata seuraavaksi kommenteissa. Ja se on tämän päivän diff. Olen Niko Axrisista. Yhdistä vastuullisesti.

Lähteet

  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

Aiheeseen liittyvät videot