
حاوية nginx 1.25.5 مبنية من المصدر مع إصلاح CVE-2026-42945 المنقول، ترقية OpenSSL، سلسلة إثبات كاملة، وشهادة VEX.
nginx:1.25-bookwormصورة حاوية nginx 1.25.5 مبنية من المصدر تعالج ثغرتين موجودتين في الصورة الرسمية nginx:1.25-bookworm مع الحفاظ على سلوك وقت التشغيل الأصلي.
| CVE | المكون | الخطورة | التقنية | نموذج التحقق |
|---|---|---|---|---|
| CVE-2024-6119 | OpenSSL / libssl3 | عالية | رفع إصدار التبعية | قابل للتحقق بواسطة الماسح: libssl3 3.0.20 مرئي في قاعدة بيانات dpkg |
| CVE-2026-42945 | nginx ngx_http_rewrite_module | حرجة | ترقيع مصدري مرتجع | قابل للتحقق من المصدر: اشتقاق التصحيح + اختبار الانحدار + شهادة البناء + VEX |
تمثل هذه اثنين من نماذج المعالجة المتميزة:
وسائط تكوين nginx -V لهذه الصورة تطابق تلك الخاصة بـ nginx:1.25-bookworm (تمت المقارنة حرفيًا بعد تطبيع مسار البناء -ffile-prefix-map؛ تم التحقق منه في test/compat.py::test_nginx_version).
مجموعة الاختبارات (make test) تتحقق من 89 تأكيدًا تغطي بيانات الصورة الوصفية، الوحدات الديناميكية، تخطيط نظام الملفات، سلوك نقطة الدخول، حزم dpkg، ومعالجة طلبات HTTP مقابل الصورة الأولية الحية.
الاختلافات المعروفة عن الإصدار الأصلي (لم يتم التحقق من تطابقها):
built with OpenSSL X.X.X في nginx -V يعكس إصدار libssl-dev الخاص بالباني، والذي قد يختلف عن OpenSSL وقت الترجمة للإصدار الأصلي.debian:bookworm-slim بدلاً من شجرة الحزم الموروثة للصورة الرسمية.libssl3 في وقت التشغيل هو ما يوفره bookworm حاليًا (3.0.20 وقت الكتابة)، وليس الإصدار المثبت في الصورة الأصلية.make image
make test
make test-cve
make verify-patch
make scan
أمر واحد للبناء والاختبار والمسح:```bash
make all
build/ Dockerfile.build Builder image (debian:bookworm-slim + compilation deps) build.sh Fetch → verify → patch → compile → package nginx generate-vex.sh Generate OpenVEX document for backported CVE verify-patch.sh Re-derive patch from upstream tarballs (audit tool) patches/ CVE-2026-42945.patch Backported one-line fix from nginx 1.30.1 CVE-2026-42945.provenance.json Machine-readable patch provenance and derivation metadata
test/ compat.py 89-assertion compatibility test suite (runs against live upstream) test_cve_2026_42945.py CVE-specific regression test (exercises vulnerable code path)
artifacts/
patch-attestation.json Build-time patch attestation (tracked)
nginx_*.deb Compiled package (gitignored - rebuilt via make build-source)
nginx Compiled binary (gitignored)
Containerfile Final runtime image definition
Makefile Orchestrates build → test → scan pipeline
vex.json Generated OpenVEX v0.2.0 document
baseline-trivy.txt Point-in-time Trivy scan of nginx:1.25-bookworm
baseline-grype.txt Point-in-time Grype scan of nginx:1.25-bookworm
fixed-trivy.txt Trivy scan of the fixed image
fixed-grype.txt Grype scan of the fixed image (without VEX)
fixed-grype-vex.txt Grype scan of the fixed image (with VEX applied)
---
## عملية البناء
### الهندسة المعمارية```
debian:bookworm-slim (builder)
└─ build.sh
├─ curl nginx-1.25.5.tar.gz (SHA256-verified)
├─ curl njs-0.8.4 from github.com/nginx/njs
├─ patch -p1 < CVE-2026-42945.patch
├─ ./configure (flags identical to upstream nginx -V)
├─ make: release binary, debug binary, 4 dynamic module families (×2 release/debug)
├─ make: NJS modules (×2 release/debug) + njs CLI binary
└─ dpkg-deb → nginx_1.25.5-1~bookworm+echo1_<arch>.deb
debian:bookworm-slim (runtime)
├─ apt-get install runtime deps (libssl3 ≥ 3.0.14 enforced)
├─ dpkg -i nginx_*.deb
└─ COPY --from=upstream /docker-entrypoint.sh + /docker-entrypoint.d/
ملف الحاوية (Containerfile) لا ينسخ /etc/nginx من المنبع. يتم شحن جميع ملفات التهيئة داخل .deb ويتم تتبعها بواسطة آلية ملفات conffile الخاصة بـ dpkg. هذا مطلوب لبرنامج نقطة الدخول 10-listen-on-ipv6-by-default.sh، الذي يستخدم dpkg-query للكشف عما إذا كان default.conf قد تم تعديله من قبل المستخدم.
./configure && make داخل حاوية Debian نظيفة. لا توجد ثنائيات من المنبع، ولا apt install nginx.build.sh يقوم فقط بجلب أرشيفات المصدر المثبتة.البناء قابل للتكرار في الغالب لكنه ليس محكم الإغلاق:
Dockerfile.build ولكنها غير مثبتة الإصدار.لتحسين قابلية التكرار، قم بتثبيت تلخيص الصورة الأساسية:```bash docker pull debian:bookworm-slim docker inspect debian:bookworm-slim --format='{{index .RepoDigests 0}}'
---
## تفاصيل معالجة CVE
### CVE-2024-6119 - رفع إصدار OpenSSL
| الحقل | القيمة |
| -------------------- | ---------------------------------------------------- |
| **المكون** | OpenSSL / libssl3 |
| **الخطورة** | عالية (CVSS 7.5) |
| **النوع** | رفض الخدمة عبر فحوصات اسم X.509 |
| **الإصدار الأساسي** | 3.0.11-1~deb12u2 |
| **الإصدار المُصلَّح** | 3.0.14-1~deb12u2 (أو أحدث) |
| **إصدارنا** | 3.0.20-1~deb12u1 |
| **NVD** | https://nvd.nist.gov/vuln/detail/CVE-2024-6119 |
| **إشعار** | https://openssl-library.org/news/secadv/20240903.txt |
**كيف تعمل الإصلاحية:**
الحزمة `.deb` تعلن عن `Depends: libssl3 (>= 3.0.14)`، مما يجبر `apt-get install` على سحب إصدار OpenSSL يتضمن الإصلاح. توفر مستودعات Debian bookworm الحالية الإصدار 3.0.20، الذي يصلح CVE-2024-6119 وعشرات ثغرات OpenSSL الأخرى من الإصدار الأساسي (CVE-2024-2511, CVE-2024-5535, CVE-2024-4741, CVE-2023-5678, CVE-2023-6129, CVE-2023-6237, CVE-2024-9143, CVE-2025-15467, CVE-2025-69420).
**سلوك الماسح:** يرى Grype و Trivy `libssl3 3.0.20` في قاعدة بيانات dpkg ويتعرفان على أن 3.0.20 ≥ 3.0.14، لذا لم يعد يتم الإبلاغ عن CVE-2024-6119. لا حاجة لـ VEX - رفع الإصدار بديهي.
**التحقق:**```bash
grep "CVE-2024-6119" baseline-grype.txt # present
grep "CVE-2024-6119" fixed-grype.txt # absent