اكتشف الباحثون في Truffle Security، أو ربما أعادوا اكتشاف ذلك، أن البيانات من مستودعات GitHub المحذوفة (العامة أو الخاصة) ومن النسخ المحذوفة (الشوك) من المستودعات لا يتم حذفها بالضرورة.
وقال جو ليون، الباحث الأمني في الشركة، في استشارية في يوم الأربعاء، أشار إلى أن القدرة على الوصول إلى بيانات المستودع المحذوفة – مثل مفاتيح واجهات برمجة التطبيقات – تمثل خطرًا أمنيًا. واقترح مصطلحًا جديدًا لوصف الثغرة المزعومة: Cross Fork Object Reference (CFOR).
وأوضح ليون أن “ثغرة CFOR تحدث عندما يتمكن فرع مستودع واحد من الوصول إلى بيانات حساسة من فرع آخر (بما في ذلك البيانات من الفروع الخاصة والمحذوفة)”.
على سبيل المثال، الشركة أظهر كيف يمكن للمرء أن يتفرع مستودع، ويسجل البيانات فيه، ويحذف الشوكة، ثم يصل إلى بيانات التسجيل المحذوفة المفترضة عبر المستودع الأصلي.
كما قام الباحثون بإنشاء مستودع، وتقسيمه، أظهر كيف تظل البيانات غير المتزامنة مع الشوكة قابلة للوصول من خلال الشوكة بعد حذف المستودع الأصلي. يمكنك مشاهدة هذا العرض التوضيحي أدناه.
وفقًا لليون، ظهر هذا السيناريو الأسبوع الماضي مع تقديم تقرير عن ثغرة أمنية بالغة الخطورة إلى شركة تكنولوجيا كبرى تتعلق بمفتاح خاص لحساب موظف على GitHub يتمتع بوصول واسع النطاق عبر المؤسسة. كان المفتاح قد تم حفظه علنًا في مستودع GitHub. بعد معرفة الخطأ، قامت شركة التكنولوجيا بإلغاء المستودع معتقدة أن ذلك سيعالج التسريب.
“لقد قاموا على الفور بحذف المستودع، ولكن نظرًا لأنه تم تقسيمه، لا يزال بإمكاني الوصول إلى البيانات المضمنة التي تحتوي على البيانات الحساسة عبر تقسيم، على الرغم من أن التقسيم لم يتزامن مطلقًا مع المستودع “الأعلى” الأصلي”، كما أوضح ليون.
وأضاف ليون أنه بعد مراجعة ثلاثة مستودعات عامة متشعبة على نطاق واسع من شركات الذكاء الاصطناعي الكبيرة، عثر باحثو Truffle Security على 40 مفتاح API صالحًا من الشوكات المحذوفة.
يمكنك التفرع
من الواضح أن هذه مشكلة. ولكنها ليست مشكلة كبيرة إلى الحد الذي يجعل GitHub يعتبر CFOR ثغرة مشروعة. في الواقع، تعتبر شركة استضافة الأكواد العملاقة المملوكة لشركة Microsoft هذه الثغرة ميزة وليست خللًا.
عندما تم إبلاغ GitHub بالوضع من خلال برنامج الكشف عن الثغرات الأمنية، ردت: “هذا قرار تصميم مقصود ويعمل كما هو متوقع كما هو مذكور في[[توثيق].”
هذا قرار تصميم مقصود ويعمل كما هو متوقع
من الواضح أن هذا معروف منذ سنوات. المطالبات لقد أبلغت GitHub بالثغرة الأمنية في عام 2018 وتلقيت ردًا مشابهًا.
في مقابلة هاتفية مع السجلوأوضح ديلان أيري، المؤسس المشارك والرئيس التنفيذي لشركة Truffle Security، أن المشكلة تعود إلى ما يسمى بالالتزام المعلق.
“يعد الالتزام المعلق أحد البدائيات في git”، كما أوضح أيري. “إنه ليس بدائيًا في GitHub. لذا يمكن أن يوجد الالتزام المعلق في أي منصة git – Bitbucket، وGitLab، وGitHub، وما إلى ذلك. والالتزام المعلق موجود بشكل أساسي داخل مستودع كود معين، لديك شجرة وتمثل هذه الشجرة تاريخ هذا المشروع، وبالتالي جميع الإصدارات القديمة من الكود المرتبطة ببعضها البعض.”
يلتقط git commit لقطة من حالة المستودع في نقطة زمنية محددة، بما في ذلك التغييرات التي تطرأ على كل من الكود والبيانات. يتم تحديد كل تعهد بشكل فريد من خلال تجزئة تشفيرية. على سبيل المثال، عند حذف فرع، يتم إزالة المرجع إلى سلسلة تعهدات معينة، ولكن التعهدات نفسها لا يتم حذفها من قاعدة بيانات كائنات المستودع.
قال أيري، الذي أوضح أن كيفية تعامل منصات git مع الالتزامات المعلقة هو قرار من جانب المنصة وليس مواصفات git، “تعتبر هذه الالتزامات المعلقة بمثابة جزء أساسي موثق من git نفسه”.
قال أيري إن Bitbucket وGitLab وGitHub لديهم هذه الالتزامات حتى عندما يتم قطع الاتصال بشجرة التعليمات البرمجية. إذا كان لديك معرف للوصول إليها مباشرة، فلا يزال بإمكانك تنزيل البيانات المرتبطة بها.
- عفواً، لقد اعتمدت شركة Apple على أكواد سيئة أثناء انتقادها لتقنية الإعلانات الخاصة بـ Google Chrome
- الأشهر والأيام التي سبقت وبعد يوم الجمعة المميت الذي شهدته مدينة كراود سترايك
- تقول شركة كاسبيرسكي إن العم سام رفض اقتراحًا بفتح الكود الخاص بها للمراجعة من قبل طرف ثالث
- انسَ الأمان – برنامج reCAPTCHA v2 من Google يستغل المستخدمين لتحقيق الربح
قال أيري إن هذا معروف على نطاق واسع. ولكن هناك مشكلة مجاورة تتعلق بالشوكة – المستودعات المنسوخة – والتي تتعلق بشكل أكثر تحديدًا بـ GitHub. وأوضح أن الشوكات ليست جزءًا من مواصفات git، لذا فإن كل منصة لها تنفيذها الخاص.
قال أيري لموقع GitHub، إن عمليات الالتزام المعلقة يمكن تنزيلها عبر شوكة إذا كان لديك التجزئة التعريفية، أو جزء منها.
“إذا كان لديك المعرف، فيمكنك تنزيلها من المستودع الذي تم دفعها إليه في الأصل”، كما أوضح. “اتضح أنه يمكنك أيضًا تنزيلها من خلال أي فرع من هذا المستودع. ويعمل هذا في اتجاهين. لذا من الوالد، يمكنك تنزيل هذا الالتزام المعلق من الفرع ومن الفرع يمكنك تنزيل هذا الالتزام المعلق من الوالد.”
“ما وجدناه هو أنه حتى إذا قمت بحذف الوالد، وتم دفع الالتزام إلى الوالد، فإن هذا الالتزام المعلق لا يزال موجودًا فحسب، بل يمكنك تنزيله من خلال الطفل على الرغم من أنه تم دفعه إلى الوالد، ولم يتم سحبه أبدًا إلى الطفل، وتم حذف الوالد، يمكنك الآن الوصول إلى هذا الالتزام المعلق.”
لا يزال هذا الالتزام المعلق موجودًا فحسب، بل يمكنك تنزيله من خلال الطفل حتى لو تم دفعه إلى الأصل
علاوة على ذلك، أوضح أيري أنك لست بحاجة حتى إلى رمز التعريف الكامل للوصول إلى الالتزام. وقال: “إذا كنت تعرف الأحرف الأربعة الأولى من المعرف، فسوف يكمل GitHub تلقائيًا بقية المعرف نيابة عنك”، مشيرًا إلى أنه مع وجود خمسة وستين ألف تركيبة ممكنة فقط لتلك الأحرف، فهذا عدد صغير بما يكفي لاختبار جميع الاحتمالات.
وعندما سُئل عن المخاطر التي يشكلها هذا، قال أيري إن هناك أرشيف أحداث GitHub وقال إنه مثلما يمكن استخدام أرشيف تغريدات Sunlight Foundation للبحث في البيانات العامة على وسائل التواصل الاجتماعي، يمكن استخدام أرشيف أحداث GitHub للتحقيق الجنائي في ما كانت تفعله شركات التكنولوجيا.
“لو [tech companies] “حذف الكود، إذا بذلوا قصارى جهدهم لحذف شيء ما، فهذا لا يعني دائمًا أي شيء”، أوضح. “لكن في كثير من الأحيان يعني شيئًا ما. يمكن أن يعني مفتاحًا أو كلمة مرور [was exposed]قد يعني هذا أنهم قاموا عن طريق الخطأ برفع مجموعة بيانات التعلم الآلي. لقد رأينا ذلك من قبل. أو قد يعني هذا – وهذا أمر نادر – [that] في الواقع، قام المهاجم باختراق مشروعهم وكانوا يشعرون بالحرج قليلاً بشأن ذلك … لذلك قاموا فقط بحذف الباب الخلفي.
عندما سُئل عن كيفية استجابة GitHub، تساءل Ayrey، “إذا قامت منصة ما بإحداث ثغرة أمنية، وتوثيقها، وشرح أن هذا أمر يجب أن تكون على دراية به وأنه يشكل خطرًا معروفًا، فهل هذا يجعلها أقل خطورة؟
“ما كنت لأؤيده على الأرجح، لو كنت أعمل هناك، هو أن مجموعة الشوكة هذه ليست مشتركة بين الشوك، وأن الالتزامات التي تدفعها إلى شوكة واحدة لا يمكن تنزيلها من خلال شوكة أخرى. والشيء الآخر الذي كنت لأؤيده على الأرجح هو ميزة جديدة يتم بناؤها تسمح لك بحذف الالتزامات بشكل دائم وليس مجرد تركها معلقة.”
تزعم شركة Truffle Security أن GitHub يجب أن تعيد النظر في موقفها لأن المستخدم العادي يتوقع وجود تمييز بين المستودعات العامة والخاصة من حيث أمان البيانات، وهو ما لا يكون صحيحًا دائمًا. وهناك أيضًا توقع بأن عملية الحذف يجب أن تزيل بيانات الالتزام، وهو ما ثبت مرة أخرى أنه ليس الحال دائمًا.
وقال متحدث باسم GitHub السجل“يلتزم موقع GitHub بالتحقيق في مشكلات الأمان المبلغ عنها. نحن على علم بهذا التقرير وقد تأكدنا من أن هذا متوقع و موثقة السلوك المتأصل في كيفية عمل شبكات الشوكة. يمكنك قراءة المزيد حول كيفية تأثير حذف أو تغيير الرؤية على شوك المستودع في توثيق” ®