التحديث بتاريخ 21/5/24: تمت إضافة البيان الأطلسي إلى أسفل المقالة.
تم العثور على جهات تهديد تنتهك حسابات AWS باستخدام أسرار المصادقة المسربة كنص عادي في كائنات Atlassian Bitbucket الأثرية.
تم اكتشاف المشكلة من قبل Mandiant، الذي كان يحقق في الكشف الأخير عن أسرار Amazon Web Services (AWS) التي استخدمها ممثلو التهديدات للوصول إلى AWS.
على الرغم من اكتشاف المشكلة في سياق التحقيق، إلا أنها توضح كيف يمكن لتسريب البيانات التي كان يُعتقد سابقًا أنها آمنة، بنص عادي إلى المستودعات العامة.
متغيرات BitBucket المضمونة
Bitbucket عبارة عن مستودع للتحكم في الإصدار قائم على الويب ومتوافق مع Git وخدمة استضافة تديرها Atlassian، وتوفر للمطورين نظامًا أساسيًا لإدارة التعليمات البرمجية والتعاون.
Bitbucket Pipelines عبارة عن خدمة متكاملة للتسليم/النشر المستمر (CI/CD) تعمل على أتمتة عمليات الإنشاء والاختبار والنشر.
غالبًا ما يربط مسؤولو النظام Pipelines مباشرة بـ AWS للنشر السريع للتطبيقات والوصول إلى الموارد باستخدام AWS CLI وSDKs وأدوات AWS الأخرى.
لتسهيل هذه الأتمتة، تسمح Bitbucket للمطورين بتخزين المعلومات الحساسة، مثل أسرار مصادقة AWS، في “المتغيرات الآمنة” لاستخدام تلك المتغيرات بسهولة في التعليمات البرمجية الخاصة بهم دون تعريض المفاتيح لأشخاص آخرين.
عندما يتم تعيين متغير على أنه مؤمن في BitBucket، يتم تخزينه في نموذج مشفر لمنع الكشف العام عن قيمه في بيئة Bitbucket.
“يمكنك تأمين متغير، مما يعني أنه يمكن استخدامه في البرامج النصية الخاصة بك ولكن سيتم إخفاء قيمته في سجلات البناء (انظر المثال أدناه)،” تشرح وثائق Bitbucket.
“إذا كنت تريد تحرير متغير آمن، فيمكنك فقط إعطائه قيمة جديدة أو حذفه. ويتم تخزين المتغيرات الآمنة كقيم مشفرة.”
ومع ذلك، اكتشف مانديانت أن الكائنات الاصطناعية التي تم إنشاؤها أثناء تشغيل خطوط الأنابيب يمكن أن تحتوي على معلومات حساسة، بما في ذلك المتغيرات المؤمنة في النص العادي. ونظرًا لأن المطورين قد لا يدركون أن هذه الأسرار قد تم كشفها في ملفات مصطنعة، فقد يتم نشر كود المصدر في المستودعات العامة حيث يمكن للجهات الفاعلة التي تهدد التهديد سرقتها.
أسرار في نص عادي
يتم تعريف العناصر في ملف التكوين bitbucket-pipelines.yml المستخدم لتحديد عمليات CI/CD الخاصة بمشروع Bitbucket.
أحد التوجيهات الموجودة في هذه الملفات هوالآثار:، والتي يتم استخدامها لتحديد المتغيرات والملفات والأدلة التي يتم تصديرها إلى الكائنات الاصطناعية التي سيتم الاحتفاظ بها واستخدامها في الخطوات الإضافية لعملية الإنشاء والاختبار.
يقول مانديانت أنه من الشائع بين المطورين استخدامprintenv
أمر لتخزين كافة ملفات البيئة في ملف نصي، والذي يتم بعد ذلك تمريره إلى كائن قطعة أثرية للخطوات المستقبلية في عملية الإنشاء.
ومع ذلك، سيؤدي القيام بذلك إلى تصدير “المتغيرات الآمنة” بنص عادي إلى الملف الاصطناعي بدلاً من تصديره في شكله المشفر.
إذا تم تخزين هذه الملفات الاصطناعية بعد ذلك في مكان عام، فيمكن لممثل التهديد ببساطة فتح الملف النصي وعرض جميع المتغيرات في نص عادي، مما يسهل سرقة أسرار المصادقة التي يمكن استخدامها لسرقة البيانات أو تنفيذ أنشطة ضارة أخرى.
“لقد شهدت شركة Mandiant حالات استخدمت فيها فرق التطوير أدوات Bitbucket في التعليمات البرمجية المصدرية لتطبيقات الويب لأغراض استكشاف الأخطاء وإصلاحها، ولكن، دون علم فرق التطوير، احتوت هذه العناصر على قيم نصية عادية للمفاتيح السرية.” يقرأ التقرير.
“أدى ذلك إلى كشف المفاتيح السرية على الإنترنت العام حيث كانت موجودة، ثم استخدمها المهاجمون لاحقًا للحصول على وصول غير مصرح به.”
هناك احتمال آخر وفقًا لمانديانت وهو الخطأ في تكوين ملف ‘bitbucket-pipelines.yml’ الذي يحدد خط أنابيب CI/CD، ليشمل المتغيرات المؤمنة في السجلات أو العناصر.
عندما تقوم البرامج النصية لخطوط الأنابيب بتسجيل متغيرات البيئة لأغراض تصحيح الأخطاء، فيمكنها تسجيل معلومات حساسة عن غير قصد، وبما أن هذه السجلات يتم تخزينها عادةً في مواقع يمكن الوصول إليها، فهناك مرة أخرى خطر التعرض السري.
نصائح التخفيف
يذكر Mandiant المطورين بأن Bitbucket لم يتم تصميمه لإدارة الأسرار، مما يشير إلى أنه يتم استخدام منتج مخصص ومتخصص لهذا الغرض بدلاً من ذلك.
يُنصح المطورون أيضًا بمراجعة العناصر بعناية للتأكد من عدم وجود أسرار نصية عادية داخل الملفات التي تم إنشاؤها.
أخيرًا، يُنصح بنشر فحص التعليمات البرمجية على مدار دورة حياة المسار الكاملة لالتقاط أحداث التعرض السرية وإزالتها قبل وصول التعليمات البرمجية إلى مرحلة الإنتاج.
التحديث بتاريخ 21/5/24: أخبر Atlassian BleepingComputer أن الطريقة التي أظهرتها Google غير معتادة بالنسبة للمطورين وتتعارض مع أفضل الممارسات الأمنية.
“من غير المعتاد أن يقوم المستخدم بطباعة متغيرات آمنة إلى ملف أثناء إنشاء مسار، وهذا الإجراء يتعارض مع أفضل ممارسات الأمان. نحن ندرك أن العملاء لديهم مجموعة متنوعة من حالات الاستخدام لـ CI/CD ونوصي بشدة مستخدمي Bitbucket باتباع الأمان أفضل الممارسات عند تكوين خطوط الأنابيب الخاصة بهم، كما نشجع العملاء على إضافة المسح السري ومسح التعليمات البرمجية باستخدام Snyk وغير ذلك من عمليات التكامل الأمنية المدعومة، علاوة على ذلك، تتبع Bitbucket الممارسة القياسية الصناعية لتشفير متغيرات خطوط الأنابيب وإخفاء مخرجاتها في السجلات لمنع التسرب غير المقصود. أسرار.” – أطلسي.