
कोड में उजागर क्रेडेंशियल्स का पता लगाने के लिए regex नियमों, lexer-आधारित सिमैंटिक विश्लेषण और हैश्ड-वैल्यू मिलान को संयोजित करने वाला ऑफ़लाइन सीक्रेट्स स्कैनर, जो SARIF आउटपुट के साथ काम करता है।
बिल्कुल नहीं!
LLM-हाइप के इस युग में भी, DeepSecrets पूरी तरह से आपकी मशीन पर ही चलता है — आपको ऑफ़लाइन, सुरक्षित रूप से और मुफ़्त में बेहतरीन परिणाम देता है।
अधिकांश मौजूदा स्कैनर वास्तव में कोड को "समझते" नहीं हैं। इसके बजाय, वे केवल टेक्स्ट को पार्स करते हैं और उनकी कवरेज खराब होती है।
DeepSecrets क्लासिक regex स्कैनर और पूर्ण-स्तरीय व्यावसायिक SAST टूल्स के बीच की खाई को पाटता है। यह क्लासिक regex-आधारित स्कैनिंग रणनीति का विस्तार करता है और भारी रूप से सिमैंटिक कोड विश्लेषण, खतरनाक वेरिएबल डिटेक्शन, और संदर्भ-जागरूक एन्ट्रॉपी विश्लेषण पर निर्भर करता है। इसका मतलब है कि सीक्रेट उम्मीदवार हमेशा सिमैंटिक रूप से सही होते हैं। हम लेक्सिंग और पार्सिंग तकनीकों का उपयोग करके 500+ भाषाओं और फ़ॉर्मेट्स में सच्ची कोड समझ हासिल करते हैं।
DeepSecrets शून्य ज्ञान के साथ क्रेडेंशियल्स खोजने का एक नया तरीका भी पेश करता है: HashedSecret Engine। बस अपने ज्ञात प्रोडक्शन सीक्रेट्स के हैश किए गए मान प्रदान करें, और टूल उन्हें आपके कोड में सादे टेक्स्ट में उजागर पाएगा।
DeepSecrets v2.0 का मूल्यांकन (जून 2026) SecretBench बेंचमार्क के विरुद्ध किया गया, जिसमें इसने पारंपरिक फ्लैट-टेक्स्ट स्कैनरों को पीछे छोड़ दिया:
(आप मेरे HackerNoon लेख में पूरी अंदरूनी कहानी और बेंचमार्क विवरण यहाँ पढ़ सकते हैं)
pip के माध्यम से Github से
$ pip install git+https://github.com/ntoskernel/deepsecrets.git
PyPi से
$ pip install deepsecrets
DeepSecrets को Python 3.11 या उससे बाद के संस्करण की आवश्यकता है।
स्कैन चलाने का सबसे आसान तरीका:
$ deepsecrets --target-dir /path/to/your/code --outformat dojo-sarif --outfile report.json
यह डिफ़ॉल्ट कॉन्फ़िगरेशन का उपयोग करके /path/to/your/code पर स्कैन चलाएगा:
SARIF प्रारूप में एक रिपोर्ट (DefectDojo और GitHub Security के साथ संगत) report.json में सहेजी जाएगी।
--help कमांड आपका मार्गदर्शन करने के लिए हमेशा तैयार है, लेकिन यहाँ कुछ प्रमुख फ़्लैग दिए गए हैं जिनका उपयोग आप स्कैन को अपने वातावरण के अनुसार ढालने के लिए कर सकते हैं:
--regex-rules /path/to/rules.json: अपना स्वयं का कस्टम regex नियमसेट प्रदान करें।--hashed-values /path/to/hashes.json: ज्ञात प्रोडक्शन सीक्रेट्स की पहले से हैश की गई सूची प्रदान करें ताकि उन्हें सुरक्षित रूप से खोजा जा सके।--excluded-paths /path/to/exclusions.json: स्कैनिंग के दौरान अनदेखे जाने वाले डिफ़ॉल्ट पथों को ओवरराइड या विस्तारित करें।--deep-max-size BYTES: इससे बड़ी फ़ाइलों (डिफ़ॉल्ट 250,000 बाइट्स) को तेज़ विश्लेषण मिलता है: regex नियम और वेरिएबल खोज, बिना भाषा लेक्सर के। बड़ी फ़ाइलें अधिकतर जनरेट की गई या मिनिफ़ाइड होती हैं, इन पर लेक्सर स्कैन का अधिकांश समय लेता है और शायद ही कभी वहाँ अधिक पाता है। 0 हर फ़ाइल को पूर्ण विश्लेषण देता है।--skip-bundles: अन्य पथ बहिष्करणों के अतिरिक्त, मिनिफ़ाइड JavaScript, सोर्स मैप्स और बंडलों (*.min.js, *.map, *.bundle.js) को पूरी तरह छोड़ें।--confidence-level {all,low,medium,high,very-high}: रिपोर्ट करने के लिए न्यूनतम विश्वास स्तर (डिफ़ॉल्ट low, हर निष्कर्ष)। medium, high और very-high क्रमशः 3, 6 और 9 या अधिक विश्वास रखते हैं; all उन regex मिलानों को भी रिपोर्ट करता है जिन्हें स्कैनर ने सीक्रेट नहीं माना (प्लेसहोल्डर, उदाहरण), एक -INFO नियम आईडी के साथ।--report-diagnostics: लक्ष्य के अंतर्गत मिली हर फ़ाइल को उसकी स्थिति, स्कैन समय, छोड़ने का कारण और विश्लेषण गहराई के साथ SARIF रिपोर्ट में जोड़ें।--regex-candidate-scoring-rules /path/to/rules.json: regex मिलानों को रिपोर्ट करने से पहले उनका मूल्यांकन करने के लिए अपने स्वयं के नियम प्रदान करें। regex मिलानों को बिना मूल्यांकन के रिपोर्ट करने के लिए फ़्लैग को कोई मान न दें।--multiprocessing-context {forkserver,spawn,fork}: वर्कर प्रक्रियाएँ कैसे शुरू होती हैं। जहाँ प्लेटफ़ॉर्म में उपलब्ध हो (Linux, macOS) वहाँ डिफ़ॉल्ट forkserver है: वर्कर उस स्कैनर को साझा करते हैं जो पहले से एक सर्वर प्रक्रिया में लोड है। Windows spawn का उपयोग करता है। तीनों समान निष्कर्ष देते हैं।--disable-masking: आउटपुट रिपोर्ट में संभावित सीक्रेट्स को बिना मास्क किए रखें (नीचे सावधानी देखें)।--ci / --no-ci: CI मोड चालू या बंद करें। CI मोड लाइव प्रगति प्रदर्शन के बजाय हर 30 सेकंड में एक सादी प्रगति पंक्ति प्रिंट करता है। यह CI सेवाओं (GitHub Actions, GitLab CI, Jenkins और अन्य) के अंदर और जब भी आउटपुट टर्मिनल न हो, स्वयं चालू हो जाता है।eq. .github/workflows/deepsecrets.yml
name: DeepSecrets Scan
on: [push, pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install DeepSecrets
run: pip install deepsecrets
- name: Run Scan
run: deepsecrets --target-dir . --outformat dojo-sarif --outfile report.sarif
continue-on-error: true
- name: Upload SARIF report
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: report.sarif
v1.3.0 से, आपके pipeline artifacts की सुरक्षा के लिए रिपोर्ट के अंदर संभावित secrets को स्वचालित रूप से मास्क किया जाता है। यदि आवश्यक हो तो इसे --disable-masking फ़्लैग के माध्यम से बंद करें।
मास्किंग downstream प्लेटफ़ॉर्म (जैसे Github) के deduplication logic को नहीं तोड़ती, क्योंकि रिपोर्ट में partialFingerprints अनुभाग raw डेटा के आधार पर सही ढंग से भरा जाता है।
[!Caution]
यदि आप मास्किंग बंद करके DeepSecrets को अपने CI pipeline में एकीकृत करते हैं, तो संभवतः आप अपने CI logs और artifacts के अंदर अपने secrets को फिर से लीक कर देंगे।
प्रत्येक finding को एक confidence score मिलता है। हालाँकि, अलग-अलग सुरक्षा प्लेटफ़ॉर्म SARIF metrics को अलग तरह से पार्स करते हैं। आधुनिक ASPM डैशबोर्ड में संगतता सुनिश्चित करने के लिए, DeepSecrets निम्नलिखित करता है:
Virtual Subrules (rules[]): confidence tier के अनुसार गतिशील रूप से rules उत्पन्न करता है, S105-LOW से लेकर -MEDIUM और -HIGH से होते हुए S105-VERY-HIGH तक (और अस्वीकृत matches के लिए -INFO, जिन्हें --confidence-level all रिपोर्ट करता है)। यह GitHub Security और DefectDojo को native parsers को तोड़े बिना semantic precision variance को ठीक से मैप करने के लिए बाध्य करता है।
Deterministic Result Level: टूल हमेशा results[] मॉडल में स्पष्ट रूप से level: error सेट करता है। यह CI/CD pipelines और पुराने SAST parsers के लिए एक सार्वभौमिक fallback के रूप में कार्य करता है, जिससे यह सुनिश्चित होता है कि उजागर secrets व्यक्तिगत rule व्याख्याओं की परवाह किए बिना builds को विश्वसनीय रूप से तोड़ें या Pull Requests को ब्लॉक करें।
Contextual Messages: raw numeric confidence score को natively result.message.text में इंजेक्ट करता है ताकि सुरक्षा विश्लेषक इसे अपने डैशबोर्ड पर तुरंत देख सकें।
regex जाँचों के लिए अंतर्निहित ruleset /deepsecrets/rules/regexes.json में स्थित है। आप इस प्रारूप का पालन करने और एक कस्टम ruleset बनाने के लिए स्वतंत्र हैं।
hashed जाँचों के लिए उदाहरण ruleset /tests/fixtures/hashed_secrets.json में स्थित है। आप इस प्रारूप का पालन करने और एक कस्टम ruleset बनाने के लिए स्वतंत्र हैं।
अपने repository के अंदर plaintext में उन्हें उजागर किए बिना ज्ञात production secrets को खोजने के लिए, उनके hashes वाला एक JSON प्रदान करें: