
स्टैटिक विश्लेषण उपकरणों से प्राप्त SARIF आउटपुट को प्रोसेस करके सोर्स कोड में हार्ड-कोडेड सीक्रेट्स का पता लगाता है और उन्हें रेडैक्ट करता है, जिससे मूल सीक्रेट्स के बिना एक साफ़ कॉपी तैयार होती है।
SecretScrub आपके सभी गंदे हार्ड-कोडित रहस्यों को साफ कर देगा। यह स्क्रिप्ट SARIF फ़ाइल प्रारूप में फ़ाइलों को संसाधित करती है, जो विभिन्न स्थैतिक विश्लेषण उपकरणों द्वारा उत्पन्न होता है। यह उपकरण फ़ाइल सिस्टम के भीतर एक निर्देशिका को स्कैन करता है, SARIF फ़ाइलों में पहचाने गए रहस्यों के सभी उदाहरणों को निर्देशिका की एक नई प्रति में रिडैक्ट करता है। चूँकि रहस्य अक्सर Git इतिहास में रहते हैं, परिणामी प्रति में .git निर्देशिका को छोड़ दिया जाता है।
हालाँकि SARIF एक उद्योग-मानक प्रारूप है, विभिन्न उपकरणों द्वारा निर्मित SARIF आउटपुट में भिन्नताएँ होती हैं। परिणामस्वरूप, वर्तमान में केवल निम्नलिखित उपकरण समर्थित हैं।
| टूल | संस्करण | टिप्पणियाँ |
|---|---|---|
| Trivy | 0.37.0 | |
| Gitleaks | 8.15.2 | केवल उन रिपोर्टों के साथ काम करता है जो --no-git विकल्प का उपयोग करके किसी फ़ाइल सिस्टम को स्कैन करने के लिए उत्पन्न की गई हों, लेकिन अंतर्निहित Git रिपॉज़िटरी को नहीं, यदि कोई हो। |
| ccs | 1d055c542dbdb6e7b96279d4df03ea9b556eb27a | Ccs आउटपुट को साथ दी गई ccs2sarif.py स्क्रिप्ट का उपयोग करके SARIF प्रारूप में पूर्व-संसाधित किया जाना चाहिए। |
| cq | 011697a9e371e37a6ac9f714b3980672bc6108e7 | CQ आउटपुट को साथ दी गई cq2sarif.py स्क्रिप्ट का उपयोग करके SARIF प्रारूप में पूर्व-संसाधित किया जाना चाहिए। क्योंकि CQ आउटपुट बहुत शोर-भरा (noisy) हो सकता है, इसलिए redaction ऑपरेशन को अलग से करने या फ़ाइलों का नाम इस प्रकार रखने की अनुशंसा की जाती है कि CQ फ़ाइल निर्देशिका में सबसे अंत में आए। |
| BinDetect | एक अंतर्निहित उपकरण जो बाइनरी फ़ाइलों का पता लगाता है जिन्हें आमतौर पर अन्य, टेक्स्ट-उन्मुख उपकरणों द्वारा नजरअंदाज कर दिया जाता है। |
SARIF आउटपुट में भिन्नताओं के कारण, यह संभव है कि उपकरण के भविष्य के संस्करणों द्वारा उत्पन्न आउटपुट सही ढंग से काम न करे।
निर्भरताएँ requirements.txt फ़ाइल में सूचीबद्ध हैं। संक्षेप में, निम्नलिखित पैकेज आवश्यक हैं:
| पैकेज |
|---|
$ python secretscrub.py --input <path> --srcdir <path> --outdir <path> [--report <path>]
$ python secretscrub.py --analyse-with <analysis-tool-list> --srcdir <path> --outdir <path> [--report <path>]
नोट: कार्य करने के लिए, उपकरण वर्तमान सिस्टम पर मौजूद और स्थापित होने चाहिए:
इस सोर्स ट्री से निर्मित डॉकर इमेज में SecretScrub टूल और Trivy, GitLeaks, ccs तथा cq टूल की प्रतियाँ शामिल हैं।
यदि इसे secretscrub:latest टैग के साथ बनाया गया है, तो निम्न कमांड एक पूर्ण विश्लेषण और रिडैक्शन ऑपरेशन को साथ वाली रिपोर्ट के साथ आरंभ करेगा।
sudo docker run -it -v <source-path>:/src:ro -v <output-path>:/out secretscrub:latest --analyse-with trivy,gitleaks,bindetect
ध्यान दें कि इसमें कंटेनर के भीतर दो वॉल्यूम मैप करना शामिल है। पहला -- <source-path> -- में मूल, असंपादित स्रोत कोड होना चाहिए। दूसरा -- <output-path> -- रिडैक्टेड आउटपुट और रिपोर्ट प्राप्त करेगा।
निम्न उदाहरण मानते हैं कि स्रोत src नामक उपनिर्देशिका में संग्रहीत है, और SecretScrub tools नामक उपनिर्देशिका में स्थापित है।
$ python tools/secretscrub.py --analse-with trivy,gitleaks,bindetect --srcdir src --outdir src-redacted
sudo docker run -it -v <source-path>:/src:ro -v <output-path>:/out secretscrub:latest --analyse-with trivy,gitleaks,bindetect
| संस्करण |
|---|
| asn1 | 2.7.0 |
| filetype | 1.2.0 |
| py7zr | 0.20.5 |
| pyzipper | 0.3.6 |
| regex | 2023.5.5 |
| sarif-tools | 1.0.0 |
| पैरामीटर | परिभाषा |
|---|
| input | संसाधित किए जाने वाले SARIF परिणामों का स्थान। इसमें कई SARIF फ़ाइलें हो सकती हैं, जो विभिन्न समर्थित उपकरणों का उपयोग करके उत्पन्न की जा सकती हैं। |
| srcdir | वह मूल स्रोत कोड जिसे स्कैन करके उन CQ परिणामों को उत्पन्न किया गया जिन्हें संसाधित किया जाना है। |
| outdir | वह स्थान जहाँ रिडैक्टेड स्रोत फ़ाइलें संग्रहीत की जानी हैं। |
| placeholder | सभी पहचाने गए रहस्यों के स्थान पर डाला जाने वाला प्लेसहोल्डर। यह निम्नलिखित प्रतिस्थापनों को स्वीकार कर सकता है: - ${tool} रहस्य का पता लगाने के लिए प्रयुक्त उपकरण का नाम- ${rule} रहस्य का पता लगाने के लिए प्रयुक्त नियम का नाम- ${regex} रहस्य का पता लगाने के लिए प्रयुक्त नियम से जुड़ा रेगुलर एक्सप्रेशन- ${yaml} एक YAML फ्लो शैली संरचना जिसमें (यदि ज्ञात हो) केवल उपकरण और रहस्य का पता लगाने के लिए प्रयुक्त नियम के नाम होते हैं- ${yaml_regex} एक YAML फ्लो शैली संरचना जिसमें (यदि ज्ञात हो) उपकरण और नियम के नाम तथा रहस्य का पता लगाने के लिए प्रयुक्त रेगुलर एक्सप्रेशन शामिल होते हैं |
| process-archives | यह इंगित करने के लिए एक स्विच |
| report | उत्पादित की जाने वाली CSV रिपोर्ट का स्थान और नाम, जिसमें साफ़ किए गए रहस्यों का विवरण होगा। |
| report-encryption | यदि कोई रिपोर्ट फ़ाइल उत्पन्न होती है, तो उपयोग की जाने वाली एन्क्रिप्शन विधि। संभावित मान: none, zip-aes256। डिफ़ॉल्ट: zip-aes256 |
| log-level | उपकरण के आउटपुट के लिए उपयोग किया जाने वाला लॉगिंग स्तर। संभावित मान: critical, fatal, error, warning, info, debug। डिफ़ॉल्ट: info |
| पैरामीटर | परिभाषा |
|---|
| analyse-with | चलाने के लिए उपकरणों की अल्पविराम-पृथक सूची। इसमें निम्न में से कोई भी शामिल हो सकता है: trivy, gitleaks, ccs। cq, bindetect |
| srcdir | वह मूल स्रोत कोड जिसे स्कैन करके उन CQ परिणामों को उत्पन्न किया गया जिन्हें संसाधित किया जाना है। |
| outdir | वह स्थान जहाँ रिडैक्टेड स्रोत फ़ाइलें संग्रहीत की जानी हैं। |
| placeholder | सभी पहचाने गए रहस्यों के स्थान पर डाला जाने वाला प्लेसहोल्डर। यह निम्नलिखित प्रतिस्थापनों को स्वीकार कर सकता है: - ${tool} रहस्य का पता लगाने के लिए प्रयुक्त उपकरण का नाम- ${rule} रहस्य का पता लगाने के लिए प्रयुक्त नियम का नाम- ${regex} रहस्य का पता लगाने के लिए प्रयुक्त नियम से जुड़ा रेगुलर एक्सप्रेशन- ${yaml} एक YAML फ्लो शैली संरचना जिसमें (यदि ज्ञात हो) केवल उपकरण और रहस्य का पता लगाने के लिए प्रयुक्त नियम के नाम होते हैं- ${yaml_regex} एक YAML फ्लो शैली संरचना जिसमें (यदि ज्ञात हो) उपकरण और नियम के नाम तथा रहस्य का पता लगाने के लिए प्रयुक्त रेगुलर एक्सप्रेशन शामिल होते हैं |
| report | उत्पादित की जाने वाली CSV रिपोर्ट का स्थान और नाम, जिसमें साफ़ किए गए रहस्यों का विवरण होगा। |
| report-encryption | यदि कोई रिपोर्ट फ़ाइल उत्पन्न होती है, तो उपयोग की जाने वाली एन्क्रिप्शन विधि। संभावित मान: none, zip-aes256। डिफ़ॉल्ट: zip-aes256 |
| log-level | उपकरण के आउटपुट के लिए उपयोग किया जाने वाला लॉगिंग स्तर। संभावित मान: critical, fatal, error, warning, info, debug। डिफ़ॉल्ट: info |
| टूल | टिप्पणियाँ |
|---|
| Trivy | trivy कमांड स्थापित होना चाहिए और पाथ में उपलब्ध होना चाहिए। |
| GitLeaks | gitleaks कमांड स्थापित होना चाहिए और पाथ में उपलब्ध होना चाहिए। |
| ccs | ccs.py फ़ाइल उस निर्देशिका के भीतर ccs नामक उपनिर्देशिका में स्थित होनी चाहिए जिसमें secretscrub.py फ़ाइल मौजूद है। |
| cq | cq.py और fn.py फ़ाइलें उस निर्देशिका के भीतर cq नामक उपनिर्देशिका में स्थित होनी चाहिए जिसमें secretscrub.py फ़ाइल मौजूद है। |
| bindetect | यह वर्तमान में secretscrub के साथ शामिल है और किसी और स्थापना की आवश्यकता नहीं है। |