
أداة فحص أمن/ثغرات/مخاطر المشروع
هناك خيارات أكثر حداثة متاحة لك ولمشروعك. إذا كنت ترغب في تولي صيانة المشروع، فلا تتردد في الاتصال بي. ستجد وسائل التواصل معي على صفحتي الشخصية.
.
.
.
.
.
.
أداة Hawkeye scanner-cli هي أداة لتمييز مخاطر الأمان والثغرات والمخاطر العامة للمشروع. وهي مصممة للتكامل مع خطافات ما قبل الالتزام وخطوط الأنابيب الخاصة بك.
يفترض Hawkeye scanner-cli أن هيكل الدليل الخاص بك يحتفظ بملفات سلسلة الأدوات في المستوى الأعلى. بشكل تقريبي، هذا ما يلخصه:
package.json في المستوى الأعلىGemfile في المستوى الأعلىrequirements.txt في المستوى الأعلىcomposer.lock في المستوى الأعلىbuild (gradle) أو target (maven)، وتتضمن ملفات .java و .jarbuild (gradle) أو target (maven)، وتتضمن ملفات .kt و .jartarget (sbt مع إضافات sbt-native-packager أو sbt-assembly)، وتتضمن ملفات .scala و .jar. راجع هذا المستودع للحصول على عرض توضيحي قيد التشغيل.Cargo.toml في المستوى الأعلىهذه القائمة ليست شاملة حيث أن الأدوات في بعض الأحيان تتطلب وجود ملفات إضافية. لفهم كيفية تحديد الوحدات النمطية ما إذا كانت قادرة على معالجة مشروع، يرجى مراجعة قسم كيف يعمل ومجلد الوحدات النمطية.
صورة Docker هي بلا شك أسهل طريقة لاستخدام الماسح الضوئي. يرجى ملاحظة أنه يجب تثبيت جذر مشروعك (مثل $PWD) على /target.
docker run --rm -v $PWD:/target hawkeyesec/scanner-cli:latest
إذا كنت تستخدم الماسح الضوئي لكتابة JSON (عبر علامتي CLI -j و --json وإعداد json في ملف .hawkeyerc)، تأكد من أنه يستخدم UID و GID الصحيحين عبر docker run -u $(id -u):$(id -g). وإلا فقد يتركك ذلك مع ملفات غير قابلة للحذف، على سبيل المثال عند التشغيل في Jenkins.
بناء Docker هو أيضًا الطريقة الموصى بها لتشغيل الماسح الضوئي في خطوط أنابيب CI الخاصة بك. هذا مثال على تشغيل Hawkeye ضد أحد مشاريعك في GoCD:
<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>
يمكنك تثبيت وتشغيل hawkeye في مشروع Node.js عبر
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 أو خاصية showCode في ملف .hawkeyerc.
^test/
# this is a comment
^README.md
استخدم hawkeye modules لعرض قائمة الوحدات النمطية المتاحة وحالتها.
> npx hawkeye modules
[info] Version: v1.4.0
[info] Module Status
[info] Enabled: files-ccnumber
[info] Scans for suspicious file contents that are likely to contain credit card numbers
[info] Enabled: files-contents
[info] Scans for suspicious file contents that are likely to contain secrets
[info] Disabled: files-entropy
[info] Scans files for strings with high entropy that are likely to contain passwords
[info] Enabled: files-secrets
[info] Scans for suspicious filenames that are likely to contain secrets
[info] Enabled: java-find-secbugs
[info] Finds common security issues in Java code with findsecbugs
[info] Enabled: java-owasp
[info] Scans Java projects for gradle/maven dependencies with known vulnerabilities with the OWASP dependency checker
[info] Enabled: node-npmaudit
[info] Checks node projects for dependencies with known vulnerabilities
[info] Enabled: node-npmoutdated
[info] Checks node projects for outdated npm modules
[info] Enabled: node-yarnaudit
[info] Checks yarn projects for dependencies with known vulnerabilities
[info] Enabled: node-yarnoutdated
[info] Checks node projects for outdated yarn modules
[info] Enabled: php-security-checker
[info] Checks whether the composer.lock contains dependencies with known vulnerabilities using security-checker
[info] Enabled: python-bandit
[info] Scans for common security issues in Python code with bandit.
[info] Enabled: python-piprot
[info] Scans python dependencies for out of date packages
[info] Enabled: python-safety
[info] Checks python dependencies for known security vulnerabilities with the safety tool.
[info] Enabled: ruby-brakeman
[info] Statically analyzes Rails code for security issues with Brakeman.
[info] Enabled: ruby-bundler-scan
[info] Scan for Ruby gems with known vulnerabilities using bundler
استخدم hawkeye scan لبدء المسح:
> npx hawkeye scan --help
[info] Version: v1.3.0
Usage: hawkeye-scan [options]
Options:
-a, --all Scan all files, regardless if a git repo is found. Defaults to tracked files in git repositories.
-t, --target [/path/to/project] The location to scan. Defaults to $PWD.
-f, --fail-on [low|medium|high|critical] Set the level at which hawkeye returns non-zero status codes. Defaults to low.
-m, --module [module name] Run specific module. Defaults to all applicable modules.
-e, --exclude [pattern] Specify one or more exclusion patterns (eg. test/*). Can be specified multiple times.
-j, --json [/path/to/file.json] Write findings to file.
-s, --sumo [https://sumologic-http-connector] Write findings to SumoLogic.
-H, --http [https://your-site.com/api/results] Write findings to a given url.
--show-code Shows the code the module uses for reporting, useful for ignoring certain false positives
-g, --staged Scan only git-staged files.
-h, --help output usage information
يستجيب 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، يمكن للماسح الضوئي إرسال النتائج إلى أي نقطة نهاية HTTP تقبل رسائل POST.
hawkeye scan --http http://your.logging.foobar/endpoint
سيتم إرسال النتائج مع User-Agent: hawkeye. على غرار مخرجات وحدة التحكم، سيتم إرسال التالي JSON عبر POST لكل اكتشاف:
{
"module": "files-contents",
"level": "critical",
"offender": "testfile3.yml",
"description": "Private key in file",
"mitigation": "Check line number: 3"
}
تم تصميم Hawkeye ليكون قابلًا للتوسيع عن طريق إضافة وحدات نمطية وكتّاب.
الوحدات النمطية هي ببساطة أجزاء صغيرة من الكود إما تنفذ منطقها الخاص، أو تغلف أداة طرف ثالث وتوحد المخرجات. لا يتم تشغيلها إلا إذا تم استيفاء المعايير المطلوبة. على سبيل المثال: وحدة npm outdated لن تعمل إلا إذا تم اكتشاف package.json في هدف المسح - ونتيجة لذلك، لا تحتاج إلى إخبار Hawkeye بنوع المشروع الذي تفحصه.
-m files-entropy.Cargo.lock يحتوي على تبعيات ذات ثغرات معروفة باستخدام cargo auditإذا كانت لديك فكرة لوحدة نمطية، فلا تتردد في فتح طلب ميزة في قسم المشكلات. إذا كان لديك القليل من الوقت، فيرجى التفكير في إرسال طلب سحب إلينا. لرؤية كيفية عمل الوحدات النمطية، يرجى التوجه إلى مجلد الوحدات النمطية لمعرفة كيفية عمل الأمور.