في 20 أكتوبر، أيقظ تنبيه مهندساً في Railway بسبب استدعاءات API إلى سجل داخلي لا يجب أن يكون موجوداً. وبعد ست عشرة ساعة كانت الشركة قد أوقفت أبنية العملاء مرتين، ودارت كل بيانات الاعتماد التي تملكها، وطلبت من تسعة مزوّدي ذكاء اصطناعي إلغاء مفاتيح لم تستطع بعد إثبات سرقتها.
الحصيلة النهائية من تقرير الحادث المنشور في 10 نوفمبر: فك تشفير متغيرات عملاء في 1.85% من مساحات العمل كحد أقصى، أي نحو 100 ألف. وإعادة تعيين رموز الحسابات المرتبطة لـ1,852 مستخدماً. وإنفاق غير مصرّح به على المفاتيح المسروقة يُقدّر بنحو 740 ألف دولار، تعيد Railway دفعها أو تغطيها من ميزانيتها.
والجزء الذي يستحق التوقف عنده: لم يخدع أحدٌ مديراً مالياً برسالة تصيّد. ولم ينشر أحد برامج فدية. المهاجم جاء من أجل مفاتيح API لمزوّدي ذكاء اصطناعي، والسوق الذي جعل ذلك يستحق عطلة نهاية أسبوع من العمل هو سوق بنيناها كلّنا معاً.
الاختراق، بالترتيب الذي حدث به
التسلسل الزمني الكامل في تقرير Railway يُقرأ كقصة رعب مكتوبة بتوقيت UTC.
- 18 أكتوبر، قبل كل شيء: يبدأ المهاجم في إنشاء حسابات وهمية على المنصة. الدفاعات الآلية تُفشل كل محاولة في هذه المرحلة.
- 07:28 UTC، 20 أكتوبر: يستغل ثغرة غير معروفة في بنية البناء متعددة المستأجرين للخروج جزئياً من عزل نظام الملفات وقراءة ملفات على الجهاز المضيف. يحصل من ذلك على بيانات اعتماد تستخدمها خوادم البناء لدفع الصور إلى السجل.
- 13:58 UTC: استدعاءات شاذة إلى Sجل API تُنبّه مهندس المناوبة. يُحدَّد السبب الجذري في أقل من ساعة. يُدمج الإصلاح، وتُوقف الأبنية، ويُعزل المهاجم.
- نقطة التحول: كانت بيانات الاعتماد هذه مخصصة لتصريح رفع الصور إلى السجل فقط. لكن عنقود Temporal الداخلي المستخدم لتنسيق الأبنية كان يقبلها كعميل موثوق، فاستطاع المهاجم استدعاء واجهاته وقراءة سجلات الأبنية، بما فيها المتغيرات التي تُمرّر إلى أبنية الآخرين. وكانت إحدى تلك النسخ هي المستودع الداخلي. منصة الدعم الخاصة بـRailway تنشر منه، على Railway نفسها.
- 03:26 UTC، 21 أكتوبر: أثناء فحص ذلك الكود، يجد المهاجم ربط OIDC مُهيّأ خطأً في بيئة سحابية ويسرق منها بيانات اعتماد إنتاجية قصيرة العمر.
- 04:07 إلى 05:21 UTC: باستخدام بيانات اعتماد أطول عمراً موجودة على جهاز تنسيق، يتصلون بقاعدة بيانات الإنتاج التي تحفظ متغيرات البيئة المشفّرة ويسحبون المغلّفات المشفّرة. تُظهر سجلات قاعدة البيانات أنهم اختاروا صفوفاً تطابق أسماء متغيراتها تعبيرات نمطية يزوّدها المهاجم لمفاتيح مزوّدي الذكاء الاصطناعي، مع تفضيل العملاء الذين لديهم متغيرات كثيرة.
- 04:42 إلى 07:15 UTC: يستخدمون بيانات اعتماد فك التشفير الموجودة على الجهاز ذاته لفتح المغلّفات عبر خدمة إدارة المفاتيح.
- 07:14 UTC: تُعطّل Railway كل بيانات الاعتماد السحابية النشطة، وتلغي الثابتة منها، وتوقف خدمة فك التشفير، وتُغلق أجزاء من المنصة. تعود الأبنية إلى الظلام.
- 09:24 UTC: يُطرد المهاجم بالكامل.
ثلاثة قرارات تصميمية حوّلت عطلاً إلى سرقة
إذا أزلت الدراما، سيجد النمط مألوفاً، وهذا بالضبط سبب أهميته.
1. بيانات اعتماد ضيقة وثق بها عدد كبير من الخدمات. لم يقل تصميمها قط "اقرأ متغيرات أبنية المستأجرين الآخرين". ببساطة كانت البنية تقبلها كعميل في مكان آخر. نطاق الضرر لا يحدده ما تريد للمفتاح أن يفعله، بل كل خدمة تقبله.
2. نسخ مخزنة في الكاش لم يعتبرها أحد أسراراً. كان كاش البناء يحتفظ بنسخ من حالة المستودع. وهذا منح المهاجم خريطة امتياز للشركة، والأسوأ: كتالوجاً بكل مسار يمكنه اختباره لاحقاً.
3. أسرار طويلة العمر بجوار البيانات التي تفكّها. التشفير بالمغلّفات تصميم جيد. لكن التشفير بالمغلّفات حيث يخزّن الجهاز الذي يقرأ النص المشفّر المفتاح الذي يفتحه هو باب مغلق والمفتاح في القفل. أضف ربط OIDC خاطئاً، فتسقط السلسلة كلها.
لم يحتج المهاجم إلى ثغرة يوم الصفر بعد أول عشر دقائق. كل ما تلاها كان إعداداً.
لماذا مفاتيح الذكاء الاصطناعي تحديداً
خلص التحقيق الجنائي في Railway إلى أن مفاتيح مزوّدي الذكاء الاصطناعي كانت الهدف الأساسي. نُقلت المفاتيح المسروقة إلى ما يسميه التقرير محطات نقل موزّعة، وهو التعبير المهذب لعمليات إعادة بيع تحوّل أرصدة استدعاء الآخرين إلى مال. والاستخدام الأرجح، وفق التقرير، هو التقطير: توليد بيانات تدريب ودرجات من نموذج متقدم على حساب شخص آخر.
ويصحح التقرير الانطباع بأنها حالة منفردة. أعلنت OpenCode وWarp وFireworks AI وجهات أخرى عن سرقات مشابهة بين 6 و23 أكتوبر. ووثّقت Wiz النمط باسم "أكتوبر الأسود لمنصات مطوري الذكاء الاصطناعي". ورأى عملاء Railway أنفسهم المفاتيح المسروقة تُستخدم في طلبات وكلاء البرمجة، وفي مراجعات سلوك الوكلاء لبناء بيانات تدريب، وفي فحص مسارات التدريب وأنظمة تقييمها.
بعبارة أخرى: هناك الآن سلسلة توريد غير قانونية كاملة للـاستدعاء. المفاتيح هي العملة، والإنفاق هو الخسارة، والضحايا غالباً هم العملاء الذين عاشت متغيراتهم في قاعدة بيانات شخص آخر.
المهاجم كان سرباً من الوكلاء، والدفاع كذلك
تفصيلان في التقرير يجب أن يغيّرا نظرتك إلى توقيتات الاستجابة للحوادث.
أولاً، وُصفت المواجهة المتصاعدة في اليوم الأول بأنها سباق في سرعة الوكلاء، مع ملاحظة Wiz أن الاختراق استخدم نماذج منزوعة القيود وأداة تشغيل وكلاء شبيهة بـARTEX. ست وثلاثون ساعة، وعشرات مسارات فحص متوازية، ومئات الحسابات التجريبية.
ثانياً، كان رد Railway آلياً بالقدر نفسه: مراقبة المهاجم على مدار الساعة عبر سجلات التدقيق والآثار، وتحصين متوازٍ للمسارات التي يفحصها، وتحقيق جنائي داخلي متوزع باستمرار.
دليل الاستجابة للحوادث لديك يفترض على الأرجح بشراً في مكالمة جسرية يقرؤون Slack. هذا لم يعد إيقاع الطرف الآخر.
ما سنفعله هذا الأسبوع
لكل من يشغّل ميزات ذكاء اصطناعي أو وكلاء أو مسارات تقنية مالية على منصة شخص آخر في الخليج، خمس خطوات:
- اجرد كل مفتاح ذكاء اصطناعي وحدّد له مالكاً. OpenAI، Anthropic، OpenRouter، Gemini، Fireworks، ومفاتيح BYOK التي يستخدمها وكلاؤك. أي مفتاح بلا مالك وبلا تاريخ تدوير يجب التعامل معه كمكشوف.
- ضع سقوفاً وتنبيهات على الإنفاق، لا على الأخطاء فقط. 740 ألف دولار من استدعاءات غير مصرّح بها هي فرصة كشف. ميزانيات لكل مفتاح، وتنبيهات على القفزات، ومراجعة أسبوعية للمفاتيح التي تنفق فقط ولا تنشر أبداً.
- اقتل بيانات الاعتماد طويلة العمر. تبادلات OIDC قصيرة العمر، وجمهور واحد لكل خدمة، وتدقيق دائم لكل ربط هيّأته يوماً. سلسلة Railway بدأت بربط كان ببساطة خاطئاً.
- افترض أن قاعدة بيانات المنصة قابلة للقراءة من أحدهم. أي من متغيراتك يحتوي شيئاً يستحق السرقة؟ دوّر مفاتيح الذكاء الاصطناعي ورموز الدفع وتصاريح GitHub OAuth التي خزّنتها في أي منصة، وفضّل المفاتيح التي يمكنك إلغاؤها بنقرة عند المزوّد.
- أدرج الإفصاح والإلغاء في العقد. طلبت Railway من المزوّدين إلغاء مفاتيح عبر البصمات قبل أن تعرف ما الذي تسرّب. اسأل مزوّديك اليوم: هل يمكنكم إنتاج قائمة بصمات ومسار إلغاء خلال أربع ساعات من أي حادث؟
الجملة التي يجب تذكرها
يُحسب لـRailway تقرير غير مريح ومفصّل على نحو غير معتاد. نشرت ملاحظة أولية بينما كانت الاستعادة جارية، ثم الرواية الجنائية الكاملة بعد ثلاثة أسابيع، بما فيها أن مفاتيح عملائها كلفت أكثر من الميزانية السنوية لشركة صغيرة.
لكن الدرس ليس أن منصة هُزمت. الدرس أن أثمن ما في حسابك السحابي لم يعد البيانات بل القدرة الحسابية. مفاتيح الذكاء الاصطناعي لديك أصبحت مالاً، وهي ملقاة في عشرات لوحات متغيرات البيئة عبر عشرات لوحات التحكم، كل واحدة مشفّرة بمفتاح يستطيع خادم بناء شخص آخر قراءته.
تعامل معها كالحسابات المصرفية التي أصبحت عليها بهدوء. دوّر، وحدّد الصلاحيات، وضع السقوف، وراقب. هذا الربع، لا الذي بعده.