Publicat în

F5 lansă patch-uri de urgență NGINX pentru trei vulnerabilități critique CVSS 9.2: ce trebuie să faci acum

F5 a publicat în 17 iunie 2026 un advisory out-of-band (OOB) care acoperă trei vulnerabilități critique în NGINX, toate evaluate la CVSS 4.0 9.2: CVE-2026-15176, CVE-2026-97205 și CVE-2026-93479. Produsele afectate includ NGINX Plus, NGINX Open Source, NGINX Ingress Controller, NGINX Gateway Fabric și NGINX Instance Manager. Deși F5 nu a detectat exploatare active în wild, istoricul recent — opt vulnerabilități F5 semnalate de CISA în cinci ani, patru folosite în ransomware — face ca patching-ul să fie o prioritate absolută pentru orice echipă DevOps sau administrator Linux care expune servicii prin NGINX. În acest articol analizăm vectorii de atac, mitigările de configurare și pașii concreți de inventariere și remediere.

Vulnerabilități în ngx_http_core_module: heap buffer overflow în worker processes

Primele două CVE-uri, CVE-2026-15176 și CVE-2026-97205, rezidă în modulul ngx_http_core_module și pot declanșa un heap buffer overflow în procesul worker al NGINX. Corupția memoriei duce la crash sau restart al worker-ului, iar în scenarii unde ASLR (Address Space Layout Randomization) este dezactivat sau poate fi bypassuit, un atacant poate obține execuție de cod remote (RCE).

CVE-2026-15176 este declanșată combinarea variabilei $request_filename cu directiva alias într-un bloc location — un pattern frecvent în configurări care servesc fișiere statice sau facă proxy către backend-uri. CVE-2026-97205 necesită activarea AIO (Asynchronous I/O) împreună cu SSI (Server Side Includes). Ambele pot fi armate pentru DoS simplu (restart continuu al worker-ilor) sau, în absența ASLR, pentru RCE complet.

Un exemplu de configurație vulnerabilă pentru CVE-2026-15176:

location /static/ {
    alias /var/www/static/;
    try_files $uri $uri/ =404;
    # $request_filename este evaluat implicit aici
}

Pentru CVE-2026-97205, configurarea riscantă arată astfel:

http {
    aio on;                 # AIO activat global sau în context
    location /ssi/ {
        ssi on;             # SSI activat
    }
}

CVE-2026-93479: map directive cu unnamed regex captures

A treia vulnerabilitate, CVE-2026-93479, se află în directiva map și este declanșată de cereri HTTP crafted care cauzează heap buffer overflow prin unnamed regex captures. La fel ca celelalte două, permite DoS și, când ASLR nu protejează, RCE.

Pattern-ul problematic:

map $request_uri $backend {
    ~^/api/(.*)/users$  backend_users;   # unnamed capture (.*) — RISCANT
    default             backend_default;
}

Mitigarea recomandată de F5: evită captures ne-numite și folosește named captures limitate la blocul cu regex match:

map $request_uri $backend {
    ~^/api/(?<segment>[^/]+)/users$  backend_users;  # named capture — SIGUR
    default                            backend_default;
}

Acest lucru nu doar că eliminate vectorul de atac, ci forțează și o practică de configurare mai clară și mai ușor de auditat.

Contextul: NGINX Rift (CVE-2026-42945) și istoricul F5

Această tripletă de vulnerabilități nu apare izolat. În mai 2026, CVE-2026-42945 — surnumat NGINX Rift — a expus un overflow în modulul rewrite cu un proof-of-concept RCE public. Frank Dickson de la Dickson Research notează că „al doilea flaw alias și rewrite divulgat această săptămână se află în același cartier de cod” și că „atacatorii citesc și changelog-urile”. În iunie, CVE-2026-42530 (use-after-free în ngx_http_v3_module / HTTP/3 QUIC) a fost patch-uita de asemenea out-of-band.

F5 servește 80% din Fortune 500, iar NGINX rulează pe aproximativ 38% din site-urile active globale. CISA a flaguit opt vulnerabilități F5 exploatate activ în cinci ani, patru utilizate în campanii ransomware. Breșa națională de 2025 și Emergency Directive 26-01 au vizat BIG-IP, dar codul sursă NGINX nu a fost accesat — până acum. Tendința este clară: suprafața de atac NGINX este scrutinată intenș.

Inventariere și auditare: primul pas înainte de patching

Seva Ioussoufovitch (Info-Tech Research Group) și Frank Dickson sunt de acord: inventarierea este pasul zero. NGINX „se ascunde” în:

  • Ingress controllers Kubernetes (NGINX Ingress Controller, NGINX Gateway Fabric)
  • Imagini container de bază (de multe ori vechi)
  • Distribuții Linux (Amazon Linux, Ubuntu, Debian, RHEL) — unde versiunile patch-uite pot întârzia
  • Appliance-uri și produse integrate (BIG-IP, BIG-IQ, WAF-uri)

Comenzi practice pentru inventariere rapidă:

# 1. Găsește toate procesele NGINX active și versiunile
ps aux | grep nginx
nginx -V 2>&1 | head -1

# 2. Verifică pachetele instalate (RHEL/CentOS/Fedora)
rpm -qa | grep -i nginx
dnf list installed | grep nginx

# 3. Verifică pachetele (Debian/Ubuntu)
dpkg -l | grep nginx
apt list --installed | grep nginx

# 4. Container images — scan local sau în registry
docker images | grep nginx
# sau folosește trivy/syft/grype pentru SBOM complet
trivy image --scanners vuln nginx:latest

# 5. Kubernetes — listează ingress controllers și pods
kubectl get pods -A -l app=nginx-ingress
kubectl get ingressclass
kubectl describe configmap -n ingress-nginx nginx-configuration

Mitigări de configurare immediate (workarounds până la patching)

Dacă patching-ul nu poate fi aplicat astăzi, F5 și analiștii recomandă următoarele mitigări, aplicate în ordine de prioritate:

  1. CVE-2026-15176: Elimină combinația $request_filename + alias în același location. Refactorizează cu root + try_files sau mută alias într-un location separat fără $request_filename.
  2. CVE-2026-97205: Dezactivează aio și ssi în zonele expuse internetului. Dacă SSI e necesar, izolează-l pe un worker/pool dedicat, fără AIO.
  3. CVE-2026-93479: Rescrie toate blocurile map cu named captures (?<nume>) și elimină captures ne-numite.
  4. ASLR: Verifică că ASLR e activat la nivel de OS (cat /proc/sys/kernel/randomize_va_space — trebuie să returneze 2). Rulează worker-ii NGINX ca user neprivilegiat (user nginx; în nginx.conf).
  5. Segmentare: Izo lează planul de control (NGINX) de crown jewels (baze de date, API-uri interne) prin network policies, firewalls sau service mesh.

Monitorizare: alertează-te pe restart-uri frecvente ale worker-ilor (systemctl status nginx, journalctl -u nginx, sau Prometheus nginx_process_resident_memory_bytes + nginx_process_cpu_seconds_total spikes).

Pași practici de acțiune imediată

  1. Inventariează toate instanțele NGINX (VM, container, Kubernetes, appliance) și notează versiunea exactă.
  2. Auditează configurațiile pentru cele trei pattern-uri vulnerabile (alias+$request_filename, aio+ssi, map cu unnamed captures).
  3. Aplică mitigările de configurare de mai sus pe sistemele care nu pot fi patch-uite în următoarele 24 ore.
  4. Actualizează la versiunile patch-uite: NGINX Open Source 1.31.2 / 1.30.3, NGINX Plus R32 / R31, NGINX Gateway Fabric 1.2.1, NGINX Instance Manager 2.5.1 — descărcați de pe my.f5.com sau repo-urile oficiale.
  5. Validează patch-ul: nginx -t && systemctl reload nginx; verifică log-urile pentru erori de startup.
  6. Verifică ASLR și hardening-ul OS pe toate host-urile NGINX.
  7. Documentează remedierea și planifică re-auditare la 30 de zile.

Concluzie

Cele trei vulnerabilități critique NGINX (CVE-2026-15176, CVE-2026-97205, CVE-2026-93479) demonstrează că suprafața de atac a *front door*-ului infrastructurii moderne — reverse proxy, load balancer, Kubernetes ingress — se extinde rapid. Fără exploatare confirmată în wild momentan, dar cu un precedent periculos (NGINX Rift cu PoC public, opt CVE-uri F5 exploatate de CISA în cinci ani), fereastra de remediere este îngustă. Înainte de a rula apt upgrade nginx sau dnf update nginx, știe ce rulează, unde rulează și ce configurare are. Patch-ul de pe site-ul vendor-ului nu patch-uiește serverele tale — doar tu o faci. Pentru infrastructură dedicată hardening-uita și gestionată profesional, explorează soluțiile de la dedicated-servers.ro sau serverele optimizate de la serverspan.ro.

–

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *