+− THE DAILY DIFFdev & AI news
REVERT

SAML-ը՝ ներքին կառուցվածքը. ստորագրությունը նամակի ներսում

SAML-ը մուտք է գործում ձեր գրեթե յուրաքանչյուր աշխատանքային հավելված, և դրա ստորագրությունն ապրում է այն XML-ի ներսում, որը ստորագրում է: Ներքին կառուցվածքը.

SAML-ը մուտք է գործում ձեր գրեթե յուրաքանչյուր աշխատանքային հավելված, և դրա ստորագրությունն ապրում է այն XML-ի ներսում, որը ստորագրում է: Ներքին կառուցվածքը. մուտքի պարը հավելվածի, բրաուզերի և ինքնության մատակարարի միջև, թե ինչ տեսք ունի հայտարարությունը, ինչու կանոնականացումը պետք է համաձայնի յուրաքանչյուր բայթի հետ, և ինչու է նույն սխալների դասը անընդհատ վերադառնում 2012-ից մինչև 2025 թվականը: Հուշվել է Trail of Bits-ի «SAML: Վատ դիզայնի ֆրակտալ» (312 միավոր Hacker News-ում) գրառմամբ։

Կարդացեք գրավոր տարբերակը (անգլերեն) ↗

Ինչ է ընդգրկում այս տեսանյութը

  • SAML: մուտքը, որը ստորագրում է ինքն իրեն ներսից
  • 2002: չորս XML ձևաչափ, մեկ կոմիտե, մի ամբողջ արդյունաբերություն
  • Մուտքի պարը. հավելված → ինքնության մատակարար → ետ ձեր բրաուզերի միջոցով
  • Հայտարարությունը. ստորագրությունն ապրում է այն բանի ներսում, ինչը ստորագրում է
  • Կանոնականացում. համաձայնեք յուրաքանչյուր բայթի շուրջ, հակառակ դեպքում ոչ ոք չի մուտք գործի

Թարգմանված արձանագրություն

Թարգմանվել է բնօրինակ անգլերեն պատմությունից։ Հասանելի աուդիո և ենթագրերը վերահսկվում են 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-ով։ Եվ ամբողջը անցնում է ձեր բրաուզերի միջով, այսինքն՝ օգտատիրոջ միջով։ Այն ստուգելու համար հավելվածը

Կանոնականացում. համաձայնեք յուրաքանչյուր բայթի շուրջ, հակառակ դեպքում ոչ ոք չի մուտք գործի

1:11 վերակառուցում է ստորագրված ճշգրիտ բայթերը։ Այն կտրում է ստորագրությունը, նորմալացնում է բացատները և ատրիբուտների կարգը, և հեշավորում է արդյունքը։ Դա կանոնականացումն է, և եթե երկու կողմերը մեկ բայթով անհամաձայն են, ոչ ոք չի մուտք գործում։ JSON վեբ թոքենը դա այլ կերպ է անում։ Վերնագիրը, բեռնվածքը և ստորագրությունը կողք կողքի են՝ միջև կետերով։ Նախ ոչինչ կտրելու կարիք չկա։

2012: ստուգողն ու ընթերցողը նայում են տարբեր տարրերի

1:32 Ահա ճեղքը։ Ստորագրությունը ստուգող կոդը և օգտատիրոջ անունը կարդացող կոդը հաճախ երկու տարբեր մասեր են։ Երկու հազար տասներկու թվականին «On Breaking SAML» անունով մի հոդված ցույց տվեց, որ դուք կարող եք տեղափոխել ստորագրված հայտարարությունը այնտեղ, որտեղ ընթերցողը անտեսում է այն, և երկրորդը դնել այնտեղ, որտեղ այն փնտրում է։ Salesforce-ը և Shibboleth-ը տասնմեկից էին, որոնք ընկան դրա զոհը։ Երկու հազար տասնութ թվականին Duo-ն ցույց տվեց, որ օգտատիրոջ անվան ներսում մեկնաբանությունը կարող է որոշ

2018 և 2025: երկու վերլուծիչ, երկու տարբեր պատասխան

1:55 գրադարաններին ստիպել կարդալ անվան միայն կեսը, մինչդեռ ստորագրությունը դեռ ստուգված էր։ Երկու հազար քսանհինգ թվականին GitHub-ը գտավ երկու XML վերլուծիչ ruby SAML-ի ներսում, որոնք անհամաձայն էին նույն փաստաթղթի շուրջ։ Նույն սխալը, նոր տասնամյակ։ Trail of Bits-ն այն անվանում է ֆրակտալ, քանի որ յուրաքանչյուր մակարդակ, որին մոտենում եք, ունի

Ինչու է այն շարունակում կոտրվել. վատ դիզայնի ֆրակտալ

2:12 նույն թերությունը։ Այն կառուցված է XML-ի վրա, ստորագրությունը պարփակված է, և իրական մուտքերը օգտագործում են ստանդարտի մոտ մեկ տասներորդը։ Եվ Hacker News-ի լավագույույն պատասխանը գալիս է գնորդից։ Եթե դուք չունեք SAML աջակցություն, ես կարող եմ գտնել մի ապրանք, որն ունի։ Երկուսն էլ ճիշտ են, ինչը և խնդիրն է։ Այսպիսով, երկուշաբթի։ Նախ SHIP OpenID Connect, Fly-ը և Tailscale-ը վաճառում են

Երկուշաբթի. նախ OIDC, պահպանվող գրադարան, խիստ ձևեր

2:31 ձեռնարկություններին առանց SAML-ի։ Եթե հաճախորդը պարտադրում է, օգտագործեք պահպանվող գրադարան, պահեք այն թարմացված, և մերժեք այն հաղորդագրությունները, որոնք նման չեն Okta-ի կամ Google-ի ուղարկածներին։ Երբեք մի գրեք ձեր սեփական ստորագրության ստուգումը։

Վճիռ, ներքին կառուցվածքը. REVERT

2:43 Վճիռ, ներքին կառուցվածքը։ REVERT։ Գրեթե քսանհինգ տարի, մեկ սխալների դաս, որը երբեք չի մահանում, և այն լուծումը, որի շուրջ բոլորը համաձայն են, տարբեր արձանագրություն է։ Անցյալ շաբաթ օրը ես վերլուծեցի գաղտնաբառերը, այնպես որ ասեք ինձ, թե ինչ բացեմ հաջորդը մեկնաբանություններում։ Եվ սա այսօրվա տարբերությունն է։ Ես Նիկոն եմ Axrisi-ից։ Միավորեք պատասխանատվությամբ։

Աղբյուրներ

  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

Հարակից տեսանյութեր