مسح الثنائيات المُولَّدة
مسح الثنائيات المُولَّدة في Apothem — صفر ثنائيات مُجمَّعة / مُحزَّمة مُتتبَّعة في المصدر. دليل فحص Binary-Artifacts في OpenSSF Scorecard.
يتحقّق فحص Binary-Artifacts في OpenSSF Scorecard من أن شجرة المصدر لا تحمل أي ثنائيات مُجمَّعة / مُحزَّمة / مُبهَمة. الثنائيات في المصدر غير قابلة للتدقيق وتوفّر موطئ قدم لهجمات سلسلة التوريد: إذ يُضمِّن الثنائي شيفرةً لا تُظهِرها شجرة المصدر، فلا يستطيع المراجعون فحصها قبل الدمج.
موقف Apothem من الثنائيات المُولَّدة
Apothem هو شجرة مصدر Python صرفة بصفر ثنائيات مُجمَّعة أو مُحزَّمة أو مُبهَمة مُتتبَّعة في التحكّم بالإصدارات. والمستودع قابل للتدقيق من طرف إلى طرف انطلاقًا من المصدر.
منهجية المسح
يُعدّد المسح أنواع الملفات التي يعتبرها Scorecard ثنائية، ثم يتحقّق من غياب كلٍّ منها عن التحكّم بالإصدارات:
| عائلة الامتداد | الوصف | حالة Apothem |
|---|---|---|
.exe، .dll، .so، .dylib | ثنائيات أصيلة مُجمَّعة | ✅ صفر مُتتبَّع |
.bin، .o، .a، .lib | ملفات كائنية / مكتبات ساكنة | ✅ صفر مُتتبَّع |
.jar، .war، .ear | حِزم Java | ✅ صفر مُتتبَّع |
.whl، .egg | توزيعات Python | ✅ صفر مُتتبَّع (تُبنى داخل dist/؛ مُستثناة عبر gitignore) |
.tar.gz، .zip (توزيعة مبنية) | أرشيفات مضغوطة تحمل أدلة مبنية | ✅ صفر مُتتبَّع |
.class، .pyc، .pyo | شيفرة بايت مُجمَّعة | ✅ صفر مُتتبَّع (__pycache__/ مُستثنى عبر gitignore) |
.crt، .pem، .key، .p12، .pfx | مادة تعمية | ✅ صفر مُتتبَّع (مرفوض في .gitignore) |
أصناف الثنائيات المسموح بها
يُسمح في المصدر بصنفين ضيّقين من الثنائيات:
- أصول العلامة —
assets/*.png،assets/*.ico،assets/favicon.*. هذه قابلة لإعادة التوليد حتميًّا من نسخ SVG الأصلية فيassets/src/عبرscripts/dev/rebuild-assets.{sh,ps1}. يعاملها Scorecard كشرعية وفق إعفائهimage/png. - ملفات الخطوط —
assets/fonts/*.ttf،assets/fonts/*.woff2. ملفات خطوط مُرفقة برخص موثَّقة؛ وفق إعفاءfont/*لدى Scorecard.
كلا الصنفين موثَّق في site/content/docs/brand/index.mdx، ومصدرهما مُسجَّل في وصفة إعادة بناء الأصول.
أمر التحقّق
# من جذر مستودع apothem:
git ls-files | grep -E '\\.(exe|dll|so|dylib|bin|o|a|lib|jar|war|ear|whl|egg|class|pyc|pyo|crt|pem|key|p12|pfx)$'ينبغي أن يُعيد هذا الاستدعاء صفر أسطر. النتيجة غير الفارغة تدلّ على أن ثنائيًّا مُولَّدًا قد تُتبِّع في المصدر — وهو اكتشاف بخطورة عالية يحجب الإصدار التالي.
إيقاع التدقيق
يُعدّ المسح جزءًا من:
- CI لكل طلب سحب — يتضمّن
.github/workflows/ci.ymlخطوة grep للثنائيات المُولَّدة. - نقطة تفتيش لكل إصدار — يتحقّق دليل هندسة الإصدار من المسح قبل وسم الإصدار.
- تشغيل Scorecard الأسبوعي — يعيد سير عمل OpenSSF Scorecard تأكيد نجاح الفحص.
مراجع
- OpenSSF Scorecard — فحص Binary-Artifacts
.gitignoreالخاص بـApothem — قائمة الرفض التي تمنع إدخال الثنائيات بالخطأ