
एक परियोजना सुरक्षा/भेद्यता/जोखिम स्कैनिंग उपकरण
आपके और आपके प्रोजेक्ट के लिए बाजार में बहुत से आधुनिक विकल्प उपलब्ध हैं। यदि आप प्रोजेक्ट के रखरखाव को अपने हाथ में लेना चाहते हैं, तो कृपया मुझसे संपर्क करने में संकोच न करें। आप मुझ तक पहुँचने के तरीके मेरे व्यक्तिगत होमपेज पर पा सकते हैं।
.
.
.
.
.
.
Hawkeye scanner-cli एक प्रोजेक्ट सुरक्षा, भेद्यता और सामान्य जोखिम को उजागर करने वाला उपकरण है। इसे आपके pre-commit हुक्स और आपके पाइपलाइनों में एकीकृत करने के लिए डिज़ाइन किया गया है।
Hawkeye scanner-cli यह मानता है कि आपकी निर्देशिका संरचना इस प्रकार है कि यह टूलचेन की फ़ाइलों को शीर्ष स्तर पर रखता है। मोटे तौर पर, यह इस प्रकार है:
package.json होता हैGemfile होगाrequirements.txt होगाcomposer.lock होगाbuild (gradle) या target (maven) फ़ोल्डर होगा, और इसमें .java और .jar फ़ाइलें शामिल होंगीbuild (gradle) या target (maven) फ़ोल्डर होगा, और इसमें .kt और .jar फ़ाइलें शामिल होंगीtarget (sbt with sbt-native-packager or sbt-assembly plugins) फ़ोल्डर होगा, और इसमें .scala और .jar फ़ाइलें शामिल होंगी। चल रहे डेमो के लिए इस रेपो को देखें।Cargo.toml होगायह पूरी तरह से व्यापक नहीं है क्योंकि कभी-कभी उपकरणों को और अधिक फ़ाइलों की आवश्यकता होती है। यह समझने के लिए कि मॉड्यूल कैसे तय करते हैं कि वे किसी प्रोजेक्ट को संभाल सकते हैं या नहीं, कृपया यह कैसे काम करता है अनुभाग और मॉड्यूल फ़ोल्डर देखें।
Docker इमेज स्कैनर का उपयोग करने का सबसे आसान तरीका है। कृपया ध्यान दें कि आपके प्रोजेक्ट रूट (जैसे $PWD) को /target पर माउंट किया जाना चाहिए।
docker run --rm -v $PWD:/target hawkeyesec/scanner-cli:latest
यदि आप स्कैनर का उपयोग JSON लिखने के लिए कर रहे हैं (-j और --json CLI फ़्लैग्स और .hawkeyerc में json सेटिंग के माध्यम से), तो सुनिश्चित करें कि यह सही UID और GID का उपयोग करता है docker run -u $(id -u):$(id -g) के माध्यम से। अन्यथा यह आपको अपरिवर्तनीय फ़ाइलें छोड़ सकता है, उदाहरण के लिए जब Jenkins में चलाया जाता है।
Docker बिल्ड आपके CI पाइपलाइनों में स्कैनर चलाने का अनुशंसित तरीका भी है। यह GoCD में आपके एक प्रोजेक्ट के विरुद्ध Hawkeye चलाने का एक उदाहरण है:
<pipeline name="security-scan">
<stage name="Hawkeye" cleanWorkingDir="true">
<jobs>
<job name="scan">
<tasks>
<exec command="docker">
<arg>pull</arg>
<arg>hawkeyesec/scanner-cli</arg>
<runif status="passed" />
</exec>
<exec command="bash">
<arg>-c</arg>
<arg>docker run --rm -v $PWD:/target hawkeyesec/scanner-cli:latest</arg>
<runif status="passed" />
</exec>
</tasks>
</job>
</jobs>
</stage>
</pipeline>
आप Node.js प्रोजेक्ट में hawkeye को स्थापित और चला सकते हैं:
npm install --save-dev @hawkeyesec/scanner-cli
npx hawkeye scan
यह विधि Node.js प्रोजेक्ट में अनुशंसित है, जहां अन्य टूलचेन (जैसे python, ruby) की आवश्यकता नहीं है।
इस विधि के साथ, git pre-commit हुक (जैसे pre-commit पैकेज के माध्यम से) में स्कैनर को लागू करने की भी सिफारिश की जाती है ताकि यदि समस्याएं पाई जाती हैं तो कमिट विफल हो जाए।
आप अपने प्रोजेक्ट रूट में .hawkeyerc और .hawkeyeignore फ़ाइलों के माध्यम से स्कैनर को कॉन्फ़िगर कर सकते हैं।
.hawkeyerc फ़ाइल एक JSON फ़ाइल है जो आपको कॉन्फ़िगर करने देती है ...
{
"all": true|false,
"staged": true|false,
"modules": ["files-ccnumber", "java-owasp", "java-find-secbugs"],
"sumo": "http://your.sumologic.foobar/collector",
"http": "http://your.logger.foobar/collector",
"json": "log/results.json",
"failOn": "low"|"medium"|"high"|"critical",
"showCode": true|false
}
.hawkeyeignore फ़ाइल रेगुलर एक्सप्रेशन का एक संग्रह है जो पथ और मॉड्यूल त्रुटि कोड को स्कैन से बाहर करने के लिए मेल खाता है, और --exclude फ़्लैग के उपयोग के बराबर है। # से शुरू होने वाली पंक्तियों को टिप्पणी माना जाता है।
कृपया ध्यान दें कि रेगुलर एक्सप्रेशन में आरक्षित कोई भी विशेष वर्ण (-[]{}()*+?.,^$|#\s) को शाब्दिक रूप में उपयोग करने पर एस्केप करने की आवश्यकता है!
कृपया यह भी ध्यान दें कि मॉड्यूल त्रुटि कोड आमतौर पर नहीं दिखाए जाते हैं, क्योंकि वे मुख्य रूप से उपयोगकर्ता के लिए प्रासंगिक नहीं होते हैं। यदि आप किसी विशेष गलत सकारात्मक को बाहर करना चाहते हैं, तो आप --show-code फ़्लैग या .hawkeyerc में showCode प्रॉपर्टी के साथ मॉड्यूल त्रुटि कोड प्रदर्शित कर सकते हैं।
^test/
# यह एक टिप्पणी है
^README.md
उपलब्ध मॉड्यूल और उनकी स्थिति को सूचीबद्ध करने के लिए hawkeye modules का उपयोग करें।
> npx hawkeye modules
[info] संस्करण: v1.4.0
[info] मॉड्यूल स्थिति
[info] सक्षम: files-ccnumber
[info] उन संदिग्ध फ़ाइल सामग्री की जाँच करता है जिनमें क्रेडिट कार्ड नंबर होने की संभावना है
[info] सक्षम: files-contents
[info] उन संदिग्ध फ़ाइल सामग्री की जाँच करता है जिनमें रहस्य होने की संभावना है
[info] अक्षम: files-entropy
[info] उच्च एंट्रॉपी वाले स्ट्रिंग्स के लिए फ़ाइलों की जाँच करता है जिनमें पासवर्ड होने की संभावना है
[info] सक्षम: files-secrets
[info] उन संदिग्ध फ़ाइल नामों की जाँच करता है जिनमें रहस्य होने की संभावना है
[info] सक्षम: java-find-secbugs
[info] findsecbugs के साथ जावा कोड में सामान्य सुरक्षा मुद्दों की पहचान करता है
[info] सक्षम: java-owasp
[info] OWASP निर्भरता जाँचकर्ता के साथ ज्ञात कमजोरियों वाले gradle/maven निर्भरता के लिए जावा प्रोजेक्ट्स की जाँच करता है
[info] सक्षम: node-npmaudit
[info] ज्ञात कमजोरियों वाले निर्भरता के लिए नोड प्रोजेक्ट्स की जाँच करता है
[info] सक्षम: node-npmoutdated
[info] पुराने npm मॉड्यूल के लिए नोड प्रोजेक्ट्स की जाँच करता है
[info] सक्षम: node-yarnaudit
[info] ज्ञात कमजोरियों वाले निर्भरता के लिए यार्न प्रोजेक्ट्स की जाँच करता है
[info] सक्षम: node-yarnoutdated
[info] पुराने यार्न मॉड्यूल के लिए नोड प्रोजेक्ट्स की जाँच करता है
[info] सक्षम: php-security-checker
[info] security-checker का उपयोग करके composer.lock में ज्ञात कमजोरियों वाले निर्भरता की जाँच करता है
[info] सक्षम: python-bandit
[info] बैंडिट के साथ पायथन कोड में सामान्य सुरक्षा मुद्दों की जाँच करता है।
[info] सक्षम: python-piprot
[info] पुराने पैकेजों के लिए पायथन निर्भरता की जाँच करता है
[info] सक्षम: python-safety
[info] सुरक्षा उपकरण के साथ पायथन निर्भरता में ज्ञात सुरक्षा कमजोरियों की जाँच करता है।
[info] सक्षम: ruby-brakeman
[info] Brakeman के साथ Rails कोड का स्थिर विश्लेषण करता है।
[info] सक्षम: ruby-bundler-scan
[info] बंडलर का उपयोग करके ज्ञात कमजोरियों वाले रूबी रत्नों की जाँच करता है
स्कैन शुरू करने के लिए hawkeye scan का उपयोग करें:
> npx hawkeye scan --help
[info] संस्करण: v1.3.0
उपयोग: hawkeye-scan [विकल्प]
विकल्प:
-a, --all सभी फ़ाइलों को स्कैन करें, भले ही git रेपो मिले या नहीं। डिफ़ॉल्ट रूप से git रिपॉजिटरी में ट्रैक की गई फ़ाइलें।
-t, --target [/path/to/project] स्कैन करने का स्थान। डिफ़ॉल्ट $PWD है।
-f, --fail-on [low|medium|high|critical] उस स्तर को सेट करें जिस पर hawkeye गैर-शून्य स्थिति कोड लौटाता है। डिफ़ॉल्ट low है।
-m, --module [module name] विशिष्ट मॉड्यूल चलाएं। डिफ़ॉल्ट रूप से सभी लागू मॉड्यूल।
-e, --exclude [pattern] एक या अधिक बहिष्करण पैटर्न निर्दिष्ट करें (जैसे test/*)। कई बार निर्दिष्ट किया जा सकता है।
-j, --json [/path/to/file.json] निष्कर्षों को फ़ाइल में लिखें।
-s, --sumo [https://sumologic-http-connector] निष्कर्षों को SumoLogic में लिखें।
-H, --http [https://your-site.com/api/results] निष्कर्षों को दिए गए URL पर लिखें।
--show-code मॉड्यूल द्वारा रिपोर्टिंग के लिए उपयोग किए जाने वाले कोड को दिखाता है, कुछ गलत सकारात्मक को अनदेखा करने के लिए उपयोगी
-g, --staged केवल git-staged फ़ाइलों को स्कैन करें।
-h, --help उपयोग जानकारी आउटपुट करें
scanner-cli निम्नलिखित एग्जिट कोड के साथ प्रतिक्रिया करता है:
यदि आप कंसोल लॉगर आउटपुट को रीडायरेक्ट करना चाहते हैं, तो अनुशंसित विधि stdout पर लैच करना है। इस उदाहरण में, हम JSON और stdout दोनों परिणामों का उपयोग कर रहे हैं:
docker run --rm -v $PWD:/target hawkeyesec/scanner-cli:latest -j hawkeye-results.json -f critical 2>&1 | tee hawkeye-results.txt
डिफ़ॉल्ट रूप से, स्कैनर अपने परिणामों को तालिका के रूप में कंसोल पर आउटपुट करता है।
परिणाम आपकी पसंद के SumoLogic कलेक्टर को भेजे जा सकते हैं। इस उदाहरण में, हमारे पास एक एकल HTTP स्रोत वाला एक कलेक्टर है।
hawkeye scan --sumo https://collectors.us2.sumologic.com/receiver/v1/http/your-http-collector-url
SumoLogic में, _collector="hawkeye" | json auto खोजें:

SumoLogic उदाहरण के समान, स्कैनर POST संदेश स्वीकार करने वाले किसी भी HTTP एंडपॉइंट पर परिणाम भेज सकता है।
hawkeye scan --http http://your.logging.foobar/endpoint
परिणाम User-Agent: hawkeye के साथ भेजे जाएंगे। कंसोल आउटपुट के समान, प्रत्येक निष्कर्ष के लिए निम्नलिखित JSON POST किया जाएगा:
{
"module": "files-contents",
"level": "critical",
"offender": "testfile3.yml",
"description": "फ़ाइल में निजी कुंजी",
"mitigation": "लाइन नंबर जाँचें: 3"
}
Hawkeye को मॉड्यूल और राइटर जोड़कर विस्तार योग्य बनाया गया है।
मॉड्यूल मूल रूप से कोड के छोटे-छोटे टुकड़े होते हैं जो या तो अपना तर्क लागू करते हैं, या तीसरे पक्ष के उपकरण को लपेटते हैं और आउटपुट को मानकीकृत करते हैं। वे तभी चलते हैं जब आवश्यक मानदंड पूरे होते हैं। उदाहरण के लिए: npm outdated मॉड्यूल तभी चलेगा जब स्कैन लक्ष्य में package.json का पता चले - परिणामस्वरूप, आपको Hawkeye को यह बताने की आवश्यकता नहीं है कि आप किस प्रकार के प्रोजेक्ट को स्कैन कर रहे हैं।
-m files-entropy स्विच का उपयोग करके चलाएं।Cargo.lock में ज्ञात कमजोरियों वाले निर्भरता की जाँच करता हैयदि आपके पास किसी मॉड्यूल के लिए कोई विचार है, तो कृपया समस्या अनुभाग में एक सुविधा अनुरोध खोलने में संकोच न करें। यदि आपके पास कुछ समय बचा है, तो कृपया हमें एक पुल अनुरोध भेजने पर विचार करें। मॉड्यूल को काम करते देखने के लिए, कृपया मॉड्यूल फ़ोल्डर में जाएँ ताकि पता चल सके कि चीजें कैसे काम कर रही हैं।