
إطار عمل تحليل التلوث الثابت المرحلي لسير عمل GitHub Actions. يكتشف ثغرات حقن الكود باستخدام تتبع التلوث ومصنف التأثير، ويخرج تقارير SARIF لأمان CI/CD.
يحتوي هذا المستودع على الكود الخاص بورقتنا العلمية "ARGUS: A Framework for Staged Static Taint Analysis of GitHub Workflows and Actions" المنشورة في مؤتمر USENIX Security '23. Argus هي أداة تحليل أمني شاملة مصممة خصيصًا لـ GitHub Actions. بُنيت بهدف تعزيز أمان سير العمل CI/CD، وتستخدم Argus تقنيات تتبع التلوث ومصنف تأثير للكشف عن الثغرات المحتملة في سير عمل GitHub Action.
قم بزيارة موقعنا الإلكتروني - secureci.org لمزيد من المعلومات.
تتبع التلوث: تستخدم Argus خوارزميات متطورة لتتبع تدفق البيانات غير الموثوقة المحتملة من مصادر محددة إلى نقاط نهاية حساسة أمنيًا داخل سير عمل GitHub Actions. يتيح ذلك تحديد الثغرات التي قد تؤدي إلى هجمات حقن الكود.
مصنف التأثير: تصنف Argus الثغرات المُحددة إلى فئات شديدة الخطورة (High) ومتوسطة (Medium) ومنخفضة (Low)، مما يوفر فهمًا أوضح للتأثير المحتمل لكل ثغرة. وهذا أمر بالغ الأهمية لتحديد أولويات جهود التخفيف.
توفر هذه النص البرمجية بلغة Python واجهة سطر أوامر للتفاعل مع مستودعات GitHub وإجراءات GitHub.
python argus.py --mode [mode] --url [url] [--output-folder path_to_output] [--config path_to_config] [--verbose] [--branch branch_name] [--commit commit_hash] [--tag tag_name] [--action-path path_to_action] [--workflow-path path_to_workflow]
--mode: وضع التشغيل. اختر إما 'repo' أو 'action'. هذه المعلمة مطلوبة.--url: رابط GitHub. استخدم USERNAME:TOKEN@URL للمستودعات الخاصة. هذه المعلمة مطلوبة.--output-folder: مجلد الإخراج. القيمة الافتراضية هي '/tmp'. هذه المعلمة اختيارية.--config: ملف التكوين. هذه المعلمة اختيارية.--verbose: وضع التفصيل. في حالة توفير هذا الخيار، يتم تعيين مستوى التسجيل إلى DEBUG. وإلا، يتم تعيينه إلى INFO. هذه المعلمة اختيارية.--branch: اسم الفرع. يجب عليك توفير واحد بالضبط من: --branch أو --commit أو --tag. هذه المعلمة اختيارية.--commit: هاش الإيداع. يجب عليك توفير واحد بالضبط من: --branch أو --commit أو . هذه المعلمة اختيارية.لاستخدام هذه النص البرمجية للتفاعل مع مستودع GitHub، قد تقوم بتشغيل أمر مثل التالي:
python argus.py --mode repo --url https://github.com/username/repo.git --branch master
سيؤدي هذا إلى تشغيل النص البرمجي في وضع repo على الفرع master للمستودع المحدد.
يمكن تشغيل Argus داخل حاوية docker. للقيام بذلك، اتبع الخطوات التالية:
resultsيمكنك عرض نتائج SARIF إما من خلال عارض عبر الإنترنت أو باستخدام إضافة Visual Studio Code (VSCode).
العارض عبر الإنترنت: عارض SARIF على الويب هو أداة عبر الإنترنت تتيح لك تصور ملفات SARIF. يمكنك رفع ملف SARIF الخاص بك (argus_report.sarif) مباشرة إلى الموقع لعرض النتائج.
إضافة VSCode: إذا كنت تفضل استخدام VSCode، يمكنك تثبيت إضافة عارض SARIF. بعد تثبيت الإضافة، يمكنك فتح ملف SARIF الخاص بك (argus_report.sarif) في VSCode. ستظهر النتائج في جزء مستكشف SARIF، والذي يوفر عرضًا مفصلاً وقابلاً للتنقل للنتائج.
تذكر التعامل مع ملف SARIF بحذر، خاصة إذا كان يحتوي على معلومات حساسة من قاعدة الكود الخاصة بك.
إذا كانت هناك مشكلة تتعلق بالحاجة إلى تفويض GitHub للتشغيل، يمكنك توفير username:TOKEN في متغير البيئة GITHUB_CREDS. سيتم استخدام هذا لجميع الطلبات المقدمة إلى GitHub. لاحظ أننا لا نخزن هذه المعلومات في أي مكان، ولا ننشئ أي شيء في حساب GitHub - نستخدم هذا فقط لاستنساخ المستودعات.
Argus هو مشروع مفتوح المصدر، ونرحب بمساهمات المجتمع. سواء كان الإبلاغ عن خطأ، أو اقتراح ميزة، أو كتابة كود، فإن مساهماتكم موضع تقدير دائمًا!
إذا كنت تستخدم Argus في بحثك، يرجى الاستشهاد بورقتنا:
@inproceedings{muralee2023Argus,
title={ARGUS: A Framework for Staged Static Taint Analysis of GitHub Workflows and Actions},
author={S. Muralee, I. Koishybayev, A. Nahapetyan, G. Tystahl, B. Reaves, A. Bianchi, W. Enck,
A. Kapravelos, A. Machiry},
booktitle={32st USENIX Security Symposium (USENIX Security 23)},
year={2023},
}
Argus مرخصة بموجب ترخيص GPL.
--tag--tag: الوسم. يجب عليك توفير واحد بالضبط من: --branch أو --commit أو --tag. هذه المعلمة اختيارية.--action-path: المسار (النسبي) للإجراء. لا يمكنك توفير --action-path في وضع repo. هذه المعلمة اختيارية.--workflow-path: المسار (النسبي) لسير العمل. لا يمكنك توفير --workflow-path في وضع action. هذه المعلمة اختيارية.