The Chromium Chronicle رقم 23: إصدارات تم التحقّق منها في Chrome Infra

الحلقة 23: من تأليف "أكاش موخيرجي" في "ماونتن فيو"، كاليفورنيا (تموز/يوليو 2021)
الحلقات السابقة

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

في السابق، كانت Google تستخدم التفويض الثنائي، وهو فحص داخلي يحدّ من المخاطر الداخلية من خلال ضمان مراجعة برامج الإنتاج والإعدادات المنشورة في Google بشكل صحيح ومعرفة مصدرها.

من خلال ضمان عدم تمكُّن أي شخص من اختراق التصميم وسلسلة الإمداد الخاصة بالعناصر الفنية المصممة على نموذج LUCI بدون أن يتم رصدها، تعمل Google على الحد من المخاطر التي قد تتعرض لها البرامج التي نشحنها إلى المستخدمين.

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

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

يتم تنفيذ الترخيص الثنائي كنظام من خطوتين. يُنشئ النظام provenance يتضمّن معلومات حول وقت الإصدار، ويُحدث تنفيذ السياسة قبل توقيع البرنامج أو تثبيته.

def CreateProvenance(self, build_manifest: Mapping[str, Any]):
  """Builder generates and signs provenance given build manifest. Signed JWT is placed
  alongside built artifact."""

وبالنسبة إلى Chrome، قبل توقيع عناصر البرامج المنتجة باستخدام البنية الأساسية لتوقيع Google، يتم فرض السياسة لتلبية الحد الأدنى من متطلبات الأمان المحددة للإصدار.

def VerifyProvenance(self, artifact_hash: str, provenance: str):
  """Provenance is verified using a policy engine service before signing an artifact."""

تنقسم المتطلبات إلى 4 مجالات تقريبًا:

  • التحكّم في المصدر: يحمي البيانات التي تم تضمينها في الإصدار.
  • إنشاء: يوفر حماية العملية التي تحوِّل المصدر إلى نظام ثنائي.
  • الأصل: مصادقة تحتوي على بيان إصدار يمكن التحقق منه.
  • السياسة: قواعد تحدّد ما إذا كانت أداة معيّنة مؤهّلة في سياق معيّن.

إنّ تنفيذ إجراء فحص لتنفيذ السياسات في إطار عمليات CI وCD في Chrome والبنية الأساسية قد أتاح لنا التحقّق من أنّ الرموز البرمجية والضبط تلبّي الحد الأدنى من معايير الأمان. هذا عنصر تحكم مهم يتم استخدامه للحد من قدرة حساب شخص من الداخل ربما يكون ضارًا أو اختراقًا، وذلك لتعديل البرامج التي نوزّعها على المستخدمين.