ثغرة في مكتبة ansi2html عرّضت حسابات SourceHut للاستيلاء عبر سجلات البناء
سجل البناء نص يمكن أن يتحكم فيه طرف خارجي، وأي صفحة تعرضه في المتصفح دون تنظيف تمنح هذا الطرف موطئ قدم في جلسة صاحب المشروع.
نشر الباحث Arusekk في 23 سبتمبر 2026 تقريرًا عن ثغرة برقم CVE-2026-92973 في خدمة builds.sr.ht التابعة لمنصة SourceHut، ووصفها بأنها wormable، أي قادرة على الانتشار من حساب إلى آخر. وأصل الثغرة ليس في SourceHut نفسها، بل في مكتبة صغيرة تعتمد عليها اسمها ansi2html.
وظيفة المكتبة تحويل أكواد الألوان التي تطبعها الطرفية إلى HTML ملوّن يُعرض في المتصفح، وهي الطريقة التي تُعرض بها سجلات البناء في كثير من أنظمة CI. وتدعم المكتبة أيضًا OSC 8، وهو معيار يسمح بتحويل نص في الطرفية إلى رابط حقيقي.
أين كان الخلل
كانت المكتبة تضع عنوان الرابط داخل صفحة HTML دون تنظيفه. ولأن محتوى السجل يأتي مما يطبعه البناء، وهذا بدوره قد يأتي من كود أو مدخلات خارجية، أصبح في إمكان طرف خارجي إدخال كود يُنفَّذ في المتصفح عند فتح الصفحة. ومن يفتح صفحة السجل عادة هو صاحب المشروع، وهو مسجّل الدخول، وهذا ما يحوّل الخلل إلى خطر على الحساب.
ويلفت التقرير إلى أن مستودع المكتبة كان متوقفًا دون أي نشاط منذ أكثر من سنة، وأن الباحث عثر على الثغرة أثناء محاولته إصلاح مشكلة أخرى فيها.
الدرس يتجاوز SourceHut. فكل واجهة تعرض سجلات، أو رسائل أخطاء، أو أسماء فروع، أو مخرجات أوامر، تعرض نصًا قد يكون طرف آخر هو من كتبه. ولوحات التحكم الداخلية التي يبنيها الفريق لنفسه هي في الغالب الأقل مراجعة من هذه الزاوية، لأن محتواها يبدو داخليًا بطبيعته. وحين تعتمد هذه الواجهات على مكتبة صغيرة متوقفة الصيانة، يصبح أمانها رهنًا بكود لا يراجعه أحد.