
تطبيق ويب أحادي الملف يعمل دون اتصال يستوعب ملفات SBOM بصيغ CycloneDX وSPDX وsyft، ويشغّل مجموعة من ماسحات CVE، ويثري النتائج بـ EPSS وCISA-KEV وnuclei، ويصدّر SARIF وCSAF وPDF.
تطبيق ويب محلي ثنائي واحد لـ فحص ملفات SBOM (قائمة مكونات البرمجيات). ارفع ملف SBOM أو استورد مجلدًا منها، وحلّل كلًا منها باستخدام مجموعة من الأدوات المستقلة، وراجع النتائج الموحّدة في واجهة محلية واحدة، وصدّر النتيجة بثمانية صيغ. لا تثبيت، لا وصول إلى الشبكة، لا قياس عن بُعد.
NOASSERTION الصريح من المورّد والحقل الغائب ببساطة.تسرد الصفحة الرئيسية (/) كل ملف SBOM مخزّن وتبقى قابلة للاستخدام مع نمو المجموعة:
log4j أو openssl يجد كل ملف SBOM يتضمن ذلك المكوّن. الاستعلام محدود الطول ويُحلَّل بتسامح.كل أداة اختيارية في وقت التشغيل ويُكتشف وجودها على PATH (تجاوز الملف التنفيذي بـ SBA_TOOL_<NAME>_BIN). لا تعتمد النتائج أبدًا على أداة واحدة.
تساهم الأدوات الثماني الأولى بـ نتائج ثغرات على شكل CVE؛ أما provenant فمختلف — فهو يبلّغ عن مصدر الترخيص وحقوق النشر والمالك والمؤلف، والتي يخزّنها المدقق ويعرضها كشكل نتيجة خاص بها (قسم "الترخيص والمصدر" لكل تشغيل، مُضمَّن في تصدير Markdown) بدلًا من تجاهلها.
لا تستطيع الماسحات قراءة كل صيغة مباشرة: bomber يستهلك فقط CycloneDX ≤ 1.6، ولا يقرأ أي من الماسحات SPDX 3.0 JSON-LD. في كلتا الحالتين يوحّد المدقق المدخلات إلى CycloneDX عبر syft convert أولًا، ويتخطى بسبب موثّق عندما يكون syft غير متاح بدلًا من أن تبلّغ أداة عن صفر حزم. تُحدَّث قاعدة بيانات ثغرات grype مرة واحدة لكل تشغيل (خارج النطاق) بحيث يكون التقادم الروتيني فحصًا جديدًا، لا فحصًا فاشلًا.
بعد التحليل، تُثرى كل نتيجة على شكل CVE بثلاث إشارات حقيقية مسحوبة من خدمة vulnlookup (الافتراضي https://vulnlookup.ndaal.eu):
تعرض كل نتيجة قيم KEV وNuclei وEPSS وSource الخاصة بها، حيث يرتبط Source بسجل vulnlookup، وتُرتَّب النتائج من الأكثر إلحاحًا أولًا: تتصدّر المدخلات المعروفة باستغلالها (KEV)، ثم تلك ذات المئين المئوي الأعلى لـ EPSS؛ وتحتفظ النتائج بلا إثراء بالترتيب الذي أنتجها به المحلّل. ينتقل الإثراء إلى كل صيغة تصدير — SARIF 2.1 / 2.2 وMarkdown وODT وDOCX وPDF وCSAF 2.1 / 2.2، حيث يحمل CSAF قيمة EPSS كمقياس أصلي ويسجّل CISA-KEV وnuclei كملاحظات — ونموذج التصدير الآن يحدّد كل صيغة افتراضيًا.
هيّئه تحت Settings → Vulnerability enrichment: مفتاح تشغيل/إيقاف (ممكّن افتراضيًا) وحتى ثلاثة مصادر vulnlookup، لكل منها عنوان أساسي ومنفذ TCP ومنفذ QUIC (المنفذ الفارغ يُعامَل كـ 443). المصدران 1 و2 افتراضيًا إلى https://vulnlookup.ndaal.eu العام على المنفذ 443؛ والمصدر 3 افتراضيًا إلى https://127.0.0.1 على منافذ هذا المضيف نفسه 8680 (TCP) / 8681 (QUIC)، بحيث يكون vulnlookup المُشارَك موقعيًا بديلًا فعّالًا جاهزًا للاستخدام. تُجرَّب المصادر بالترتيب — الأول أساسي، والآخرون بدائل.
#![forbid(unsafe_code)]؛ سياسة الفحص ترفض الاختصارات المسببة للذعر والحساب غير المُتحقَّق منه والفهرسة غير المُتحقَّق منها في كود الإنتاج.--encryption-key-file).--tls-key مفتاح PKCS#1 RSA (سياسة لا-RSA)، وعلى Unix، ملف مفتاح قابل للقراءة من المجموعة أو الجميع.GET /export/download يخدم فقط الأسماء ذات امتداد تصدير معترف به أو ملف جانبي للتجزئة، بحيث لا يمكن لدليل تصدير مُهيَّأ خطأً تسليم ملف نظام.cargo audit نظيف.ثبّت الإصدار المنشور من crates.io — cargo install يبنيه من المصدر، وcargo binstall يجلب الملف التنفيذي المُبنى مسبقًا من إصدار GitLab:
cargo install sbom-auditor # build from source
cargo binstall sbom-auditor # prebuilt GitLab-release binary
أو ابنِ نسخة الاستخراج هذه مباشرة (مطلوب سلسلة أدوات Rust مستقرة حديثة):
cargo build --release
./target/release/sbom-auditor
ثم افتح https://127.0.0.1:8680 (سيحذّر المتصفح مرة واحدة بشأن الشهادة الموقّعة ذاتيًا). يشغّل التنقل العلوي Home وUpload وImport وExport وComponents وTools وSettings، يليه مفتاح تبديل السمة الداكنة/الفاتحة وقائمة اللغة وقائمة المعلومات على اليمين. تُشحن الواجهة بـ 49 لغة — الإنجليزية والألمانية والفرنسية بالإضافة إلى كل لغة رسمية أوروبية، والنرويجية Nynorsk، واللغات السامي الثلاث الرسمية في النرويج (السامي الشمالي واللولي والجنوبي)، وثلاث إضافات آسيوية — الصينية (中文) والهندية (हिन्दी) والأردية (اردو، من اليمين إلى اليسار) — قابلة للاختيار من قائمة اللغة (وتُتذكَّر لكل متصفح). يحتوي قسم لغات واجهة المستخدم المدعومة أدناه على التفصيل الكامل.
--port <PORT> Listen port (default 8680, env SBA_PORT)
--bind <ADDR> Bind address (default 127.0.0.1, env SBA_BIND)
--data-dir <DIR> Data directory (SQLite store + stored SBOMs)
--db <PATH> Database path (default <data-dir>/auditor.db)
--encryption-key-file <F> Enable storage encryption with this 32-byte key
--tls-cert <F> --tls-key <F> Operator certificate instead of self-signed
--allow-non-loopback Permit binding a non-loopback address
--check-update Check gitlab.com for a newer release, then exit
--self-update Download + verify + install the latest release
--help Full option list
المنافذ: 8680 يخدم API وواجهة الويب عبر TLS 1.3 (HTTP/1.1 + HTTP/2)؛ 8681 محجوز لمستمع QUIC / HTTP-3 مستقبلي (غير مُنفَّذ بعد).
تُشحن واجهة الويب بـ 49 لغة. الإنجليزية والألمانية والفرنسية هي المجموعة المصانة والمكتوبة بشريًا والمثبّتة في مقدمة مبدّل اللغة؛ وتتبع كل لغة أخرى بترتيب أبجدي حسب اسمها الإنجليزي.
انضمت ثلاث لغات آسيوية في هذه الدورة: الصينية / 中文 (الماندرين، المبسّطة)، والهندية / हिन्दी والأردية / اردو. الأردية من اليمين إلى اليسار — يعرض التطبيق <html dir="rtl"> أثناء تحديدها.
كل لغة بعد الثلاث المثبّتة مترجمة آليًا وبانتظار المراجعة الأصلية؛ وأي نص مفقود من ترجمة يعود تلقائيًا إلى الإنجليزية. يسرد المبدّل داخل الصفحة كل لغة باسمها الأصلي وهو القائمة الموثوقة — راجعه بدلًا من تعداد هنا.
ينطبق هذا على واجهة الويب فقط. تبقى التقارير المُولَّدة (SARIF وCSAF وتصدير PDF) وواجهة HTTP API بالإنجليزية فقط.
cargo nextest run # unit + integration suite
cargo test --doc # doctests
أدوات اختبار إضافية: loom-harness/ (نماذج تبديل التزامن)، test/bruno/ (مجموعة API)، test/playwright/ (اختبار المتصفح من طرف إلى طرف)، test/example-corpus/ (API + واجهة المستخدم رفع→تحليل→تصدير على مجموعة SBOM المضمّنة في example/) وloadtest/ (سيناريوهات حمل Goose). يقوم tests/scripts/test_examples_upload_via_api.sh (مع .bats شقيق) برفع كل ملف SBOM في example/ مقابل نسخة قيد التشغيل ويؤكد أن كلًا منها ينتج SARIF وCSAF وPDF عبر ZIP المبثوث من POST /export/download؛ يُتحقَّق من TLS للمضيفين غير المحليين ويُتخطى لشهادة localhost الموقّعة ذاتيًا، ويستهدف --base-url أي نسخة (على سبيل المثال https://sbom.ndaal.eu/). تضيف مجموعة test/magnitude/ (Magnitude، ) فحوصات بصرية مدفوعة بالذكاء الاصطناعي لترتيب شريط التنقل وإعدادات التصدير الافتراضية بالإضافة إلى Start download؛ وهي تكمّل الاختبارات الحتمية، وتحتاج إلى LLM للتشغيل وليست جزءًا من بوابة CI الحاجزة. يحمل دليل 651 ملف SBOM اختباري عام (Git LFS)؛ انظر . انظر لخريطة الوحدات وتدفق الطلبات.
الكود مرخّص بموجب Apache-2.0. تحمل أصول واجهة المستخدم المضمّنة تراخيصها الخاصة (Bootstrap MIT، htmx 0BSD، Roboto OFL-1.1)؛ انظر الملفات الجانبية .license لكل ملف تحت src/static/.
| الأداة | الدور |
|---|
| syft | موحّد SBOM / محوّل CycloneDX 1.6 |
| grype | مطابق CVE |
| trivy | ماسح الثغرات |
| osv-scanner | استعلامات قاعدة بيانات OSV |
| bomber | مطابق مجموعة مستقل |
| bomdrift | انحراف سلسلة التوريد / typosquat (SARIF) |
| inspektr | ماسح ثغرات SBOM (JSON) |
| shieldbom | ماسح CVE محلي للأنظمة المدمجة/IoT (SARIF) |
| provenant | الترخيص / حقوق النشر / المصدر (ScanCode) |
*.mag.tsexample/