جاري التحميل...

المسح التلقائي للثغرات الأمنية باستخدام Trivy

بواسطة حيدر سرحان
المسح التلقائي للثغرات الأمنية باستخدام Trivy
DevOpsSecurityCI/CD

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

في هذا المقال، سأوضح لك كيفية أتمتة فحص الثغرات لتطبيق Python محتوى في Docker، PyGoat، باستخدام Trivy - وهو ماسح أمني مفتوح المصدر شائع الاستخدام. سنستخدم GitHub Actions لسحب صورة PyGoat Docker من Docker Hub وتشغيل عمليات فحص Trivy كجزء من خط أنابيب CI/CD الخاص بنا. في النهاية، سترى مدى سهولة إضافة فحوصات أمنية آلية للحاويات إلى سير عملك دون الحاجة إلى بناء الصور بنفسك.

المتطلبات الأساسية

قبل أن نبدأ، تأكد من توفر ما يلي:

  • معرفة أساسية بـ Docker و Python و GitHub. لا تحتاج إلى أن تكون خبيراً، لكن بعض الإلمام بكيفية عمل الحاويات ومستودعات GitHub سيكون مفيداً.
  • حساب GitHub. سنستخدم GitHub Actions لأتمتة عملية الفحص.

ما هو Trivy؟

Trivy هو ماسح ثغرات مفتوح المصدر بسيط وشامل مصمم للحاويات. يتم استخدامه على نطاق واسع للتحقق من صور Docker بحثاً عن مشاكل أمنية قبل وصولها إلى الإنتاج.

Trivy مفيد بشكل خاص لأنه يمكنه اكتشاف مجموعة متنوعة من الثغرات في صور الحاويات الخاصة بك بسرعة. يقوم بفحص مشاكل الأمان المعروفة في حزم نظام التشغيل (مثل تلك المثبتة عبر apt أو apk)، والتبعيات التطبيقية (مثل حزم Python من pip)، وحتى مشاكل التكوين أو الأسرار المكشوفة. هذا التغطية الواسعة تجعل Trivy أداة قيمة لأي شخص يعمل مع التطبيقات المحتواة، مما يساعدك على اكتشاف المخاطر مبكراً وإرسال كود أكثر أماناً.

أتمتة عمليات فحص Trivy باستخدام GitHub Actions

GitHub Actions هو منصة CI/CD قوية مدمجة في GitHub تتيح لك أتمتة المهام مثل بناء واختبار ونشر الكود الخاص بك. باستخدام GitHub Actions، يمكنك أيضاً إضافة فحوصات أمنية آلية إلى سير عملك، بحيث يتم اكتشاف الثغرات في أسرع وقت ممكن.

في هذا المثال، سنقوم بإعداد سير عمل لفحص صورة PyGoat Docker الرسمية من Docker Hub تلقائياً باستخدام Trivy في كل مرة يتم فيها دفع تغييرات إلى الفرع الرئيسي للمستودع.

دعنا نفصل ما يفعله كل جزء من سير عمل GitHub Actions هذا:

  • المحفز: يعمل سير العمل تلقائياً في كل مرة نقوم فيها بدفع تغييرات إلى الفرع الرئيسي.
  • تعريف المهمة: المهمة تسمى "Trivy Scan" وتعمل على أحدث بيئة افتراضية Ubuntu 24.04 مقدمة من GitHub.
  • خطوة Checkout: خطوة actions/checkout@v4 تسحب كود المستودع الخاص بك إلى بيئة سير العمل. هذه خطوة أولى شائعة في معظم سير العمل، حتى لو كنا نقوم بفحص صورة Docker عامة وليس بناء أي شيء من الكود.
  • خطوة فحص Trivy: خطوة aquasecurity/trivy-action@0.28.0 تقوم بتشغيل ماسح Trivy. نحدد عدة معلمات لتكوين كيفية عمل Trivy:
    • image-ref: 'pygoat/pygoat:latest' - هذا يخبر Trivy بفحص صورة Docker pygoat/pygoat:latest. pygoat هو تطبيق Python ضعيف عمداً مصمم للتعلم وممارسة اختبار الأمان.
    • format: 'table' - سيتم عرض نتائج الفحص بتنسيق جدول، مما يسهل قراءتها في سجل GitHub Actions.
    • exit-code: '0' - لن يفشل سير العمل حتى إذا وجد Trivy ثغرات. هذا مفيد في سيناريوهات العرض أو التعلم حيث تريد رؤية النتائج دون حظر سير العمل. (في بيئة الإنتاج، قد تقوم بتعيين هذا إلى 1 بحيث يفشل خط الأنابيب إذا تم العثور على مشاكل خطيرة.)
    • ignore-unfixed: true - يخبر هذا الخيار Trivy بتجاهل الثغرات التي لا يوجد لها إصلاح متاح. هذا مفيد للتركيز على المشاكل التي يمكن معالجتها فوراً.
    • severity: 'CRITICAL' - يحد من المخرجات إلى الثغرات ذات الشدة الحرجة.

النتائج

بمجرد تشغيل سير العمل، سترى نتائج فحص Trivy مباشرة في سجل GitHub Actions. إليك مثال على شكل مخرجات Trivy:

findings

لفهم ما تعنيه هذه النتائج، دعنا نفصل الصف الأول في الجدول:

  • المكتبة: curl - هذا هو اسم المكتبة/الحزمة المتأثرة.
  • الثغرة: CVE-2021-22945 - هذه هي الثغرة الموجودة في المكتبة. لمزيد من المعلومات حول CVEs، يمكنك زيارة موقع CVE.
  • الشدة: CRITICAL - هذا يشير إلى مستوى شدة الثغرة.
  • الحالة: fixed - هذا يوضح أن الثغرة قد تم إصلاحها في إصدار لاحق من المكتبة.
  • الإصدار المثبت: 7.74.0-1.3+deb11u1 - هذا هو إصدار المكتبة المثبت حالياً في صورة Docker.
  • الإصدار المصحح: 7.74.0-1.3+deb11u2 - هذا هو الإصدار الذي تم فيه إصلاح الثغرة.
  • العنوان: curl: use-after-free and double-free in MQTT sending - هذا عنوان موجز يلخص الثغرة.

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

الخاتمة

أتمتة فحص الثغرات في خطوط أنابيب CI/CD الخاصة بك هي خطوة حاسمة نحو بناء تطبيقات آمنة. باستخدام أدوات مثل Trivy ومنصات مثل GitHub، فإن إضافة فحوصات أمنية إلى سير عمل التطوير الخاص بك أمر مباشر وفعال للغاية. من خلال فحص صور Docker الخاصة بك في كل مرة تقوم فيها بدفع الكود، يمكنك اكتشاف الثغرات مبكراً، وتحديد أولويات الإصلاحات، وإرسال تطبيقات أكثر أماناً - دون إبطاء فريقك.

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

قراءات إضافية وروابط مفيدة