# SAML، تحت الغطاء: التوقيع داخل الرسالة

Published: 2026-09-24

يقوم SAML بتسجيل دخولك إلى جميع تطبيقات العمل تقريبًا، ويقع توقيعه داخل XML الذي يوقعه. تحت الغطاء: رقصة تسجيل الدخول بين التطبيق والمتصفح ومزود الهوية، كيف تبدو التأكيد، لماذا يجب أن يتفق التوحيد القياسي على كل بايت، ولماذا تعود نفس فئة الأخطاء من عام 2012 إلى 2025. تم الاستناد إلى مقال "SAML: جزء كسوري من التصميم السيئ" من Trail of Bits (312 نقطة على Hacker News).

Canonical: https://thedailydiff.dev/ar/video/2026-09-24-saml-under-the-hood/

## ما يغطيه هذا الفيديو

- SAML: تسجيل الدخول الذي يوقع على نفسه من الداخل
- 2002: أربع صيغ XML، لجنة واحدة، صناعة كاملة
- رقصة تسجيل الدخول: التطبيق ← مزود الهوية ← العودة عبر متصفحك
- التأكيد: التوقيع يعيش داخل ما يوقعه
- التوحيد القياسي: اتفق على كل بايت، وإلا فلن يسجل أحد الدخول

## الفصول

- 0:00 SAML: تسجيل الدخول الذي يوقع على نفسه من الداخل
- 0:34 2002: أربع صيغ XML، لجنة واحدة، صناعة كاملة
- 0:46 رقصة تسجيل الدخول: التطبيق ← مزود الهوية ← العودة عبر متصفحك
- 0:59 التأكيد: التوقيع يعيش داخل ما يوقعه
- 1:10 التوحيد القياسي: اتفق على كل بايت، وإلا فلن يسجل أحد الدخول
- 1:32 2012: المدقق والقارئ ينظران إلى عناصر مختلفة
- 1:51 2018 و 2025: محللان، إجابتان مختلفتان
- 2:08 لماذا يستمر في التعطل: جزء كسوري من التصميم السيئ
- 2:27 الاثنين: OIDC أولاً، مكتبة مُصانة، أشكال صارمة
- 2:43 الحكم، تحت الغطاء: REVERT

## النص المترجم

مترجم من السرد الإنجليزي الأصلي. يتم التحكم في الصوت والتعليقات التوضيحية المتاحة بواسطة 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 هذا المستند هو التأكيد. يسمي المستخدم، ويجلس التوقيع بداخله، مشيرًا إلى التأكيد بمعرفه. والأمر كله يمر عبر متصفحك، وهذا يعني، عبر المستخدم. للتحقق من ذلك، يقوم التطبيق

### التوحيد القياسي: اتفق على كل بايت، وإلا فلن يسجل أحد الدخول

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، يمكنني العثور على منتج يدعمه. كلاهما صحيح، وهذا هو المشكلة. إذن، الاثنين. قم بشحن OpenID Connect أولاً، تبيع Fly و Tailscale لـ

### الاثنين: OIDC أولاً، مكتبة مُصانة، أشكال صارمة

2:31 الشركات بدون SAML على الإطلاق. إذا أجبر العميل عليه، استخدم مكتبة مُصانة، وابقها محدثة، وارفض الرسائل التي لا تبدو كرسائل Okta أو Google. لا تكتب أبدًا فحص التوقيع الخاص بك.

### الحكم، تحت الغطاء: REVERT

2:43 الحكم، تحت الغطاء. REVERT. ما يقرب من خمسة وعشرين عامًا، فئة أخطاء واحدة لا تموت أبدًا، والإصلاح الذي يتفق عليه الجميع هو بروتوكول مختلف. السبت الماضي قمت بتفكيك Passkeys، لذا أخبرني ماذا أفتح بعد ذلك في التعليقات. وهذا هو الفرق لهذا اليوم. أنا نيكو من Axrisi. الدمج بمسؤولية.

## المصادر

- [Trail of Bits, "SAML: A fractal of bad design" (Matt Schwager, Sep 21, 2026)](https://blog.trailofbits.com/2026/09/21/saml-a-fractal-of-bad-design/) — blog.trailofbits.com
- [Hacker News thread](https://news.ycombinator.com/item?id=49806335) — news.ycombinator.com
- [Somorovsky et al., "On Breaking SAML: Be Whoever You Want to Be", USENIX Security 2012](https://www.usenix.org/conference/usenixsecurity12/technical-sessions/presentation/somorovsky) — www.usenix.org
- [Duo Labs, SAML vulnerabilities affecting multiple implementations (2018): https://duo.com/blog/duo-finds-saml-vulnerabilities-affecting-multiple-implementations · CERT VU#475445](https://www.kb.cert.org/vuls/id/475445) — www.kb.cert.org
- [GitHub Security Lab, "Sign in as anyone: Bypassing SAML SSO authentication with parser differentials" (Mar 12, 2025)](https://github.blog/security/sign-in-as-anyone-bypassing-saml-sso-authentication-with-parser-differentials/) — github.blog
