Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/barappteam/nginx-cve-fix
भेद्यता स्कैनरकंटेनर सुरक्षाभेद्यता विश्लेषणकॉन्फ़िगरेशन ऑडिटिंगDevSecOpsआपूर्ति श्रृंखला सुरक्षा
GitHubbarappteam/nginx-cve-fix

nginx-cve-fix

स्रोत-निर्मित nginx 1.25.5 कंटेनर जिसमें बैकपोर्टेड CVE-2026-42945 फिक्स, OpenSSL अपग्रेड, पूर्ण प्रोवेनेंस चेन, और VEX प्रमाणीकरण शामिल है।

रिपॉजिटरी देखें
3 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Nginx CVE Fix - nginx:1.25-bookworm के लिए स्रोत-निर्मित ड्रॉप-इन

एक स्रोत-निर्मित nginx 1.25.5 कंटेनर इमेज जो आधिकारिक nginx:1.25-bookworm इमेज में मौजूद दो CVEs को ठीक करता है, जबकि अपस्ट्रीम रनटाइम व्यवहार को संरक्षित रखता है।

CVEComponentSeverityTechniqueVerification model
CVE-2024-6119OpenSSL / libssl3उच्चनिर्भरता संस्करण वृद्धिस्कैनर-सत्यापन योग्य: libssl3 3.0.20 dpkg डेटाबेस में दृश्यमान
CVE-2026-42945nginx ngx_http_rewrite_moduleगंभीरबैकपोर्टेड स्रोत पैचस्रोत-सत्यापन योग्य: पैच व्युत्पत्ति + प्रतिगमन परीक्षण + बिल्ड प्रमाणीकरण + VEX

ये दो अलग-अलग उपचार मॉडल प्रस्तुत करते हैं:

  1. संस्करण वृद्धि (CVE-2024-6119) - निश्चित लाइब्रेरी संस्करण सीधे dpkg डेटाबेस के माध्यम से स्कैनर को दिखाई देता है। किसी अतिरिक्त प्रमाणीकरण की आवश्यकता नहीं है।
  2. स्रोत बैकपोर्ट (CVE-2026-42945) - पैकेज संस्करण 1.25.5 ही रहता है, इसलिए स्कैनर पैच किए गए बाइनरी को बिना पैच किए गए बाइनरी से अलग नहीं कर सकते। उपचार को स्रोत उत्पत्ति, बिल्ड-समय सत्यापन और प्रतिगमन परीक्षण के माध्यम से प्रदर्शित किया जाता है। VEX स्कैनर-स्तरीय संकेत प्रदान करता है।

समता स्थिति

इस इमेज के nginx -V कॉन्फ़िगर आर्गुमेंट nginx:1.25-bookworm के आर्गुमेंट से मेल खाते हैं (-ffile-prefix-map बिल्ड पथ को सामान्य करने के बाद वर्ण-दर-वर्ण तुलना; test/compat.py::test_nginx_version में सत्यापित)। परीक्षण सूट (make test) 89 अभिकथनों को मान्य करता है जो इमेज मेटाडेटा, डायनामिक मॉड्यूल, फ़ाइलसिस्टम लेआउट, एंट्रीपॉइंट व्यवहार, dpkg पैकेजिंग और लाइव अपस्ट्रीम इमेज के विरुद्ध HTTP अनुरोध हैंडलिंग को कवर करते हैं।

अपस्ट्रीम से ज्ञात अंतर (समान के रूप में मान्य नहीं):

  • nginx -V में built with OpenSSL X.X.X लाइन बिल्डर के libssl-dev संस्करण को दर्शाती है, जो अपस्ट्रीम के कंपाइल-टाइम OpenSSL से भिन्न हो सकता है।
  • बाइनरी सामग्री बाइट-दर-बाइट समान नहीं है (अलग संकलन वातावरण, अलग टूलचेन आह्वान टाइमस्टैम्प)।
  • इमेज पैकेज सेट भिन्न है - आधिकारिक इमेज के विरासत पैकेज ट्री के बजाय debian:bookworm-slim आधार।
  • रनटाइम libssl3 संस्करण वही है जो bookworm वर्तमान में प्रदान करता है (लेखन के समय 3.0.20), अपस्ट्रीम इमेज में पिन किए गए संस्करण के बजाय।

त्वरित आरंभ```bash

Build everything (builder → .deb → final image)

make image

Run automated compatibility tests

make test

Run CVE-2026-42945 regression test

make test-cve

Verify patch provenance (re-derives from upstream tarballs)

make verify-patch

Scan and demonstrate VEX

make scan

root@kitploit:~
बनाने, परीक्षण करने और स्कैन करने के लिए एक कमांड:```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)

root@kitploit:~
## निर्माण प्रक्रिया

### आर्किटेक्चर```
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 के अंदर भेजी जाती हैं और dpkg के conffile तंत्र द्वारा ट्रैक की जाती हैं। यह 10-listen-on-ipv6-by-default.sh एंट्रीपॉइंट स्क्रिप्ट के लिए आवश्यक है, जो यह पता लगाने के लिए dpkg-query का उपयोग करती है कि default.conf को उपयोगकर्ता द्वारा संशोधित किया गया है या नहीं।

अखंडता गारंटी

  • स्रोत tarballs: सभी स्रोत आर्काइव (nginx, NJS) निष्कर्षण से पहले हार्डकोडेड हैश के विरुद्ध SHA256-सत्यापित किए जाते हैं। बेमेल होने पर निर्माण रद्द हो जाता है।
  • स्रोत से निर्माण: एक साफ Debian कंटेनर के अंदर ./configure && make। कोई अपस्ट्रीम बाइनरी नहीं, न ही apt install nginx।
  • संकलन के दौरान कोई नेटवर्क पहुँच नहीं: निर्भरताएँ बिल्डर Docker इमेज लेयर में स्थापित की जाती हैं; build.sh केवल पिन किए गए स्रोत आर्काइव प्राप्त करता है।

पुनरुत्पादनीयता

निर्माण अधिकतर पुनरुत्पादनीय है लेकिन हर्मेटिक नहीं है:

  • nginx स्रोत संस्करण और SHA256 निष्कर्षण से पहले पिन और सत्यापित किए जाते हैं।
  • NJS संस्करण और SHA256 निष्कर्षण से पहले पिन और सत्यापित किए जाते हैं।
  • बिल्डर निर्भरताएँ Dockerfile.build में गिनाई गई हैं लेकिन संस्करण-पिन नहीं की गई हैं।
  • Debian रनटाइम पैकेज निर्माण समय पर लाइव bookworm रिपॉजिटरी से हल किए जाते हैं, इसलिए मामूली संस्करण निर्माणों के बीच विचलित हो सकते हैं।

पुनरुत्पादनीयता में सुधार करने के लिए, आधार इमेज digest को पिन करें:```bash docker pull debian:bookworm-slim docker inspect debian:bookworm-slim --format='{{index .RepoDigests 0}}'

Then use: FROM debian:bookworm-slim@sha256:

root@kitploit:~
---

## CVE सुधार विवरण

### CVE-2024-6119 - OpenSSL संस्करण वृद्धि

| फ़ील्ड                | मान                                                |
| -------------------- | ---------------------------------------------------- |
| **घटक**        | OpenSSL / libssl3                                    |
| **गंभीरता**         | उच्च (CVSS 7.5)                                      |
| **प्रकार**             | X.509 नाम जांच के माध्यम से सेवा अस्वीकृति (Denial of Service)              |
| **आधार संस्करण** | 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 CVEs को ठीक करता है (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 dpkg डेटाबेस में `libssl3 3.0.20` देखते हैं
और पहचानते हैं कि 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

CVE-2026-42945 - बैकपोर्टेड पैच

भेद्यता:

ngx_http_script_regex_end_code() फ़ंक्शन src/http/ngx_http_script.c में, रीराइट regex परिणाम को प्रोसेस करते समय e->is_args को रीसेट करने में विफल रहा। यदि is_args को पिछले स्क्रिप्ट इंजन ऑपरेशन द्वारा सेट किया गया था, तो रीडायरेक्ट/रीराइट पथ में बाद की बफर लंबाई गणनाएं गलत होंगी, जिसके परिणामस्वरूप क्राफ्टेड अनुरोध URIs के माध्यम से हमलावर-नियंत्रित आकार का हीप बफर ओवरफ्लो होता है।

फिक्स (एक पंक्ति):```c // Added before the existing e->quote = 0; at line 1205 e->is_args = 0;

root@kitploit:~
**पैच उत्पत्ति:**

| साक्ष्य                    | स्थान/मान                                                                                                                     |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| अपस्ट्रीम कमिट             | [`2046b45aa0c6e712c216b9075886f3f26e9b4ca9`](https://github.com/nginx/nginx/commit/2046b45aa0c6e712c216b9075886f3f26e9b4ca9)         |
| अपस्ट्रीम लेखक             | Roman Arutyunyan (arut) द्वारा लिखित, Sergey Kandaurov (pluknet) द्वारा प्रतिबद्ध, 2026-05-13                                                         |
| अपस्ट्रीम PR                 | [nginx/nginx#1350](https://github.com/nginx/nginx/pull/1350)                                                                         |
| अपस्ट्रीम टैग               | `release-1.31.0`, `release-1.30.1`                                                                                                   |
| संबंधित पूर्व फिक्स           | [`74d9399`](https://github.com/nginx/nginx/commit/74d939974d430a2c2e71b0134114d2a7b04dcc20) (2012, समान `is_args` एस्केपिंग समस्या) |
| पैच फ़ाइल                  | `build/patches/CVE-2026-42945.patch`                                                                                                 |
| प्रोवेनेंस मेटाडेटा         | `build/patches/CVE-2026-42945.provenance.json`                                                                                       |
| स्रोत टारबॉल (कमजोर) | `https://nginx.org/download/nginx-1.25.5.tar.gz` SHA256:`2fe2294f8af4144e7e842eaea884182a84ee7970e...`                               |
| स्रोत टारबॉल (ठीक किया गया)      | `https://nginx.org/download/nginx-1.30.1.tar.gz` SHA256:`99765000d974896b31ca5882d8c279ce3fe7ef6f...`                                |
| कमजोर फ़ाइल SHA256      | `c4b10c95b00e43d731a61f2380d406155e037f3cfb40a3bf58711ecefddc799a`                                                                   |
| ठीक की गई फ़ाइल SHA256           | `a6182175a22d88f66b9a61ae051bdcfece10d1bb2e643f7f175eb07589143403`                                                                   |
| व्युत्पत्ति विधि           | दोनों टारबॉल के बीच `diff src/http/ngx_http_script.c` (अपस्ट्रीम कमिट से समरूप होने की पुष्टि की गई)                                  |
| बदली गई पंक्तियाँ               | 1 (केवल जोड़)                                                                                                                    |
| पैच स्वच्छता से लागू होता है       | सत्यापित: `patch --dry-run -p1 < build/patches/CVE-2026-42945.patch` 0 पर बाहर निकलता है                                                         |
| बिल्ड-समय सत्यापन     | `build.sh` सत्यापित करता है कि पैचिंग के बाद स्रोत में `e->is_args = 0` मौजूद है, विफलता पर बिल्ड रोकता है                                        |
| बिल्ड-समय प्रमाणन      | बिल्ड के दौरान `artifacts/patch-attestation.json` पर लिखा गया                                                                           |
| रिग्रेशन परीक्षण             | `test/test_cve_2026_42945.py` - कमजोर कोड पथ का अभ्यास करता है                                                                   |
| पैच सत्यापन स्क्रिप्ट   | `make verify-patch` - स्वतंत्र रूप से अपस्ट्रीम टारबॉल से पैच पुनः प्राप्त करता है                                                      |

**पैच कैसे बनाया गया:**

1. `nginx-1.25.5.tar.gz` डाउनलोड किया (SHA256 पिन किए गए हैश के विरुद्ध सत्यापित)
2. `nginx-1.30.1.tar.gz` डाउनलोड किया (SHA256 सत्यापित: `99765000d974896b31ca5882d8c279ce3fe7ef6f5c6f9f0a967ed7fd3407f9cc`)
3. दोनों ट्री के बीच `diff src/http/ngx_http_script.c` चलाया
4. डिफ ने बिल्कुल एक पंक्ति उत्पन्न की - `e->is_args = 0;` जोड़
5. संदर्भ पंक्तियों के साथ एक यूनिफाइड डिफ पैच के रूप में निकाला गया
6. सत्यापित किया कि पैच nginx 1.25.5 पर स्वच्छता से लागू होता है
7. दोनों स्रोत ट्री स्वतंत्र सत्यापन के लिए `research/` में रखे गए हैं

**रिग्रेशन परीक्षण:**

परीक्षण सूट `test/test_cve_2026_42945.py` कमजोर कोड पथ का अभ्यास करता है, क्वेरी स्ट्रिंग स्थिति (`is_args`) में हेरफेर करने वाले रीराइट नियमों के माध्यम से अनुरोध भेजकर। यह मान्य करता है:

- ट्रेलिंग `?` (क्वेरी स्ट्रिप) के साथ रीराइट रीडायरेक्ट अच्छी तरह से बने प्रतिसाद उत्पन्न करते हैं
- श्रृंखलित रीराइट जो `is_args` स्थिति को टॉगल करते हैं, वर्कर को क्रैश नहीं करते
- लंबी क्वेरी स्ट्रिंग्स (4KB+) बफर ओवरफ्लो कलाकृतियाँ (नल बाइट्स, ओवरलॉन्ग लोकेशन हेडर) उत्पन्न नहीं करतीं
- 100 तीव्र मिश्रित अनुरोध वर्कर क्रैश का कारण नहीं बनते
- वर्कर प्रक्रिया सभी परीक्षण मामलों को SIGSEGV या हीप भ्रष्टाचार के बिना सहन करती है

चलाएँ: `make test-cve`

**स्कैनर व्यवहार:**

चूंकि पैकेज संस्करण `1.25.5` ही रहता है, स्कैनर अपने डेटाबेस में सलाह मौजूद होने पर CVE-2026-42945 को फ़्लैग करेंगे। यह अपेक्षित है - स्कैनर `(पैकेज-नाम, अपस्ट्रीम-संस्करण)` से मिलान करते हैं और यह जांच नहीं सकते कि स्रोत को पैच किया गया है या नहीं। VEX दस्तावेज़ इस निष्कर्ष को मशीन-पठनीय औचित्य के साथ दबाता है। स्कैनर दमन एक संचार तंत्र है, उपचार का प्राथमिक साक्ष्य नहीं। प्राथमिक साक्ष्य ऊपर दी गई पैच प्रोवेनेंस श्रृंखला और रिग्रेशन परीक्षण है।

---

## VEX (भेद्यता शोषण क्षमता आदान-प्रदान)

### VEX की आवश्यकता क्यों है

स्कैनर dpkg डेटाबेस से `(नाम, संस्करण)` द्वारा पैकेजों की पहचान करते हैं। हमारा पैकेज `nginx 1.25.5-1~bookworm+echo1` है - स्कैनर इसे अपस्ट्रीम संस्करण 1.25.5 के रूप में पार्स करते हैं और nginx ≤ 1.25.5 को प्रभावित करने वाले सभी CVE को फ़्लैग करते हैं।

बैकपोर्टेड फिक्स के लिए, स्कैनर यह निर्धारित नहीं कर सकता कि कमजोर कोड को पैच किया गया है। संस्करण जानबूझकर 1.25.5 ही रहता है ताकि पैकेज संगतता बनी रहे। VEX एक मशीन-पठनीय प्रमाणन प्रदान करता है कि CVE को संबोधित किया गया है, जो सत्यापन योग्य साक्ष्य से जुड़ा है।

### VEX विश्वसनीयता श्रृंखला

CVE-2026-42945 के लिए VEX कथन केवल कागजी कार्रवाई नहीं है। यह निम्न द्वारा समर्थित है:

1. **पैच प्रोवेनेंस** - `build/patches/CVE-2026-42945.provenance.json` सटीक अपस्ट्रीम स्रोत, व्युत्पत्ति विधि और फ़ाइल हैश का दस्तावेजीकरण करता है
2. **बिल्ड-समय सत्यापन** - `build.sh` यह सुनिश्चित करता है कि फिक्स मार्कर संकलित स्रोत में मौजूद है, विफलता पर बिल्ड को रोकता है
3. **बिल्ड प्रमाणन** - `artifacts/patch-attestation.json` बिल्ड के दौरान उत्पन्न पैच-पूर्व/पश्चात फ़ाइल हैश रिकॉर्ड करता है
4. **रिग्रेशन परीक्षण** - `test/test_cve_2026_42945.py` बिना क्रैश या भ्रष्टाचार के कमजोर कोड पथ का अभ्यास करता है
5. **स्वतंत्र पुनः व्युत्पत्ति** - `make verify-patch` दोनों अपस्ट्रीम टारबॉल डाउनलोड करता है और प्रदर्शित करता है कि प्रतिबद्ध पैच न्यूनतम सुरक्षा अंतर है

### VEX क्या कवर करता है

| CVE            | स्थिति  | औचित्य                         | साक्ष्य                                                   |
| -------------- | ------- | ----------------------------- | ---------------------------------------------------------- |
| CVE-2026-42945 | `fixed` | `vulnerable_code_not_present` | बैकपोर्ट पैच + प्रोवेनेंस + रिग्रेशन परीक्षण + बिल्ड गेट |

VEX का दायरा जानबूझकर संकीर्ण है: केवल वे CVE कवर किए जाते हैं जिन्हें इस परियोजना ने सत्यापन योग्य साक्ष्य के साथ सक्रिय रूप से उपचारित किया है। जो निष्कर्ष केवल "शिप किए गए संस्करण द्वारा कम होने की उम्मीद" है, उन्हें दबाया नहीं जाता - यह VEX को एक सामान्य दमन उपकरण के रूप में उपयोग करने से बचाता है।

### यह कैसे काम करता है

`build/generate-vex.sh` स्क्रिप्ट एक OpenVEX v0.2.0 दस्तावेज़ उत्पन्न करती है। इसे लागू करने के लिए स्कैनर कमांड:```bash
# Without VEX - CVE is reported (version-based match):
grype nginx-fixed > fixed-grype.txt

# With VEX - CVE is suppressed with justification:
grype nginx-fixed --vex vex.json > fixed-grype-vex.txt

स्कैनर साक्ष्य

VEX दमन सहेजे गए स्कैन आर्टिफैक्ट्स में देखने योग्य है। ध्यान दें कि स्कैनर डेटाबेस समय-समय पर पुनर्निर्मित होते हैं और CVE उपस्थिति रनों के बीच भिन्न हो सकती है। सहेजी गई baseline-grype.txt और fixed-grype.txt फाइलें समय-बिंदु साक्ष्य हैं। VEX दस्तावेज़ की वैधता स्कैनर DB स्थिति पर निर्भर नहीं करती - यह ऊपर दी गई प्रोवेनेंस श्रृंखला के माध्यम से स्वतंत्र रूप से सत्यापन योग्य है।


स्कैनर अखंडता

पैकेज नामकरण निर्णय

पैकेज का नाम nginx है (nginx-custom नहीं)। यह महत्वपूर्ण है क्योंकि:

  1. ईमानदार रिपोर्टिंग: यदि पैकेज का नाम बदल दिया जाता, तो स्कैनर इसे nginx के रूप में पहचान नहीं पाते और सभी nginx CVE चुपचाप गायब हो जाते - जिनमें अनफिक्स्ड CVE भी शामिल हैं। यह सुरक्षा की झूठी भावना है।
  2. VEX प्रदर्शन: VEX केवल उस CVE को दबा सकता है जिसे स्कैनर वास्तव में रिपोर्ट करता है। नाम बदले गए पैकेज VEX को अनावश्यक (और अप्रयोज्य) बना देते हैं।
  3. पैकेज प्रबंधन: इसे nginx नाम देना इसे निर्भरताओं को संतुष्ट करने और मानक Debian टूलिंग द्वारा प्रबंधित होने की अनुमति देता है।

स्कैनर डेटाबेस अस्थिरता

स्कैनर सलाहकार डेटाबेस समय-समय पर पुनर्निर्मित होते हैं। एक सप्ताह उपस्थित CVE अगले सप्ताह अनुपस्थित हो सकता है। यह परियोजना उपचार के प्राथमिक प्रमाण के रूप में स्कैनर आउटपुट पर निर्भर नहीं करती है। साक्ष्य श्रृंखला है:

  1. पैच प्रोवेनेंस (किसी भी स्कैनर से स्वतंत्र रूप से सत्यापन योग्य)
  2. बिल्ड-समय प्रमाणन (संकलन के दौरान उत्पन्न)
  3. रिग्रेशन परीक्षण (कमजोर कोड पथ का अभ्यास करता है)
  4. VEX दमन (स्कैनर-परत स्वीकारोक्ति)

सहेजी गई स्कैन फाइलें केवल समय-बिंदु साक्ष्य हैं।

स्कैनर क्या देखते हैं (फिक्स्ड इमेज)

PackageVersionCVE-2024-6119CVE-2026-42945
libssl33.0.20-1~deb12u1रिपोर्ट नहीं किया गया (संस्करण द्वारा फिक्स्ड)n/a
nginx1.25.5-1~bookworm+echo1n/aDB में होने पर रिपोर्ट किया गया (बैकपोर्ट स्कैनर को दिखाई नहीं देता)

--vex vex.json के साथ, CVE-2026-42945 खोज (यदि स्कैनर DB में मौजूद है) दबा दी जाती है। VEX दस्तावेज़ की वैधता प्रोवेनेंस श्रृंखला (पैच व्युत्पत्ति, बिल्ड प्रमाणन, रिग्रेशन परीक्षण) द्वारा स्थापित की जाती है, न कि केवल स्कैनर आउटपुट द्वारा।


संगतता परीक्षण

परीक्षण सूट (test/compat.py) nginx:1.25-bookworm और nginx-fixed दोनों को Docker कंटेनर के रूप में बूट करता है और व्यवहार की तुलना करता है। प्रत्येक अभिकथन सीधे लाइव फिक्स्ड इमेज का लाइव अपस्ट्रीम इमेज के विरुद्ध परीक्षण करता है।

89 अभिकथन। सभी पास।

इसके अतिरिक्त, test/test_cve_2026_42945.py बैकपोर्टेड CVE फिक्स को विशेष रूप से लक्षित करते हुए लगभग 20 अभिकथन प्रदान करता है (ऊपर "रिग्रेशन परीक्षण" देखें)।

क्या परीक्षण नहीं किया गया है

  • HTTP/3 QUIC प्रोटोकॉल व्यवहार (केवल --with-http_v3_module फ़्लैग उपस्थिति सत्यापित की गई है; कोई UDP/QUIC ट्रैफ़िक नहीं भेजा गया है)
  • लोड के तहत प्रदर्शन या विलंबता विशेषताएँ
  • सभी संभावित nginx कॉन्फ़िगरेशन निर्देश
  • विरले उपयोग किए जाने वाले डायनामिक मॉड्यूल (GeoIP, image_filter, XSLT) का व्यवहार, डिस्क पर .so फ़ाइलों की उपस्थिति सत्यापित करने के अलावा

Run:```bash make test

root@kitploit:~
## छवि का आकार

| छवि                      | आकार (arm64, `docker images`) |
| ------------------------ | ----------------------------- |
| `nginx:1.25-bookworm`   | ~278 MB                       |
| `nginx-fixed`            | ~332 MB                       |

निर्धारित छवि अपस्ट्रीम से बड़ी है। यह अपेक्षित है: आधिकारिक छवि अनुकूलित परतों में प्री-कंपाइल बाइनरी का उपयोग करती है, जबकि हमारी छवि बिल्ड आर्टिफैक्ट्स और पूर्ण रनटाइम निर्भरताओं (सभी 12 गतिशील मॉड्यूल के लिए पुस्तकालयों सहित) को `debian:bookworm-slim` आधार में स्थापित करती है। आकार का अंतर स्रोत-स्तरीय बिल्ड नियंत्रण के लिए एक व्यापार-बंद है, न कि कार्यक्षमता में प्रतिगमन।

---

## अवशिष्ट जोखिम मूल्यांकन

### निर्धारित छवि में शेष CVEs

निर्धारित छवि में अभी भी सिस्टम पुस्तकालयों में कमजोरियां हैं जो इस परियोजना द्वारा संबोधित नहीं की गई हैं (बिंदु-समय; वर्तमान स्थिति के लिए `make scan` चलाएं):

| जोखिम स्तर | पैकेज               | CVE(s)                                               | नोट्स                                                                                                         |
| ----------- | ------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| उच्च        | nginx               | CVE-2023-44487                                       | अपस्ट्रीम के अनुसार nginx ≥ 1.25.3 में कम किया गया; स्कैनर अभी भी फ़्लैग करता है क्योंकि डेबियन ट्रैकर ने सलाह को बंद नहीं किया है |
| गंभीर       | libgnut30           | CVE-2026-42010, CVE-2026-33845                       | बुकवर्म में कोई फिक्स उपलब्ध नहीं                                                                                     |
| गंभीर       | libc6/libc-bin      | CVE-2026-5450                                        | इस डेबियन रिलीज़ में ठीक नहीं किया जाएगा                                                                                 |
| उच्च        | libc6/libc-bin      | CVE-2026-5928, CVE-2026-5435, CVE-2026-4437          | बुकवर्म के लिए glibc ठीक नहीं किया जाएगा                                                                                     |
| उच्च        | dpkg                | CVE-2025-6297, CVE-2026-2219                         | ठीक करने योग्य (1.21.23 में अपग्रेड करें)                                                                                     |
| उच्च        | libldap-2.5-0       | CVE-2023-2953                                        | ठीक नहीं किया जाएगा                                                                                                        |
| उच्च        | curl/libcurl4       | CVE-2026-5773, CVE-2026-6276                         | ठीक नहीं किया जाएगा                                                                                                        |
| उच्च        | ncurses             | CVE-2025-69720                                       | ठीक नहीं किया जाएगा                                                                                                        |

ये `debian:bookworm-slim` से विरासत में मिले हैं और इस परियोजना के nginx-केंद्रित CVE उपचार के दायरे से बाहर हैं।

### इस दृष्टिकोण की सीमाएं

1. **हर्मेटिक नहीं।** आधार छवि और apt पैकेज बिल्ड समय पर लाइव डेबियन रिपॉजिटरीज से हल किए जाते हैं। आधार छवि SHA को पिन करना और apt स्नैपशॉट का उपयोग करने से पुनरुत्पादनीयता में सुधार होगा।
2. **कोई व्यवहारिक QUIC परीक्षण नहीं।** HTTP/3 समर्थन संकलित है (ध्वज द्वारा सत्यापित) लेकिन परीक्षण सूट में कोई QUIC ट्रैफ़िक का अभ्यास नहीं किया जाता।
3. **कोई प्रदर्शन सत्यापन नहीं।** 50-समवर्ती-अनुरोध परीक्षण शुद्धता साबित करता है, थ्रूपुट या विलंबता समानता नहीं।
4. **केवल मॉड्यूल लोडिंग।** गतिशील मॉड्यूल (GeoIP, image_filter, XSLT) मौजूद और लोड करने योग्य होने की पुष्टि की जाती है, लेकिन उनका फीचर व्यवहार बुनियादी लोड से परे अभ्यास नहीं किया जाता।
5. **एकल-आर्किटेक्चर साक्ष्य।** परीक्षण केवल बिल्ड होस्ट आर्किटेक्चर पर चलते हैं (विकास में arm64; मल्टी-आर्क के लिए CI की आवश्यकता होगी)।

### भविष्य में सुधार (लागू नहीं)

1. हर्मेटिक बिल्ड के लिए आधार छवि डाइजेस्ट को पिन करें और apt स्नैपशॉट URL का उपयोग करें।
2. ट्रांज़िटिव डिप्स के रूप में खींचे गए अनावश्यक पैकेज (ncurses, util-linux) को हटाएं।
3. SBOM उत्पन्न करें (`make sbom` लक्ष्य मौजूद है, `syft` का उपयोग करता है) और SBOM purl के माध्यम से VEX से लिंक करें।
4. `cosign` के साथ छवि पर हस्ताक्षर करें और VEX + SBOM + पैच-प्रमाणपत्र को OCI प्रमाणपत्र के रूप में संलग्न करें।
5. स्वचालित बिल्ड → परीक्षण → स्कैन → पुश के लिए CI पाइपलाइन (GitHub Actions) जोड़ें।
6. HTTP/3 प्रोटोकॉल परीक्षण जोड़ें (QUIC क्लाइंट, प्रमाणपत्र सेटअप, UDP पोर्ट)।
7. OS-स्तरीय CVE शोर को पूरी तरह समाप्त करने के लिए डिस्ट्रोलेस बेस पर विचार करें।
8. परीक्षण लोड के तहत कोई हीप भ्रष्टाचार साबित करने के लिए ASan (AddressSanitizer) बिल्ड वेरिएंट जोड़ें।

---

## बिल्ड फ़्लैग्स बनाम अपस्ट्रीम

`build.sh` में `./configure` फ़्लैग्स आधिकारिक `nginx:1.25-bookworm` छवि में `nginx -V` द्वारा रिपोर्ट किए गए फ़्लैग्स के समान हैं। यह `test/compat.py::test_nginx_version` द्वारा सत्यापित किया जाता है, जो `-ffile-prefix-map=<path>` अंतर को सामान्य करता है और शेष फ़्लैग्स की तुलना वर्ण-दर-वर्ण करता है।

उल्लेखनीय फ़्लैग्स (दोनों छवियों में मौजूद):

| फ़्लैग / सुविधा              | उद्देश्य                                                                       |
| ---------------------------- | ------------------------------------------------------------------------------ |
| `--prefix=/etc/nginx`        | डॉकर छवि सम्मेलन (डेबियन के `/usr/share/nginx` का नहीं)                       |
| `--with-http_v3_module`      | अंतर्निहित QUIC स्टैक (OpenSSL QUIC API से स्वतंत्र)                           |
| `--with-pcre` (PCRE2)        | `libpcre2-8-0` से लिंक करता है (लीगेसी PCRE1 नहीं)                               |
| `--with-stream`              | TCP/UDP प्रॉक्सी मॉड्यूल (गतिशील)                                                 |
| सुरक्षा कठोरीकरण            | `-fstack-protector-strong`, `FORTIFY_SOURCE=2`, RELRO, PIE                    |
| गतिशील मॉड्यूल (×12)        | geoip, stream_geoip, image_filter, xslt, http_js, stream_js (रिलीज़ + डीबग) |
| `--with-debug` (डीबग)        | nginx-debug बाइनरी समान फ़्लैग्स + डीबग के साथ अलग से बनाई गई                 |

---

## डेबियन पैकेज

`.deb` पैकेज मेटाडेटा:```
Package: nginx
Version: 1.25.5-1~bookworm+echo1
Depends: libc6 (>= 2.34), libcrypt1 (>= 1:4.1.0), libpcre2-8-0 (>= 10.22),
         libssl3 (>= 3.0.14), zlib1g (>= 1:1.2.11), libgeoip1 (>= 1.6.12),
         libgd3 (>= 2.1.0~alpha~), libxml2 (>= 2.7.4), libxslt1.1 (>= 1.1.25),
         lsb-base (>= 3.0-6), adduser
Provides: httpd, nginx, nginx-r1.25.5
Conflicts: nginx-common, nginx-core
Replaces: nginx-common, nginx-core

मुख्य पैकेजिंग निर्णय:

  • libssl3 (>= 3.0.14) - स्पष्ट रूप से पैच किए गए OpenSSL की आवश्यकता है (अपस्ट्रीम में >= 3.0.0 घोषित है)। यह वह तंत्र है जो CVE-2024-6119 फिक्स को लागू करता है।
  • Provides: nginx-r1.25.5 - डायनामिक मॉड्यूल पैकेजों को संतुष्ट करता है जो इस वर्चुअल पैकेज पर निर्भर हैं।
  • Conffiles dpkg से पंजीकृत: /etc/nginx/nginx.conf और /etc/nginx/conf.d/default.conf। IPv6 एंट्रीपॉइंट स्क्रिप्ट की dpkg-query --showformat जांच के लिए यह आवश्यक है।
  • postinst uid/gid 101 और शेल /bin/false (अपस्ट्रीम से मेल खाता है - परीक्षण सूट में सत्यापित) के साथ nginx उपयोगकर्ता/समूह बनाता है।
  • शिप करता है: nginx बाइनरी, nginx-debug बाइनरी, सभी 12 .so मॉड्यूल, पूर्ण /etc/nginx कॉन्फ़िग ट्री, init.d/systemd/logrotate फ़ाइलें, मैन पेज, HTML डिफ़ॉल्ट, और /etc/nginx/modules → /usr/lib/nginx/modules सिमलिंक।

डिज़ाइन निर्णय और व्यापार-बंद

  1. पैकेज का नाम nginx है, nginx-custom नहीं। यदि नाम बदला जाता, तो स्कैनर इसे nginx सलाहकारों से मेल नहीं कर पाते - सभी nginx CVE, जिनमें अनफिक्स्ड भी शामिल हैं, रिपोर्ट से चुपचाप गायब हो जाते। नाम nginx रखने से स्कैनर की ईमानदार रिपोर्टिंग सुनिश्चित होती है और VEX को सार्थक बनाता है।

  2. VEX के लिए CVE दृश्यता आवश्यक है। VEX का उद्देश्य एक ऐसे CVE को दबाना है जो पहले से रिपोर्ट किया गया है। यदि स्कैनर को CVE नहीं मिलता (पैकेज का नाम बदलने या DB टाइमिंग के कारण), तो VEX के पास दबाने के लिए कुछ नहीं होता।

  3. libssl3 (>= 3.0.14) पैकेज निर्भरता के रूप में। यह उम्मीद करने के बजाय कि रनटाइम बेस में संयोग से पैच किया गया OpenSSL हो, .deb एक ऐसे संस्करण की कठोर आवश्यकता रखता है जिसमें CVE-2024-6119 का फिक्स शामिल है।

  4. स्कैनर डेटाबेस अस्थिरता। सलाहकार डेटाबेस समय-समय पर पुनर्निर्मित होते हैं। एक CVE जो एक सप्ताह मौजूद है, अगले सप्ताह अनुपस्थित हो सकता है। इस रिपो में सहेजी गई स्कैन फ़ाइलें समय-बिंदु साक्ष्य हैं; वर्तमान स्कैन भिन्न हो सकते हैं।

  5. AI उपकरणों का उपयोग। GitHub Copilot ने पैच विश्लेषण (nginx 1.25.5 और 1.30.1 स्रोत ट्री की तुलना), परीक्षण सूट संरचना, पैकेज-नाम-बदलने वाले स्कैनर से बचने की समस्या की पहचान, और VEX दस्तावेज़ लेखन में सहायता की। डेबियन पैकेजिंग विवरण और Grype संस्करण-मिलान अनुमानों के लिए मैन्युअल सत्यापन आवश्यक था।

टूल डाउनलोड करें
फ़ील्डमान
घटकnginx ngx_http_rewrite_module
गंभीरतामध्यम (nginx.org वर्गीकरण)
आधार संस्करणnginx 1.25.5
इसमें ठीक किया गयाnginx 1.30.1 (2026-05-13 को जारी किया गया)
NVDhttps://nvd.nist.gov/vuln/detail/CVE-2026-42945
सलाहhttps://my.f5.com/manage/s/article/K000161019
अपस्ट्रीम बदलावnginx 1.30.1 CHANGES: "रीराइट मॉड्यूल में हीप मेमोरी बफर ओवरफ्लो"
श्रेणीक्या तुलना की जाती हैअभिकथन गणना
इमेज मेटाडेटाEntrypoint, Cmd, ExposedPorts, User, StopSignal, Env, Labels7
nginx -V आर्गुमेंट्सकॉन्फ़िगर फ़्लैग्स समान (-ffile-prefix-map पथ के लिए सामान्यीकृत)1
डायनामिक मॉड्यूलसभी 12 अपस्ट्रीम .so फ़ाइलें मौजूद + /etc/nginx/modules सिमलिंक13
nginx-debug बाइनरी--with-debug और --with-http_v3_module डीबग -V में मौजूद2
फाइलसिस्टम लेआउट~20 प्रमुख पथ, /dev/stdout और /dev/stderr के लिए लॉग सिमलिंक~20
उपयोगकर्ता/समूह कॉन्फ़िगgetent passwd/group nginx आउटपुट समान2
dpkg कॉन्फ़ाइल्सdpkg-query default.conf और nginx.conf को कॉन्फ़ाइल के रूप में रिपोर्ट करता है1
पैकेज प्रदानdpkg -s nginx Provides: nginx-r1.25.5 दिखाता है1
NJS बाइनरीnjs -v 0.8.4 लौटाता है1
IPv6 एंट्रीपॉइंट10-listen-on-ipv6-by-default.sh default.conf को समान रूप से परिवर्तित करता है1
Envsubst टेम्पलेट्सNGINX_ENVSUBST टेम्पलेट प्रतिस्थापन समान आउटपुट उत्पन्न करता है1
स्टार्टअप लॉगसभी एंट्रीपॉइंट लॉग लाइनें अपस्ट्रीम फॉर्मेट से मेल खाती हैं1
HTTP GET/HEAD/POSTकई एंडपॉइंट्स के लिए प्रतिक्रिया बॉडी, स्थिति, हेडर मेल खाते हैं~10
दूषित अनुरोधरॉ TCP त्रुटि प्रतिक्रिया समान1
स्थैतिक फ़ाइल सर्विंगमाउंटेड फ़ाइल सही सामग्री के साथ सर्व की गई1
TLS समाप्तिस्व-हस्ताक्षरित प्रमाणपत्र के साथ HTTPS समान रूप से काम करता है1
ग्रेसफुल शटडाउनSIGQUIT स्वच्छ निकास (कोड 0) उत्पन्न करता है1
कॉन्फ़िग रीलोडSIGHUP बिना रीस्टार्ट के नया कॉन्फ़िग लागू करता है1
समवर्ती अनुरोध50 समानांतर अनुरोध सभी 200 लौटाते हैं1