SAML, מבפנים: החתימה בתוך המכתב
SAML מכניס אותך כמעט לכל אפליקציית עבודה, והחתימה שלו נמצאת בתוך ה-XML שהוא חותם.
SAML מכניס אותך כמעט לכל אפליקציית עבודה, והחתימה שלו נמצאת בתוך ה-XML שהוא חותם. מבפנים: ריקוד הכניסה בין האפליקציה, הדפדפן וספק הזהויות, איך נראה אישור, מדוע קנוניזציה חייבת להסכים על כל בית, ומדוע אותו סוג באג ממשיך לחזור מ-2012 עד 2025. בעקבות "SAML: A fractal of bad design" של Trail of Bits (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 הנה הבעיה. הקוד שבודק את החתימה והקוד שקורא את שם המשתמש הם לעתים קרובות שני חלקים שונים. בשנת 2012, מאמר בשם On Breaking SAML הראה שניתן להזיז את ה- אישור החתום למקום שהקורא מתעלם ממנו, ולשים אישור שני במקום שהוא מחפש. Salesforce ו-Shibboleth היו בין האחד עשר שנפלו בפח. בשנת 2018, Duo הראו שתגובה בתוך שם משתמש יכולה לגרום לחלק מ-
2018 ו-2025: שני מפענחים, שתי תשובות שונות
1:55 ספריות לקרוא רק חצי מהשם, בעוד שהחתימה עדיין אושרה. בשנת 2025, GitHub מצאו שני מפענחי XML בתוך SAML של Ruby שאינם מסכימים לגבי אותו מסמך. אותו באג, עשור חדש. Trail of Bits קוראים לזה פרקטל, מכיוון שבכל רמה שאליה מתקרבים יש את
מדוע זה ממשיך להישבר: פרקטל של עיצוב גרוע
2:12 אותו פגם. הוא בנוי על XML, החתימה ארוזה, וכניסות אמיתיות משתמשות אולי בעשירית מהמפרט. והתגובה המובילה ב-Hacker News מגיעה מהקונה. אם אין לכם תמיכה ב-SAML, אני יכול למצוא מוצר שיש לו. שניהם נכונים, וזו הבעיה. אז, יום שני. SHIP IT OpenID Connect קודם, Fly ו-Tailscale מוכרים ל-
יום שני: OIDC קודם, ספרייה מתוחזקת, צורות קפדניות
2:31 ארגונים ללא SAML כלל. אם לקוח מכריח זאת, השתמשו בספרייה מתוחזקת, שמרו עליה מתוקנת, ודחו הודעות שאינן נראות כמו מה ש-Okta או גוגל שולחים. לעולם אל תכתבו בדיקת חתימה משלכם.
פסק דין, מבפנים: REVERT
2:43 פסק דין, מבפנים. REVERT. כמעט עשרים וחמש שנים, סוג באג אחד שלעולם לא מת, והתיקון שכולם מסכימים עליו הוא פרוטוקול אחר. בשבת האחרונה פירקתי את מפתחות הסיסמה, אז תגידו לי מה לפתוח הלאה ב- תגובות. וזה ה-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



