+− THE DAILY DIFFdev & AI news
REVERT

SAML, sa loob: ang pirma sa loob ng liham

Ang SAML ay nagla-log in sa iyo sa halos bawat app sa trabaho, at ang pirma nito ay nasa loob ng XML na pinirmahan nito.

Ang SAML ay nagla-log in sa iyo sa halos bawat app sa trabaho, at ang pirma nito ay nasa loob ng XML na pinirmahan nito. Sa ilalim ng hood: ang login dance sa pagitan ng app, browser at identity provider, kung ano ang hitsura ng isang assertion, bakit kailangang sumang-ayon ang canonicalization sa bawat byte, at kung bakit patuloy na bumabalik ang parehong klase ng bug mula 2012 hanggang 2025. Ipinunto ng "SAML: A fractal of bad design" (312 puntos sa Hacker News) ng Trail of Bits.

Basahin ang nakasulat na edisyon (English) ↗

Ang sakop ng video na ito

  • SAML: ang login na pumirma sa sarili nito mula sa loob
  • 2002: apat na format ng XML, isang komite, isang buong industriya
  • Ang login dance: app → identity provider → pabalik sa iyong browser
  • Ang assertion: ang pirma ay nasa loob ng pinirmahan nito
  • Canonicalization: sumang-ayon sa bawat byte, o walang magla-log in

Isinaling transcript

Isinalin mula sa orihinal na salaysay sa English. Ang available na audio at mga caption ay kinokontrol ng YouTube.

SAML: ang login na pumirma sa sarili nito mula sa loob

0:00 Ang Saml ay ang XML na nagla-log in sa iyo sa halos bawat app sa trabaho na pag-aari mo, at ang pirma nito ay nasa loob ng dokumentong pinirmahan nito, tulad ng isang notaryo na nagstaple ng kanyang selyo sa loob ng sobre na kanyang sineselyohan. Sampung taon pagkatapos isulat ito ng isang komite, sinubukan ng mga mananaliksik ang labing-apat na Saml frameworks. Labing-isa ang bumagsak. At ngayong linggo, isang post ng Trail of Bits na tinatawag itong isang fractal ng masamang disenyo ang tumama sa front page ng Hacker News. Sa tatlong minuto: paano gumagana ang login dance, kung saan nakatago ang pirma,

0:27 at kung bakit ang solusyon na pinagkasunduan ng lahat ay ibang protocol. Ito ang The Daily Diff, sa ilalim ng hood.

2002: apat na format ng XML, isang komite, isang buong industriya

0:34 Dalawang libo dalawa. Isang security committee sa Oasis ang nagsama ng apat na format ng XML ng vendor sa isa. Ang mga unibersidad ang unang nag-ampon nito, pagkatapos ay nagtayo ng kumpanya ang Okta dito, ang pinakamabilis na dokumento ng komite na naging kita. Binuksan mo ang app.

Ang login dance: app → identity provider → pabalik sa iyong browser

0:46 Wala itong ideya kung sino ka, kaya't ibinabalik nito ang iyong browser sa identity provider, halimbawa ang Okta ng iyong kumpanya. Nag-log in ka doon. Ibinigay ng Okta sa iyong browser ang isang nilagdaang dokumento ng XML na nagsasabi kung sino ka, at ibinabalik ito ng browser.

Ang assertion: ang pirma ay nasa loob ng pinirmahan nito

0:59 Ang dokumentong iyon ay ang assertion. Pinangalanan nito ang user, at ang pirma ay nakaupo sa loob nito, tinuturo pabalik ang assertion sa pamamagitan ng ID nito. At ang buong bagay ay dumadaan sa iyong browser, ibig sabihin, sa pamamagitan ng user. Para suriin ito, ang app

Canonicalization: sumang-ayon sa bawat byte, o walang magla-log in

1:11 muling bubuuin ang eksaktong bytes na pinirmahan. Hinihiwa nito ang pirma, nino-normalize ang whitespace at ang order ng attribute, at iha-hash ang resulta. Iyan ang canonicalization, at kung magkaiba ang dalawang panig sa isang byte, walang magla-log in. Magkaiba ang ginagawa ng JSON web token. Ang header, payload at signature ay magkatabi na may mga tuldok sa pagitan. Walang kailangang hiwain muna.

2012: magkaiba ang tinitingnan na elemento ng checker at reader

1:32 Narito ang problema. Ang code na sumusuri sa pirma at ang code na bumabasa ng username ay kadalasang dalawang magkaibang piraso. Noong dalawang libo labindalawa, ipinakita ng isang papel na tinatawag na On Breaking Saml na maaari mong ilipat ang nilagdaang assertion kung saan hindi ito pinapansin ng reader, at maglagay ng pangalawa kung saan ito tinitingnan. Ang Salesforce at Shibboleth ay kabilang sa labing-isa na bumagsak dito. Noong dalawang libo labing-walo, ipinakita ni Duo na ang isang komento sa loob ng username ay maaaring maging sanhi ng ilang

2018 at 2025: dalawang parser, dalawang magkaibang sagot

1:55 mga library na basahin lamang ang kalahati ng pangalan, habang ang pirma ay sumusunod pa rin. Noong dalawang libo dalawampu't lima, natagpuan ng GitHub ang dalawang XML parser sa loob ng ruby Saml na hindi sumasang-ayon sa parehong dokumento. Parehong bug, bagong dekada. Tinawag itong fractal ng Trail of Bits, dahil ang bawat antas na pinapalaki mo ay mayroong

Bakit patuloy na nasisira: isang fractal ng masamang disenyo

2:12 parehong kapintasan. Nakabatay ito sa XML, ang pirma ay enveloped, at ang tunay na logins ay gumagamit marahil ng ikasampu ng spec. At ang nangungunang reply sa Hacker News ay nagmula sa mamimili. Kung wala kang suporta sa Saml, makakahanap ako ng produkto na mayroon. Parehong totoo, na siyang problema. Kaya, Lunes. I-SHIP IT ang OpenID Connect muna, ang Fly at Tailscale ay nagbebenta sa

Lunes: OIDC muna, isang pinapanatiling library, mahigpit na hugis

2:31 mga negosyo nang walang Saml. Kung pilitin ng customer, gumamit ng isang pinananatiling library, panatilihin itong patched, at tanggihan ang mga mensahe na hindi mukhang sa Okta o Google. Huwag kailanman isulat ang sarili mong pag-check ng pirma.

Hatol, sa ilalim ng hood: REVERT

2:43 Hatol, sa ilalim ng hood. REVERT. Halos dalawampu't limang taon, isang klase ng bug na hindi namamatay, at ang solusyon na pinagkasunduan ng lahat ay ibang protocol. Noong nakaraang Sabado binuksan ko ang passkeys, kaya sabihin sa akin kung ano ang susunod na bubuksan sa mga komento. At iyon ang diff para sa araw na ito. Ako si Niko mula sa Axrisi. Pagsamahin nang responsable.

Mga Pinagmulan

  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

Mga kaugnay na video