رسم توضيحي تقني بأسلوب مسطح على خلفية رمادية دافئة شاحبة: تقف لوحة إعدادات طويلة بيضاء مائلة للعاج ذات صفوف مسطّرة باهتة إلى يسار الوسط، ويحتوي أدنى حقل فيها على علامتي قوس زاويّ سماويتين صغيرتين متداخلتين، إحداهما داخل الأخرى. يمتد خط سماوي رفيع من اللوحة إلى كتلة خادم مسطّحة بلون الإردواز على اليمين؛ ويخرج خط كهرماني ثانٍ من العلامتين المتداخلتين، ويمر فوق حدود اللوحة ويصل إلى الكتلة نفسها، ويحدد مربع كهرماني صغير نقطة الالتقاء حيث يتفرّع المساران. وتقع كتلة خادم ثانية أخفت خلف الأولى. العمل الفني هندسة متجهية مسطحة بظلال ناعمة وهوامش واسعة؛ ولا يظهر فيه أي نص أو حروف أو أرقام أو أشخاص أو شعارات مؤسسات. وشعار OrcaRouter مركّب في الزاوية السفلية اليمنى من شريط أبيض أسفل العمل الفني.
AI Safety Incidents

ثغرة تنفيذ التعليمات البرمجية عن بُعد (RCE) في وكيل الذكاء الاصطناعي في Zammad: وسم قالب متداخل، وإصلاح بحرف واحد

الكاتب

Alistair Wren

تاريخ النشر

أحدث النماذج · 20عرض جميع النماذج →
المعايير: Artificial Analysis · يُحدَّث يوميًا
العودة إلى جميع المقالات

أصدرت Zammad، منصة الدعم الفني مفتوحة المصدر، الإصدار 7.1.2 في 4 أغسطس 2026 مع ثمانية عشر إصلاحًا أمنيًا؛ أول إصلاح مُدرج منها يسدّ ثغرة تنفيذ تعليمات برمجية عن بُعد في حقول الإعدادات الخاصة بميزة AI Agent لديها. الثغرة هي CVE-2026-84462، التي كُشف عنها في تنبيه GitHub GHSA-gp3x-9xm8-rcj6 في اليوم نفسه، ونطاق التأثر بها هو كل تثبيت ذاتي الاستضافة على إصدار حتى 7.1.1 شاملًا. كان بإمكان مسؤول قادر على إنشاء أو تعديل AI Agent أن يُدخل نصًا مصممًا خصيصًا في أحد حقول الوكيل، ويتجاوز الفلتر المخصص لتحييده، وينفّذ أوامر اعتباطية على الخادم المستضيف لـ Zammad — مع احتمال، وفقًا لصياغة التنبيه، "قراءة أو تعديل أو إتلاف كل البيانات المخزنة على ذلك الخادم." لا يلزم أي مستخدم آخر أن يتصرف: يذكر التنبيه أن "التعليمات البرمجية الخبيثة تُنفَّذ تلقائيًا في المرة التالية التي يعالج فيها AI Agent المتأثر تذكرة." يصنّف GitHub شدتها بأنها مرتفعة عند 8.6 على CVSS 4.0. يُحتفظ بالسجل ووسوم الخطورة والضرر الخاصة به والمدخلات المسجلة حوله في the Orca AI Incident Archive، الذي يدرج هذه الحادثة ضمن بقية السلسلة.

ما الذي يقرره التحذير

نُشر التنبيه الأمني من GitHub في 4 أغسطس 2026، وهو قصير ومحدد بشكل غير معتاد بشأن الآلية والشروط المسبقة. يصف "مرشحًا أمنيًا يحمي إعداد وكيل الذكاء الاصطناعي في Zammad" و"يمكن تجاوزه بإدخال نص مصمم خصيصًا في أحد حقول وكيل الذكاء الاصطناعي"، ويحدد الفاعل بدقة: "يمكن لمسؤول لديه صلاحية إنشاء وكلاء الذكاء الاصطناعي أو تعديلها أن يستغل ذلك لتشغيل أوامر اعتباطية على الخادم الذي يستضيف Zammad." النطاق المتأثر مسجل حتى الإصدار 7.1.1 شاملًا، والنسخة المصححة هي 7.1.2. المُبلّغ المذكور هو colinthebomb1؛ وحساب النشر هو fliebe92. لا ينشر التنبيه أي إثبات مفهوم ولا أي تفاصيل عن الاستغلال.

يصنّف GitHub الثغرة على أنها عالية الخطورة، بدرجة 8.6 وفق CVSS 4.0، وفق المتجه AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H ودون تغيير في النطاق. ويعني ذلك، عند تفسيره، أن الثغرة قابلة للوصول عبر الشبكة بتعقيد منخفض، دون متطلبات هجوم ودون تفاعل من المستخدم، من قِبل مهاجم يمتلك بالفعل امتيازات عالية داخل التطبيق، مع تأثير عالٍ على سرية وسلامة وتوافر نسخة Zammad نفسها. وتسرد النشرة ثلاث نقاط ضعف: CWE-20، التحقق غير السليم من المدخلات؛ وCWE-94، حقن الشيفرة؛ وCWE-1336، فئة محرك القوالب التي يعرّفها MITRE بأنها الإخفاق في تحييد الصياغة الخاصة «التي يمكن تفسيرها على أنها تعبيرات قوالب أو توجيهات شيفرة أخرى عند معالجتها بواسطة المحرك».

غيّر الإصلاح حرفًا واحدًا

الإصلاح العام هو الإيداع e3b0c8df91ad2108c8305be23e8fe6f73fb9718d، أُرسل برسالة «الصيانة: تحسين ERB sanitizer». يسجّل GitHub تاريخ مؤلف هو 7 يوليو 2026 وتاريخ إيداع هو 3 أغسطس 2026، قبل يوم واحد من التنبيه الأمني والإصدار. يمسّ ملفين: سطر واحد من lib/erb_sanitizer.rb، وأربعة عشر سطرًا مضافة إلى المواصفات.

السطر الواحد هو الإصلاح بأكمله. كانت الدالة escape_tag تستخدم sub الخاصة بـ Ruby، التي تستبدل أول تطابق لنمط في سلسلة نصية؛ وهي الآن تستخدم gsub، التي تستبدل كل تطابق. وفي كلا النسختين يكون الاستبدال نفسه: المُفتتح المكتوب بصيغة <% يصبح <%%, وهي الصيغة المزدوجة التي يعرضها ERB، محرك القوالب في Ruby، كنص حرفي بدلاً من تقييمها. لا يحدد التنبيه الأمني أيّ حقل من حقول AI Agent يحمل القالب؛ ويحدّد الـ commit المرشّح الذي كان من المفترض أن يجعل ذلك القالب خاملاً.

A dark HTML card titled 'One line, one letter', kicker 'Zammad fix commit e3b0c8f', subtitle 'lib/erb_sanitizer.rb, method escape_tag, authored 7 July 2026 and committed 3 August 2026 - one day before disclosure'. Two code panels: BEFORE, in amber, shows a red minus beside tag.sub with the opener arguments and the note 'Replaces the first opener only'; AFTER, in cyan, shows a green plus beside tag.gsub and the note 'Replaces every opener'. A second panel headed 'WHY ONE LETTER MATTERED' shows the payload, a literal opener followed by an evaluating tag, arrowed to the same string with the first opener doubled, and explains that the inner tag is never touched. A third row headed 'REGRESSION SPEC, SAME COMMIT' shows the two nested payloads the added tests cover, with the note 'Both must render as literal text, not evaluate'. A footer names commit e3b0c8df91ad2108c8305be23e8fe6f73fb9718d and says the card was rendered by OrcaRouter with no vendor logos. The OrcaRouter logo is composited in the bottom-right corner.

مع sub، تم تعطيل أول فاتح فقط في السلسلة. حمولة تضع فاتحًا ثانيًا مباشرة بعد الأول تنجو من عامل التصفية: تتحول <%<%= 1 + 1 %> إلى <%%<%= 1 + 1 %>، حيث يُخرج ERB الفاتح البادئ كنص ثم يقيّم الوسم الداخلي. تسمّي مواصفة الاختبار الانحدارية المضافة في الالتزام نفسه الحيلة بوضوح — «مع فاتح متداخل مُهرَّب داخل وسم واحد (تجاوز escape-all-openers)» — وتؤكد أن كلاً من <%<%= 1 + 1 %> و<%<%<%= 1 + 1 %> المتداخل مرتين يجب أن يُعرَضا كنص حرفي. تلك المواصفة هي أوضح بيان عام لكيفية التحايل على عامل التصفية، لأن الإشعار الأمني نفسه لا يقدّم أي شيء.

إن شكل هذا الخلل عام وليس مجرد غرابة خاصة بـZammad: فأداة التهريب التي تتوقف بعد أول تطابق يبطلها أي إدخال يحمل نسخة ثانية متداخلة من التسلسل الذي تزيله. وتصف رسالة الالتزام التغيير بأنه صيانة، وهو المسار الذي تسلكه عادةً رقعة تقوية مكوَّنة من حرف واحد — ولهذا كان لا بد أن يحمل الإشعار الأمني، لا الفرق النصي، التحذير.

سبعة أسابيع من النشرة الاستشارية إلى NVD

نشرت NVD سجلها الخاص بـ CVE-2026-84462 في 25 سبتمبر 2026، بعد سبعة أسابيع من الإشعار الاستشاري، وآخر تعديل له في 28 سبتمبر. السجل موسوم بـ «Deferred»، ما يعني أن الوكالة لم تنشر تحليلها الخاص، كما تُنسب كتلة المقاييس فيه درجة 8.6 إلى security-advisories@github.com كمقياس ثانوي — أي تقييم GitHub بصفتها سلطة ترقيم CVE، وليس تقييمًا مستقلًا من NVD. ولا يتضمن السجل نفسه أي تكوين CPE على الإطلاق، لذا فهو لا يربط الثغرة بمعرّف منتج مرتبط بإصدار.

كلا التفصيلين يهم أي شخص يتتبع البرمجيات ذاتية الاستضافة عبر الخلاصات بدلاً من ملاحظات الإصدار. كان الإصلاح علنيًا وقابلاً للتنفيذ في 4 أغسطس؛ ووصل السجل القابل للقراءة آليًا في 25 سبتمبر؛ وحتى حينها وصل دون معرّف المنتج الذي تعتمد عليه الماسحات القائمة على CPE في المطابقة. ولمدة سبعة أسابيع، كان الوصف الموثوق للثغرة هو الإرشاد الأمني للمورّد وملاحظة الإصدار الخاصة به.

A dark HTML timeline card titled 'From commit to CVE record', kicker 'Zammad 7.1.2 - CVE-2026-84462', subtitle 'Five dated points, taken from the fix commit, the GitHub advisory, the Zammad release note and the NVD API'. Five rows: 7 July 2026, fix authored in commit e3b0c8f with the message 'Maintenance: Improve ERB sanitizer'; 3 August 2026, fix committed one day before disclosure; 4 August 2026, GitHub advisory GHSA-gp3x-9xm8-rcj6 published and Zammad 7.1.2 shipped the same day with 18 security fixes; 25 September 2026, NVD publishes CVE-2026-84462 with status Deferred and no CPE configuration, 52 days after disclosure; 29 October 2026, FIRST EPSS read at 0.28 percent probability in 30 days, 20th percentile. An amber rule below reads 'The advisory and the CVE record describe the same flaw. The first was actionable on 4 August; the second arrived as a machine-readable record 52 days later.' A footer credits GitHub, Zammad, NVD and FIRST, and says the card was rendered by OrcaRouter. The OrcaRouter logo is composited in the bottom-right corner.

ما هو ثابت، وما هو غير ثابت

مُثبت: الاستشارة الأمنية، والنسخة المصحّحة، ودرجة CVSS، والتعديل البرمجي، كلها مصدرها Zammad وقاعدة بيانات الاستشارات في GitHub، وهي متفقة فيما بينها. وسجل NVD يعيد إنتاج وصف جهة الترقيم دون إضافة تحليل خاص به. ويقيّم الأرشيف المُدخل بدرجة ثقة A على هذا الأساس، مع كون الحادث غير متنازع عليه.

غير مُثبت، أو غير مُسجل: لا يوجد إثبات مفهوم في النشرة الأمنية ولا تقرير عن استغلال في الواقع. ويمنح EPSS من FIRST لـ CVE-2026-84462 احتمال استغلال بنسبة 0.28 بالمئة خلال الثلاثين يومًا المقبلة، وهو المئين العشرون، في الدرجة المنشورة في 29 أكتوبر 2026. ولا يسجّل الأرشيف أي ضرر فعلي، ويصنّف الإدخال بخطورة متوسطة — أقل من النطاق العالي الخاص بالنشرة نفسها. وهذان أداتان منفصلتان تجيبان عن سؤالين مختلفين: ما الذي قد يسمح به العيب مقابل ما يُعرف أنه حدث، ويعرض هذا النص كليهما بدلًا من التوفيق بينهما.

التأكيد المستقل ضعيف. إن البحث عن تغطية لهذا الـ CVE يعيد قواعد بيانات الثغرات التي تعيد نشر نص الجهة المسؤولة عن الترقيم، إضافةً إلى ملاحظة الإصدار الخاصة بـ Zammad؛ ولا يبدو أن أي وسيلة إخبارية قد أفادت عن العيب بشكل مستقل. هذه نتيجة تتعلق بالسجل، وليست انتقادًا له: فتنفيذ شيفرة عن بُعد في مكتب الدعم ويتطلب حساب مسؤول ليس نوع الحدث الذي يولّد تغطية صحفية، وغياب رواية مستقلة هو بحد ذاته جزء مما يوثقه السجل.

من يمكنه إطلاقه، وما الذي تغيّر؟

تسرد ملاحظة إصدار Zammad للإصدار 7.1.2، المؤرخة في 4 أغسطس 2026، الثغرات الثماني عشرة التي تم تصحيحها في ذلك الإصدار، وتضع تجاوز قالب وكيل الذكاء الاصطناعي في المقدمة. وبالنسبة إلى العملاء المستضافين، تقول: "لا يلزم اتخاذ أي إجراء. لقد قام فريقنا بالفعل بتصحيح نسخكم وتأمينها." أما بالنسبة إلى عمليات التثبيت المستضافة ذاتيًا، فجاءت أكثر صراحة: "نوصي بشدة بالترقية إلى أحدث إصدار من Zammad فورًا لضمان حماية نظامك." ولا يقدم الإرشاد أي حل بديل، ولا يتضمن السجل أي إجراء تخفيفي يتجاوز الترقية.

A dark HTML card titled 'Who can pull the trigger', kicker 'CVE-2026-84462 - preconditions', subtitle 'From the GitHub advisory and the Zammad 7.1.2 release note; the score and exploitation figure are labelled separately'. Left column headed 'THE ATTACKER MUST' lists three conditions: hold administrator rights inside Zammad, specifically permission to create or edit AI Agents; reach the agent configuration over the network; supply no interaction from any other user. Right column headed 'THE PAYLOAD THEN' lists three consequences: runs on the server that hosts Zammad, not in a browser; fires the next time the agent processes a ticket; can read, modify or destroy all data on that server, according to the advisory. A statistics strip reads 8.6 CVSS 4.0 High, PR:H high privileges required, UI:N no user interaction, C:H I:H A:H all three impacts high, and 0.28 percent EPSS on 29 October 2026. Three flags below read Affected: Zammad up to and including 7.1.1; Fixed: 7.1.2, released 4 August 2026; Stated remedy: upgrade, no workaround published. A closing panel notes that the advisory publishes no proof of concept and that the regression spec in the fix commit is the clearest public description of the bypass. A footer says hosted instances were already patched and self-hosted installations must reach 7.1.2. The OrcaRouter logo is composited in the bottom-right corner.

متطلب الامتياز يستحق نظرة أدق مما يمنحه المتجه. تعني PR:H أن المهاجم يحتاج إلى وصول كبير قبل أن تصبح الثغرة مفيدة، وهذا الوصول هنا يتمثل في صلاحية admin.ai_agent التي تقول وثائق Zammad إنها مطلوبة للعمل مع AI Agents من الأساس. وفي مكتب المساعدة، غالبًا ما يكون هذا قائد فريق الخدمة الذي يضبط أدوات التصنيف والوسم واستخراج النصوص — وليس بالضرورة الشخص الذي يدير الخادم. وصياغة التنبيه الأمني نفسه، "مسؤول يملك صلاحية إنشاء AI Agents أو تحريرها"، أضيق من "أي شخص" وأوسع من "root". وإذا تعذر إجراء ترقية فورًا، فإن تضييق دائرة من يحملون هذه الصلاحية يقلل مجموعة الأشخاص القادرين على الوصول إلى مسار الكود؛ وهذا استنتاج من المتجه والوثائق، وليس إصلاحًا نشرته الجهة المصنعة.

لا تضع أيٌّ من الوثائق الأساسية نموذج لغة في مسار الاستغلال. يُنفَّذ الأمر داخل عملية Ruby في Zammad عندما تُعرَض إعدادات الوكيل؛ ولا يصف أيٌّ من التنبيه الأمني أو الالتزام البرمجي أو ملاحظة الإصدار أن النموذج هو من ينتج الحمولة. وتوفّر ميزة AI Agent الحقل القابل للكتابة من قِبل المسؤول والخاضع للمعالجة القالبية، والذكاء الاصطناعي هنا سطح الهجوم لا الآلية. هذا هو النمط الذي يشير إليه السجل: تعريف الوكيل — تعليماته وقالبه ومرشِّحاته — هو إعدادات قابلة للتنفيذ، يحرّرها أشخاص عملهم دعم فني لا مراجعة أمنية.

علاج Zammad متناسب وممل: تغيير طريقة واحدة، واختبارا انحدار، ورفع رقم الإصدار الذي يسد سبع عشرة ثغرة أخرى إلى جانب هذه الثغرة. الجزء الجدير بالحفظ هو نموذج التعرّض. فمكتب المساعدة الذي يسمح لقائد الدعم بتعريف وكيل يسمح أيضاً لقائد الدعم ذاته بكتابة شيء سينفذه الخادم، والشيء الوحيد الفاصل بين الأمرين هو مرشّح يجب أن يكون صحيحاً بشأن كل نسخة متداخلة من الصياغة التي يزيلها.