+− THE DAILY DIFFdev & AI news
REVERT

SAML, ispod haube: potpis unutar pisma

SAML vas prijavljuje u skoro svaku radnu aplikaciju, a njegov potpis živi unutar XML-a koji potpisuje.

SAML vas prijavljuje u skoro svaku radnu aplikaciju, a njegov potpis živi unutar XML-a koji potpisuje. Ispod haube: ples prijave između aplikacije, preglednika i provajdera identiteta, kako izgleda asercija, zašto se kanonizacija mora složiti oko svakog bajta, i zašto se ista klasa grešaka stalno vraća od 2012. do 2025. Podstaknuto objavom Trail of Bits' "SAML: Fraktal lošeg dizajna" (312 bodova na Hacker News-u).

Pročitajte pisano izdanje (engleski) ↗

Šta ovaj video pokriva

  • SAML: prijava koja se sama potpisuje iznutra
  • 2002: četiri XML formata, jedan komitet, cijela industrija
  • Ples prijave: aplikacija → provajder identiteta → nazad kroz vaš preglednik
  • Asercija: potpis živi unutar onoga što potpisuje
  • Kanonizacija: složite se oko svakog bajta, ili se niko ne prijavljuje

Prevedeni transkript

Prevedeno iz originalne engleske naracije. Dostupan zvuk i titlovi kontroliše YouTube.

SAML: prijava koja se sama potpisuje iznutra

0:00 SAML je XML koji vas prijavljuje u skoro svaku radnu aplikaciju koju posjedujete, a njegov potpis živi unutar dokumenta koji potpisuje, poput notara koji svoj pečat stavlja unutar koverte koju zatvara. Deset godina nakon što ga je komitet napisao, istraživači su testirali četrnaest SAML okvira. Jedanaest ih je palo. A ove sedmice, objava Trail of Bits koja ga naziva fraktalom lošeg dizajna dospjela je na naslovnu stranu Hacker News-a. Za tri minute: kako funkcioniše ples prijave, gdje se potpis krije,

0:27 i zašto je popravak oko kojeg se svi slažu drugačiji protokol. Ovo je The Daily Diff, ispod haube.

2002: četiri XML formata, jedan komitet, cijela industrija

0:34 Dvije hiljade dvije. Sigurnosni komitet u Oasis-u spaja četiri XML formata dobavljača u jedan. Univerziteti ga prvi usvajaju, zatim Okta gradi kompaniju na njemu, najbrže što se ikad dokument komiteta pretvorio u prihod. Otvarate aplikaciju.

Ples prijave: aplikacija → provajder identiteta → nazad kroz vaš preglednik

0:46 Nema pojma ko ste, pa vaš preglednik preusmjerava na provajdera identiteta, recimo Okta vaše kompanije. Tamo se prijavljujete. Okta vašem pregledniku daje potpisan XML dokument koji govori ko ste, i preglednik ga vraća.

Asercija: potpis živi unutar onoga što potpisuje

0:59 Taj dokument je asercija. On imenuje korisnika, a potpis se nalazi unutar njega, pokazujući na aserciju po njenom ID-u. I cijela stvar prolazi kroz vaš preglednik, što znači, kroz korisnika. Da bi ga provjerila, aplikacija

Kanonizacija: složite se oko svakog bajta, ili se niko ne prijavljuje

1:11 ponovo izgrađuje tačne bajtove koji su potpisani. Ona izrezuje potpis, normalizuje praznine i redoslijed atributa, i hešira rezultat. To je kanonizacija, i ako se dvije strane ne slažu ni oko jednog bajta, niko se ne prijavljuje. JSON web token to radi drugačije. Zaglavlje, sadržaj i potpis stoje jedan pored drugog sa tačkama između. Ništa se ne mora prvo izrezati.

2012: provjeravač i čitač gledaju različite elemente

1:32 Evo problema. Kod koji provjerava potpis i kod koji čita korisničko ime su često dva različita dijela. U dvije hiljade dvanaestoj, rad pod nazivom On Breaking SAML pokazao je da možete pomjeriti potpisanu aserciju gdje je čitač ignorira, i staviti drugu gdje je on gleda. Salesforce i Shibboleth su bili među jedanaest koji su pali na to. U dvije hiljade osamnaestoj, Duo je pokazao da komentar unutar korisničkog imena može učiniti da neke

2018 i 2025: dva parsera, dva različita odgovora

1:55 biblioteke pročitaju samo pola imena, dok je potpis i dalje provjeren. U dvije hiljade dvadeset petoj, GitHub je pronašao dva XML parsera unutar Ruby SAML-a koji se nisu slagali oko istog dokumenta. Ista greška, nova decenija. Trail of Bits to naziva fraktalom, jer svaki nivo u koji zumirate ima istu

Zašto se stalno kvari: fraktal lošeg dizajna

2:12 manu. Izgrađen je na XML-u, potpis je omotan, a stvarne prijave koriste možda desetinu specifikacije. A glavni odgovor na Hacker News-u dolazi od kupca. Ako nemate SAML podršku, mogu pronaći proizvod koji je ima. Oboje je istina, što je problem. Dakle, ponedjeljak. Prvo SHIP IT OpenID Connect, Fly i Tailscale prodaju

Ponedjeljak: prvo OIDC, održavana biblioteka, strogi oblici

2:31 preduzećima bez SAML-a uopšte. Ako kupac to forsira, koristite održavanu biblioteku, održavajte je ažuriranom, i odbijajte poruke koje ne izgledaju kao one koje šalju Okta ili Google. Nikada ne pišite vlastitu provjeru potpisa.

Presuda, ispod haube: REVERT

2:43 Presuda, ispod haube. REVERT. Skoro dvadeset pet godina, jedna klasa grešaka koja nikad ne umire, i popravak oko kojeg se svi slažu je drugačiji protokol. Prošle subote sam razložio "passkeys", pa mi recite šta da sljedeće otvorim u komentarima. I to je The Daily Diff za danas. Ja sam Niko iz Axrisija. Spojite odgovorno.

Izvori

  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

Povezani videozapisi