
خدمة تبني المستودعات مفتوحة المصدر المسجَّلة في أجهزة افتراضية معزولة دون اتصال بالإنترنت وتفحصها بحثًا عن الثغرات الأمنية، وترسل النتائج عبر البريد الإلكتروني مع أدوات إعادة الإنتاج والتصحيحات المقترحة.
OSS Scanner هي خدمة من Anthropic لفحص المستودعات مفتوحة المصدر الحيوية بحثًا عن الثغرات الأمنية. تعرّف على المزيد حول الخدمة على red.anthropic.com/oss-scanner.
ملاحظة: يخضع استخدام هذه الأداة للشروط والأحكام الموضحة في شروط OSS Scanner.
سجّل مشروعًا مفتوح المصدر عبر فتح طلب سحب (pull request) يضيف دليلًا واحدًا:
projects/<name>
يقوم ماسح الأمان لدينا ببناء مشروعك في جهاز افتراضي معزول، ثم يحلله دون الوصول إلى الإنترنت ويرسل بريدًا إلكترونيًا بما يجده إلى primary_contact (وأي نسخ CC)، كل ذلك مع مُعيد إنتاج (reproducer) وتصحيح مقترح حيثما توفر. التقارير مُولَّدة بواسطة النموذج ولا يراجعها إنسان. وبسبب ذلك لا نفرض فترة إفصاح مدتها 90 يومًا على هذه النتائج ولن ننشرها علنًا. ينبغي لمالكي المشاريع توفير project.yaml (لتهيئة الماسح)، وDockerfile (يوضح كيفية بناء المشروع)، واختياريًا threat_model.md (يوفر نمذجة تهديدات خاصة بالمشروع).
ابدأ من templates/project.yaml:
repo: https://github.com/example/project # required: the git repository to scan; add #branch to pin one
primary_contact: [email protected] # required: reports and build problems go here (one address)
auto_ccs: # optional: more addresses on every mail
- [email protected]
homepage: https://example.org # optional
disabled: false # optional: true pauses reports without removing the enrolment
dockerfile: .oss-scanner/Dockerfile # required unless a Dockerfile sits in this repo next to your project.yaml
threat_model: .oss-scanner/threat_model.md # optional; also supports placing the file in this repository
repo وprimary_contact مطلوبان دائمًا. dockerfile مطلوب ما لم تُبقِ ملف Dockerfile الخاص بك بجوار project.yaml (انظر أدناه). البقية اختيارية.
عناوين البريد الإلكتروني في project.yaml عامة. استخدم عناوين يسعدك أن تُنشر، مثل اسم مستعار أمني.
لتلقي التقارير عبر البريد الإلكتروني مشفّرة، أضف مفتاحك العام OpenPGP بصيغة armored. عندئذٍ تُرسل إلى primary_contact فقط؛ لا يمكن الجمع بين pgp وauto_ccs:
pgp: |
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBF...
-----END PGP PUBLIC KEY BLOCK-----
لتحديد مكان ذهاب التقارير، اضبط أدنى مستوى خطورة يستقبله كل قناة: low أو medium أو high أو critical أو none لإيقاف القناة. القناة التي تتركها خارج الإعداد تستخدم القيمة الافتراضية الموضحة هنا، والتقرير الذي يبلغ أو يتجاوز كلا الحدين الأدنيين يُرسل إلى كلتا القناتين. ينطبق pgp على البريد الإلكتروني فقط، لذا لا تُشفَّر تقارير GitHub بمفتاحك:
output_format:
email:
min_severity: low
github_security_advisory: # GitHub private vulnerability reporting
min_severity: none
يجب عليك تقديم ملف Dockerfile، في واحد بالضبط من مكانين:
dockerfile: على مساره (نقترح موقعًا مثل .oss-scanner/Dockerfile). هذا هو الخيار المفضل لأنه يتيح لك تحديث البناء دون طلب سحب هنا؛ أو،project.yaml، باسم projects/<name>/Dockerfile، دون تعيين مفتاح Dockerfile: في project.yaml. إذا كنت تفضل عدم إضافة ملفات إلى مستودعك، فضعها هنا وسيبنيها الماسح تمامًا كما لو كانت نسخة داخل المستودع.(يعمل نموذج التهديد بالطريقة نفسها. اضبط حقل threat_model لموقعه في مستودعك، أو ضعه هنا في projects/<name>/threat_model.md.)
الغرض من Dockerfile هو إعداد بيئتك، وتثبيت كل تبعية، وبناء المشروع. يعمل إعداد المشروع الأولي مع تمكين الوصول إلى الشبكة، لكن التدقيق الأمني الذي يليه يعمل دون الوصول إلى الإنترنت. أي شيء يحتاجه البناء أو الاختبارات يجب جلبه أثناء إعداد Dockerfile الأولي. نوصي بالتحقق من نجاح اختباراتك داخل الصورة المبنية.
يتيح لك ملف threat_model.md (اختياري لكنه موصى به بشدة) تزويد الماسح بوثائق حول أهدافك الأمنية المقصودة. وجدنا أنه من المفيد أكثر تقديم إرشادات حول كيفية تقييمك لخطورة التقارير (على سبيل المثال، هل تعتبر SQLi بعد المصادقة عالية أم حرجة؟ هل تُحدَّد تجاوزات المخزن المؤقت دون استغلالات مُثبتة عند درجة عالية كحد أقصى؟ متى يكون XSS المخزَّن متوسطًا أو عاليًا أو حرجًا؟) يمكن لهذا الملف أيضًا أن يوضح ما يفعله المشروع، ومن أين يدخل الإدخال غير الموثوق، وأي المكونات مهمة وأيها خارج النطاق، وكيف تريد أن تبدو التقارير والتصحيحات، أو أي شيء آخر تعتبره مهمًا أو مفيدًا.
نقترح تشغيل أمرين قبل فتح طلب سحب:
tools/validate.py من projects/<name>/ وفقًا للقواعد أعلاه.tools/check <name> مشروعك بالطريقة التي سيفعلها ماسحنا، ويفتح صدفة في الصورة النهائية دون شبكة. إذا نجحت اختباراتك في هذه الحاوية، فمن المرجح أن يعمل ماسحنا مع مشروعك. يفعل tools/check --qemu <name> الشيء نفسه داخل أجهزة افتراضية مُهيأة مثل أجهزة الماسح.تحتاج هذه الأدوات إلى أن يكون مضيفك قد ثبّت git وDocker وPython 3 مع PyYAML (pip install pyyaml)؛ يحتاج --qemu إلى Linux على x86-64 مع QEMU بدلًا من Docker.
primary_contact برسالة خطأ.primary_contact وأي نسخ إضافية (CC) مع خطوات إعادة الإنتاج وتصحيح مقترح حيثما توفر.يمكنك تعديل مشروعك في أي وقت عبر طلب سحب. لإلغاء تسجيل مشروعك، اضبط الحقل disabled على true لإيقاف التقارير مؤقتًا أو احذف projects/\<name\>/ لسحب المشروع بالكامل.
tools/check ملف Dockerfile الخاص بمشروعك مع الوصول إلى الشبكة، كما يفعل docker build. مع --qemu يعمل البناء داخل جهاز افتراضي، مما يبعده عن ملفاتك، لكنه لا يزال قادرًا على الوصول إلى الخدمات على حاسوبك وشبكتك المحلية. افحص فقط المشاريع التي تثق بها، أو استخدم جهازًا لا يوجد ما تخشى فقدانه.tools/check Claude Code في الصورة التي يبنيها (كما يفعل الماسح). يخضع Claude Code لشروطه الخاصة.يرجى زيارة red.anthropic.com/oss-scanner.
حالة الصيانة: تتم صيانة هذا المستودع بنشاط من قبل Anthropic. نحن نراجع وندمج طلبات سحب التسجيل فقط (التغييرات ضمن projects/<name>/)؛ ولا نقبل مساهمات أخرى، بما في ذلك التغييرات على tools/ أو templates/. راجع CONTRIBUTING.md لمعرفة كيفية التسجيل، وSECURITY.md للإبلاغ عن ثغرة أمنية في هذا المستودع، وCODE_OF_CONDUCT.md.