
GitHub Actions वर्कफ़्लो के लिए स्टेज्ड स्टैटिक टेन्ट विश्लेषण ढाँचा। टेन्ट-ट्रैकिंग और एक प्रभाव वर्गीकरणकर्ता का उपयोग करके कोड इंजेक्शन भेद्यता का पता लगाता है, CI/CD सुरक्षा के लिए SARIF रिपोर्ट आउटपुट करता है।
इस रिपॉजिटरी में हमारे USENIX Security '23 पेपर "ARGUS: A Framework for Staged Static Taint Analysis of GitHub Workflows and Actions" का कोड शामिल है। Argus एक व्यापक सुरक्षा विश्लेषण उपकरण है जो विशेष रूप से GitHub Actions के लिए डिज़ाइन किया गया है। CI/CD वर्कफ़्लो की सुरक्षा बढ़ाने के उद्देश्य से निर्मित, Argus GitHub Action वर्कफ़्लो में संभावित कमजोरियों का पता लगाने के लिए टेंट-ट्रैकिंग तकनीकों और एक प्रभाव वर्गीकारक का उपयोग करता है।
अधिक जानकारी के लिए हमारी वेबसाइट - secureci.org पर जाएँ।
टेंट-ट्रैकिंग: Argus GitHub Actions वर्कफ़्लो के अंदर विशिष्ट स्रोतों से सुरक्षा-महत्वपूर्ण सिंक तक संभावित अविश्वसनीय डेटा के प्रवाह को ट्रैक करने के लिए परिष्कृत एल्गोरिदम का उपयोग करता है। इससे उन कमजोरियों की पहचान संभव होती है जो कोड इंजेक्शन हमलों का कारण बन सकती हैं।
प्रभाव वर्गीकारक: Argus पहचानी गई कमजोरियों को उच्च, मध्यम और निम्न गंभीरता वर्गों में वर्गीकृत करता है, जिससे प्रत्येक पहचानी गई कमजोरी के संभावित प्रभाव की स्पष्ट समझ मिलती है। यह शमन प्रयासों को प्राथमिकता देने में महत्वपूर्ण है।
यह Python स्क्रिप्ट GitHub रिपॉजिटरी और GitHub Actions के साथ इंटरैक्ट करने के लिए एक कमांड लाइन इंटरफ़ेस प्रदान करती है।
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 URL। प्राइवेट रिपॉजिटरी के लिए 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
यह निर्दिष्ट रिपॉजिटरी की master शाखा पर स्क्रिप्ट को repo मोड में चलाएगा।
Argus को डॉकर कंटेनर के अंदर चलाया जा सकता है। ऐसा करने के लिए, इन चरणों का पालन करें:
results फ़ोल्डर के अंदर उपलब्ध होंगेआप SARIF परिणामों को ऑनलाइन व्यूअर के माध्यम से या Visual Studio Code (VSCode) एक्सटेंशन के साथ देख सकते हैं।
ऑनलाइन व्यूअर: SARIF Web Viewer एक ऑनलाइन टूल है जो आपको SARIF फ़ाइलों को विज़ुअलाइज़ करने की अनुमति देता है। आप अपनी SARIF फ़ाइल (argus_report.sarif) को सीधे वेबसाइट पर अपलोड करके परिणाम देख सकते हैं।
VSCode एक्सटेंशन: यदि आप VSCode का उपयोग करना पसंद करते हैं, तो आप SARIF Viewer एक्सटेंशन स्थापित कर सकते हैं। एक्सटेंशन स्थापित करने के बाद, आप अपनी SARIF फ़ाइल (argus_report.sarif) को VSCode में खोल सकते हैं। परिणाम SARIF Explorer फलक में दिखाई देंगे, जो परिणामों का एक विस्तृत और नेविगेट करने योग्य दृश्य प्रदान करता है।
SARIF फ़ाइल को सावधानी से संभालना याद रखें, खासकर यदि इसमें आपके कोडबेस की संवेदनशील जानकारी हो।
यदि रन करने के लिए GitHub प्राधिकरण की आवश्यकता के साथ कोई समस्या है, तो आप GITHUB_CREDS पर्यावरण चर में username:TOKEN प्रदान कर सकते हैं। इसका उपयोग 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: एक्शन का (सापेक्ष) पथ। आप repo मोड में --action-path प्रदान नहीं कर सकते। यह पैरामीटर वैकल्पिक है।--workflow-path: वर्कफ़्लो का (सापेक्ष) पथ। आप action मोड में --workflow-path प्रदान नहीं कर सकते। यह पैरामीटर वैकल्पिक है।