Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
dasel-melange-apko — dasel v3.3.1 معبّأ مع Melange ويُقدَّم كصورة apko مصغّرة، مع تصحيح الثغرة CVE-2026-33320 | Kitploit
أدوات/GitHubGitHub/rotavori/dasel-melange-apko
أدوات عامةأمن الحاوياتتحليل الثغرات الأمنيةالبرمجة النصية والأتمتةDevSecOpsأمن سلسلة التوريد
GitHubrotavori/dasel-melange-apko

dasel-melange-apko

dasel v3.3.1 معبّأ مع Melange ويُقدَّم كصورة apko مصغّرة، مع تصحيح الثغرة CVE-2026-33320

عرض المستودع
4منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

dasel v3.3.1 — بناء Melange + apko، معدّل لـ CVE-2026-33320

يحزم هذا المستودع أداة سطر الأوامر dasel (الإصدار v3.3.1) كحزمة APK باستخدام Melange، ويبني صورة حاوية صغيرة باستخدام apko، ويطبّق إصلاحًا لـ CVE-2026-33320 مع البقاء على الشيفرة المصدرية للإصدار v3.3.1 (رقعة، وليس ترقية إصدار).

النتيجة صورة بحجم ~4 MB تحتوي فقط على ثنائي dasel الثابت — بلا غلاف أوامر، بلا مدير حزم، بلا libc — وتعمل كمستخدم غير جذر.

هيكل المستودع

root@kitploit:~
melange/
  dasel.yaml              # melange recipe: fetch v3.3.1, apply the patch, build the .apk
apko/
  dasel.yaml              # apko recipe: assemble a minimal image from the local .apk
patches/
  cve-2026-33320.patch    # the CVE fix (minimal backport of upstream 282943b onto v3.3.1)
  NOTES.md                # what the CVE is, severity, and how the fix works
tests/
  test.sh                 # runs the built IMAGE and asserts real behavior + the CVE fix
README.md

المتطلبات الأساسية

  • Linux أو WSL2 Ubuntu (طُوّر على WSL2 على Windows 10).
  • Docker — يُستخدم كمشغّل بيئة البناء المعزولة لـ Melange ولتحميل الصورة النهائية وتشغيلها.
  • يجب أن تكون melange و apko متاحتين في PATH.

النسخ المستخدمة أثناء التطوير:

الأداةالنسخة
melange0.50.8
apko1.2.14
Docker29.5.2

يتم تشغيل جميع الأوامر أدناه من جذر المستودع.

البناء والاختبار — الأوامر الدقيقة

1. إنشاء مفتاح توقيع (مرة واحدة)

root@kitploit:~
melange keygen

ينتج melange.rsa (خاص) و melange.rsa.pub (عام). كلاهما مستبعد في git (gitignored) — يُعاد توليد المفاتيح بواسطة أي شخص يعيد إنتاج البناء، ولا تُدرج أبدًا في التعديلات.

2. بناء الحزمة

root@kitploit:~
melange build melange/dasel.yaml \
  --source-dir patches \
  --signing-key melange.rsa \
  --arch x86_64 \
  --runner docker

الخيار --source-dir patches يجعل الملف patches/cve-2026-33320.patch متاحًا داخل بيئة البناء المعزولة، حيث تطبّقه خطوة patch في الوصفة. الناتج: packages/x86_64/dasel-3.3.1-r0.apk (موقع) و packages/x86_64/APKINDEX.tar.gz.

3. اختبار الحزمة

يثبّت melange test حزمة .apk المبنية حديثًا في بيئة نظيفة ويشغّل كتلة test: في الوصفة. يتطلب مستودع Wolfi (من أجل busybox) ومستودع packages/ المحلي (من أجل dasel)، كلٌّ بمفتاح التوقيع الخاص به:

root@kitploit:~
melange test melange/dasel.yaml dasel \
  --arch x86_64 --runner docker \
  --repository-append https://packages.wolfi.dev/os \
  --keyring-append https://packages.wolfi.dev/os/wolfi-signing.rsa.pub \
  --repository-append "$(pwd)/packages" \
  --keyring-append melange.rsa.pub

يؤكد الاختبار أن: dasel version يعرض 3.3.1؛ ونجاح استعلام JSON فعلي؛ وتحويل JSON→YAML؛ وأن قنبلة YAML من نوع billion-laughs مرفوضة بواسطة حارس التوسّع (تم إصلاح CVE-2026-33320).

4. بناء الصورة

root@kitploit:~
apko build apko/dasel.yaml dasel:test dasel.tar --arch x86_64
docker load < dasel.tar

الناتج: dasel.tar (صورة OCI قابلة للتحميل) بالإضافة إلى SBOM (SPDX JSON). يُلحق apko البنية بالوسم، لذا تكون الصورة المحمّلة هي dasel:test-amd64.

كيف تستهلك الصورة الحزمة المبنية محليًا (القيد الأساسي). يُدرج apko/dasel.yaml المجلد ./packages كمستودع و./melange.rsa.pub كحلقة مفاتيح. لذلك يثبّت apko حزمة dasel APK نفسها التي كتبها melange build في packages/x86_64/ — موثّقة بمفتاح التوقيع الخاص بنا — وليس حزمة مُجهّزة من المصدر الأصلي. (شغّل apko build من جذر المستودع حتى تُحلّ تلك المسارات النسبية بشكل صحيح.) هذا ما يربط بناء الحزمة ببناء الصورة.

5. تشغيل اختبار الصورة

root@kitploit:~
./tests/test.sh

يشغّل الصورة عبر docker run ويؤكد (5 فحوصات): وجود dasel وعرضه لـ v3.3.1، واستعلام JSON متداخل، وتحويل JSON→YAML، واستعلام فهرس مصفوفة، ورفض قنبلة YAML. يخرج السكربت بقيمة غير صفرية عند فشل أي فحص (ليصلح كبوابة لـ CI). يمكن تجاوز الوسم عبر IMAGE=<tag> ./tests/test.sh.

إصلاح CVE-2026-33320

CVE-2026-33320 هو ثغرة حجب خدمة (CWE-674، استدعاء ذاتي غير متحكم فيه) في قارئ YAML الخاص بـ dasel: هجوم "billion laughs" عبر توسّع أسماء مستعارة غير محدود في YAML. نفّذ dasel دالة UnmarshalYAML الخاصة به وقد حلّ عقد الأسماء المستعارة بشكل استدعاء ذاتي دون حدّ، متجاوزًا الحماية المدمجة في المكتبة الأساسية.

نعيد تطبيق إصلاح المصدر الأصلي فقط (الالتزام 282943b، الذي صدر في v3.3.2) على شيفرة v3.3.1 كملف patches/cve-2026-33320.patch. يحدّ التوسّع من خلال حدّ عمق (32) وميزانية مشتركة (1000)، ويعيد خطأً بدلاً من التوسّع بلا حدود. نستبعد عمدًا إصلاحات الأخطاء غير المرتبطة التي صدرت أيضًا في v3.3.2، للحفاظ على التغيير ضئيلًا وقابلًا للمراجعة. راجع patches/NOTES.md للتفاصيل الكاملة.

قرارات التصميم

  • مصدر مثبّت. يثبّت git-checkout قيمة expected-commit على SHA الالتزام الخاص بـ v3.3.1، لذا يفشل البناء إذا أُعيد توجيه الوسم إلى شيفرة مختلفة (أمان سلسلة التوريد).
  • رقعة ضئيلة. يُطبَّق إصلاح CVE فقط — لا شيء آخر — لأغراض المراجعة.
  • ثنائي ثابت. بُني مع CGO_ENABLED=0 (مضبوط في بيئة بناء الوصفة)، لذا لا يحتوي الثنائي على cgo ولا على تبعيات مكتبات مشتركة — وهذا ما يتيح للصورة أن تصدر دون libc/غلاف أوامر/مدير حزم.
  • صورة ضئيلة. قائمة packages: في apko هي dasel فقط؛ تثبّت الصورة حزمتنا المبنية محليًا فقط (موثقة باستخدام melange.rsa.pub).
  • غير جذر. تعمل الصورة بمعرف المستخدم 65532 (nonroot) لتعميق الدفاع.
  • موقّع. كل من الحزمة وفهرس الحزم موقعان؛ ويتحقق apko من التواقيع.

الافتراضات

  • البناء لبنية x86_64 فقط (بنية جهاز التطوير).
  • استخدام docker كمشغّل لـ Melange (bubblewrap سيعمل أيضًا على Linux الأصلي).
  • لا تحمل الصورة حزمة تخطيط أساسي (وبالتالي لا يوجد /etc/os-release)؛ ولا يحتاجها أي شيء داخل الصورة. هذا خيار تقليص متعمّد، ويمكن عكسه بسهولة بإضافة wolfi-baselayout.
  • يسحب البناء إصدارَي Wolfi المتجدّدَين go و busybox بدلاً من لقطات مثبّتة، لذا يفترض أن Wolfi يستمر في توفير Go ≥ 1.25 (متطلب ملف go.mod الخاص بـ dasel). مصدر dasel مثبّت حسب الالتزام؛ وتثبيت سلسلة أدوات البناء أيضًا سيجعل البناء معزولًا تمامًا (انظر أدناه).

ما سأحسّنه لو توفر وقت إضافي

  • نقل اختبارات الوحدات الحدّية الدقيقة من المصدر الأصلي (عمق 32 مقابل 33، ميزانية 1000 مقابل 1001، إعادة تعيين الميزانية عبر مستندات متعددة) لتغطية أدق من اختباراتنا الصندوقية السوداء للميزانية/العمق.
  • تثبيت سلسلة أدوات البناء (لقطات Wolfi المحددة لـ go/busybox) وتاريخ بناء ثابت للحصول على بناء معزول تمامًا وقابل للإعادة بتطابق بتّي (المصدر مثبّت بالفعل حسب الالتزام).
  • بناء متعدد البنى (aarch64) لأجهزة ARM.
  • توقيع الصورة باستخدام cosign، والتحقق من تواقيع الملفات الثنائية لإصدارات melange/apko.
  • سير عمل CI (GitHub Actions) لإعادة البناء وتشغيل مجموعتي الاختبار في كل دفعة.

ملاحظات التسليم

  • تم تشغيل جميع الأوامر أعلاه بنجاح على WSL2 Ubuntu مع Docker Desktop.
  • melange build + melange test: تُبنى الحزمة، وتُطبَّق الرقعة بنظافة (كل الـ 7 مقاطع — 1 في parsing/yaml/yaml.go، و6 في parsing/yaml/yaml_reader.go)، وجميع اختبارات الحزمة ناجحة بما فيها اختبار قنبلة CVE.
  • apko build + tests/test.sh: تُبنى الصورة (~4 MB محتوى)، وجميع اختبارات الصورة الخمسة ناجحة.
  • قسم "ما سأحسّنه لو توفر وقت إضافي" أعلاه يدرج الخطوات التالية التي سأتبعها لو توفر وقت إضافي.
تنزيل الأداة