SAML, дотоод хэсэгт: захидал доторх гарын үсэг
SAML нь таныг бараг бүх ажлын аппликейшнд нэвтрүүлдэг бөгөөд түүний гарын үсэг нь гарын үсэг зурсан XML дотор байрладаг.
SAML нь таныг бараг бүх ажлын аппликейшнд нэвтрүүлдэг бөгөөд түүний гарын үсэг нь гарын үсэг зурсан XML дотор байрладаг. Дотоод хэсэгт: апп, хөтөч болон танилт олгогч хоорондын нэвтрэх үйлдэл, нотолгоо юуг илэрхийлдэг, яагаад canonicalization нь бит болгон дээр тохиролцох ёстой, мөн яагаад ижил алдааны ангилал 2012 оноос 2025 он хүртэл дахин давтагдан гарч ирдэг талаар. Trail of Bits-ийн "SAML: Муу дизайны фрактал" (Hacker News дээр 312 оноотой) нийтлэлээс сэдэвлэв.
Бичмэл хувилбарыг унших (Англи) ↗
Энэ видео юуг хамардаг
- SAML: дотроосоо гарын үсэг зурдаг нэвтрэх систем
- 2002: дөрвөн XML формат, нэг хороо, бүхэл бүтэн салбар
- Нэвтрэх үйлдэл: апп → танилт олгогч → таны хөтөчөөр буцах
- Нотолгоо: гарын үсэг нь гарын үсэг зурсан зүйлийнхээ дотор байрладаг
- Canonicalization: бит болгон дээр тохиролцох эсвэл хэн ч нэвтрэхгүй
Орчуулсан бичлэг
Англи хэл дээрх эх хувилбараас орчуулсан. Боломжтой дуу болон хадмал орчуулгыг YouTube хянадаг.
SAML: дотроосоо гарын үсэг зурдаг нэвтрэх систем
0:00 SAML бол таны эзэмшдэг бараг бүх ажлын аппликейшнд нэвтрүүлдэг XML юм, мөн түүний гарын үсэг нь гарын үсэг зурсан баримт бичгийн дотор байрладаг, яг л нотариус лацдаж буй дугтуйныхаа дотор тамгаа дарснаас ялгаагүй. Хороо үүнийг бичсэнээс хойш арван жилийн дараа судлаачид арван дөрвөн SAML фреймворкийг туршиж үзсэн. Арван нэг нь унасан. Мөн энэ долоо хоногт Trail of Bits-ийн муу дизайны фрактал хэмээх нийтлэл Hacker News-ийн нүүр хуудсанд гарчээ. Гурван минутын дотор: нэвтрэх үйлдэл хэрхэн ажилладаг, гарын үсэг хаана нуугддаг,
0:27 мөн яагаад бүгдийн зөвшөөрсөн шийдэл нь өөр протокол болохыг. Энэ бол The Daily Diff, дотоод хэсэгт.
2002: дөрвөн XML формат, нэг хороо, бүхэл бүтэн салбар
0:34 Хоёр мянга хоёр он. Oasis-ын аюулгүй байдлын хороо дөрвөн үйлдвэрлэгчийн XML форматыг нэгтгэв. Их сургуулиуд үүнийг эхлээд хэрэглэж, дараа нь Okta үүн дээр компани байгуулсан, хорооны баримт бичиг орлого болж хувирсан хамгийн хурдан тохиолдол. Та аппыг нээнэ.
Нэвтрэх үйлдэл: апп → танилт олгогч → таны хөтөчөөр буцах
0:46 Энэ нь таныг хэн болохыг мэдэхгүй тул таны хөтчийг танилт олгогч руу шилжүүлдэг, жишээлбэл, танай компанийн Okta руу. Та тэнд нэвтэрнэ. Okta таны хөтөчид таны хэн болохыг заасан гарын үсэгтэй XML баримт бичиг өгнө, мөн хөтөч үүнийг буцааж илгээнэ.
Нотолгоо: гарын үсэг нь гарын үсэг зурсан зүйлийнхээ дотор байрладаг
0:59 Энэ баримт бичиг бол нотолгоо юм. Энэ нь хэрэглэгчийн нэрийг агуулдаг бөгөөд гарын үсэг нь дотор нь байрладаг, өөрийн ID-гаар нотолгоо руу буцаж заадаг. Мөн бүх зүйл таны хөтөчөөр, өөрөөр хэлбэл, хэрэглэгчээр дамждаг. Үүнийг шалгахын тулд апп
Canonicalization: бит болгон дээр тохиролцох эсвэл хэн ч нэвтрэхгүй
1:11 гарын үсэг зурсан яг ижил байтуудыг дахин бүтээдэг. Энэ нь гарын үсгийг таслан авч, хоосон зай болон атрибутын дарааллыг хэвийн болгож, үр дүнг хэшлэдэг. Энэ бол canonicalization бөгөөд хэрэв хоёр тал ганц ч байтаар санал зөрвөл, хэн ч нэвтрэхгүй. JSON вэб токен өөрөөр хийдэг. Толгой, ачаалал болон гарын үсэг нь дундаа цэгтэйгээр зэрэгцээ байрладаг. Эхлээд таслах зүйл байхгүй.
2012: шалгагч ба уншигч өөр өөр элементүүдийг хардаг
1:32 Энд алдаа байна. Гарын үсгийг шалгадаг код болон хэрэглэгчийн нэрийг уншдаг код нь ихэвчлэн хоёр өөр хэсэг байдаг. Хоёр мянга арван хоёонд "On Breaking SAML" нэртэй нийтлэл нь таныг гарын үсэг зурсан нотолгоог уншигч үл тоомсорлох газар шилжүүлж, харин хардаг газар нь хоёр дахь нотолгоог байрлуулж болно гэдгийг харуулсан. Salesforce болон Shibboleth нь үүнд алдсан арван нэгний тоонд багтсан. Хоёр мянга арван найман онд Duo нь хэрэглэгчийн нэр доторх тайлбар нь зарим
2018 ба 2025: хоёр парсер, хоёр өөр хариулт
1:55 сангуудад нэрний зөвхөн талыг уншуулж, гарын үсэг нь хэвээрээ баталгаажсан хэвээр байж болно гэдгийг харуулсан. Хоёр мянга хорин таван онд GitHub нь ruby SAML доторх хоёр XML парсер ижил баримт бичгийн талаар санал зөрчилдөж байгааг олж тогтоосон. Ижил алдаа, шинэ арван жил. Trail of Bits үүнийг фрактал гэж нэрлэдэг, учир нь таны томруулж үзсэн түвшин бүрт
Яагаад байнга эвдэрдэг вэ: муу дизайны фрактал
2:12 ижил дутагдал байдаг. Энэ нь XML дээр суурилсан, гарын үсэг нь бүрхэгдсэн, мөн жинхэнэ нэвтрэх системүүд спецификацийн аравны нэгийг л ашигладаг. Мөн Hacker News дээрх хамгийн их хариулт худалдан авагчаас ирдэг. Хэрэв та SAML-ийн дэмжлэггүй бол, би дэмжлэгтэй бүтээгдэхүүн олж чадна. Хоёулаа үнэн, энэ нь асуудал юм. Тэгэхээр, Даваа гараг. Эхлээд OpenID Connect-ийг SHIP IT, Fly болон Tailscale компаниуд
Даваа гараг: эхлээд OIDC, хадгалагдсан сан, хатуу хэлбэрүүд
2:31 SAML-гүйгээр аж ахуйн нэгжүүдэд борлуулдаг. Хэрэв хэрэглэгч үүнийг шаардвал, хадгалагдсан санг ашиглаж, шинэчилж байх, мөн Okta эсвэл Google-ээс илгээсэн мессеж шиг харагдахгүй мессежүүдийг татгалзана. Хэзээ ч өөрийн гарын үсгийн шалгалтыг бүү бич.
Шийдвэр, дотоод хэсэгт: REVERT
2:43 Шийдвэр, дотоод хэсэгт. REVERT. Бараг хорин таван жил, хэзээ ч үхдэггүй нэг алдааны ангилал, мөн бүгдийн зөвшөөрсөн шийдэл нь өөр протокол юм. Өнгөрсөн бямба гарагт би passkeys-ийг задлан үзсэн тул дараа нь юу задлахыг надад коммент хэсэгт хэлээрэй. Тэгээд өнөөдрийн The Daily Diff энэ байна. Би Axrisi-ийн Нико байна. Хариуцлагатай нэгтгээрэй.
Эх сурвалжууд
- 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



