Sajber bezbednosna zajednica suočava se sa jednim od najznačajnijih otkrića u novijoj istoriji internet infrastrukture. Ranjivost pod nazivom NGINX Rift (CVE-2026-42945), sa CVSS v4 ocenom od čak 9.2, predstavlja kritičan bezbednosni propust koji pogađa i open-source (NGINX Open Source) i komercijalne (NGINX Plus) verzije ovog popularnog veb-servera i reverznog proksija. Ono što ovu situaciju čini posebno alarmantnom jeste činjenica da je kod u kojem se nalazi greška napisan pre skoro 18 godina. To znači da su generacije veb-servera širom sveta, koje opslužuju ogroman procenat ukupnog saobraćaja na internetu, sve vreme bile potencijalno izložene udaljenom izvršavanju koda (RCE) i napadima uskraćivanja usluge (DoS). U ovom članku detaljno ćemo analizirati anatomiju ove ranjivosti, tehničku pozadinu unutar ngx_http_rewrite_module modula, mehanizme eksploatacije, kao i konkretne korake koje administratori moraju preduzeti kako bi zaštitili svoje sisteme. 1. Šta je NGINX Rift? Tehnička pozadina i anatomija propusta U osnovi CVE-2026-42945 ranjivosti nalazi se heap buffer overflow (prekoračenje bafera na gomili). Do ovog fenomena dolazi kada program upiše više podataka u memorijski prostor alociran na „gomili“ (heap) nego što je taj prostor predviđen da primi, čime se prepisuju susedni memorijski blokovi. U slučaju NGINX Rift-a, problem je lociran duboko unutar jezgra sistema, tačnije u modulu ngx_http_rewrite_module. Uloga ngx_http_rewrite_module modula Ovaj modul je jedan od fundamentalnih stubova NGINX-a. On se koristi za: Promenu URI-ja dolaznih HTTP zahteva korišćenjem regularnih izraza (regex). Preusmeravanje klijenata (301/302 redirect). Uslovno izvršavanje konfiguracionih direktiva pomoću if naredbi. Skoro svaka produkciona NGINX konfiguracija koristi rewrite direktive za optimizaciju SEO linkova, preusmeravanje sa HTTP na HTTPS, ili za napredno rutiranje saobraćaja ka specifičnim mikroservisima. Gde je nastala greška u kodu? Problem leži u načinu na koji NGINX rukuje internom alokacijom memorije kada parsira kompleksne regularne izraze u kombinaciji sa specifičnim flagovima (kao što su permanent, redirect, break, ili last) i varijablama koje unosi korisnik unutar samog HTTP zahteva. Prilikom evaluacije regularnog izraza, modul dinamički računa dužinu stringa koji treba da zameni originalni URI. Zbog specifične logičke greške u manipulaciji pokazivačima (pointer arithmetic) koja datira još iz ranih faza razvoja ovog modula, pod određenim uslovima dolazi do pogrešnog proračuna potrebne veličine bafera za smeštanje rezultata. Kada napadač pošalje ekstremno dugačak, specijalno strukturisan HTTP zahtev koji trigeruje modifikaciju kroz regularni izraz, NGINX alocira manji memorijski blok na gomili nego što je stvarno potrebno. Prilikom prepisivanja stringa, podaci se „prelivaju“ van granica alociranog prostora, uništavajući ili menjajući susedne meta-podatke u memoriji radnog procesa (worker process). 2. Vektori napada: Od DoS-a do RCE-a Uspešna eksploatacija ove ranjivosti zavisi od konfiguracije veb-servera, ali generalno se deli na dva scenarija sa različitim nivoima destruktivnosti. Scenario A: Potpuno uskraćivanje usluge (Denial of Service – DoS) Ovo je lakše ostvariv scenario. Kada dođe do prekoračenja bafera na gomili i oštećenja kritičnih struktura podataka unutar memorije, NGINX radni proces (worker process) doživljava segmentacionu grešku (Segmentation Fault) i momentalno puca (crash). Iako je NGINX dizajniran tako da master proces automatski podiže novi radni proces kada stari otkaže, konstantan priliv malicioznih HTTP zahteva može dovesti do stalnog rušenja svih radnih procesa. Rezultat je stopostotno zauzeće CPU-a, iscrpljivanje resursa i potpuna nedostupnost veb-sajta ili aplikacije za legitimne korisnike. Scenario B: Udaljeno izvršavanje koda (Remote Code Execution – RCE) Znatno opasniji scenario, koji opravdava CVSS ocenu 9.2, jeste preuzimanje kontrole nad tokom izvršavanja programa. Pažljivim i preciznim manipulisanjem strukturom memorije (tehnika poznata kao heap grooming ili heap feng shui), napadač može podmetnuti sopstveni izvršni kod (shellcode) u prepisani prostor. Kada NGINX radni proces pokuša da pristupi funkcijskom pokazivaču koji je prepisan malicioznom adresom, izvršavanje se preusmerava na kod napadača. Budući da se NGINX radni procesi obično izvršavaju pod privilegijama specifičnog korisnika (npr. www-data ili nginx), napadač dobija pristup sistemu sa tim nivoom prava. Od tog trenutka, napadač može: Da čita osetljive podatke sa servera (uključujući TLS/SSL privatne ključeve). Da pristupa lokalnim bazama podataka i konfiguracionim fajlovima. Da pokuša lateralno kretanje (lateral movement) kroz lokalnu mrežu kako bi kompromitovao druge servere. 3. Kako prepoznati ranjivost: Identifikacija ugroženih sistema Da biste utvrdili da li su vaši sistemi ranjivi na NGINX Rift, potrebno je da sprovedete reviziju verzija i konfiguracija. Provera verzije NGINX-a Prvi korak je identifikacija verzije koja se izvršava na vašim serverima. Pokrenite sledeću komandu u terminalu: Bash nginx -v Ili, za detaljnije informacije o kompajliranim modulima: Bash nginx -V Budući da je propust prisutan skoro 18 godina, gotovo sve starije verzije NGINX Open Source i NGINX Plus softvera su ranjive, osim onih koje su eksplicitno zakrpljene u najnovijim bezbednosnim izdanjima. Analiza konfiguracionih fajlova (nginx.conf) Ranjivost se može aktivirati samo ako je aktivna direktiva unutar ngx_http_rewrite_module. Potrebno je pregledati sve konfiguracione fajlove (uključujući one u /etc/nginx/sites-enabled/ ili /etc/nginx/conf.d/) i potražiti ključne reči kao što su: rewrite if return (u određenim kontekstima evaluacije varijabli) Primer ranjivog konteksta u konfiguraciji: Nginx server { listen 80; server_name primer.rs; location /stari-deo/ { # Ako se koristi uneti URI za kreiranje novog kompleksnog stringa, # sistem može biti ranjiv na CVE-2026-42945 rewrite ^/stari-deo/(.*)$ /novi-deo/$1 last; } } 4. Koraci za remedijaciju i hitnu sanaciju (Mitigation) Jedini trajan i stopostotno siguran način zaštite jeste ažuriranje softvera. Međutim, u produkcionim okruženjima gde trenutni update nije moguć zbog procesa testiranja stabilnosti, postoje privremene mere. Korak 1: Hitno ažuriranje (Primarna preporuka) Razvojni timovi NGINX-a izdali su zvanične zakrpe. Potrebno je ažurirati NGINX na najnoviju stabilnu verziju preko zvaničnih repozitorijuma distribucije koju koristite. Za Debian/Ubuntu sisteme: Bash sudo apt update sudo apt --only-upgrade install nginx Za RHEL/Rocky Linux/AlmaLinux sisteme: Bash sudo dnf check-update sudo dnf upgrade nginx Nakon ažuriranja, obavezno proverite ispravnost konfiguracije i restartujte servis: Bash sudo nginx -t sudo systemctl restart nginx Korak 2: Privremena ublažavanja (Mitigation) ako ažuriranje nije odmah moguće Ukoliko ste primorani da odložite ažuriranje, možete primeniti sledeće korake kako biste smanjili površinu napada (attack surface): Privremeno onemogućavanje kompleksnih rewrite pravila: Ako neka pravila nisu kritična za rad aplikacije, komentarišite ih (dodavanjem # na početak linije) i ponovo učitajte konfiguraciju (nginx -s reload). Implementacija Web Application Firewall-a (WAF): Ispred NGINX-a postavite WAF (kao što je AWS WAF, Cloudflare ili lokalni ModSecurity) sa pravilima koja striktno ograničavaju maksimalnu dužinu URI-ja i HTTP zaglavlja, kao i pravila koja detektuju neuobičajene paterne u regularnim izrazima. Smanjenje veličine prihvaćenih zaglavlja i bafera na nivou NGINX-a: Iako ovo ne neutrališe samu ranjivost, može otežati isporuku velikih malicioznih payload-a.Nginxclient_header_buffer_size 1k; large_client_header_buffers 2 4k; 5. Praćenje anomalija: Detekcija pokušaja eksploatacije u logovima Sistem administratori i SOC (Security Operations Center) analitičari moraju obratiti pažnju na specifične indikatore kompromitacije (IoC) u sistemskim logovima. Indikatori u error.log fajlu Glavni znak da je napadač pokušao (uspešno ili neuspešno) da eksploatiše NGINX Rift jeste učestalo pucanje radnih procesa. Potražite unose poput ovih: Plaintext 2026/05/14 09:12:43 [alert] 12345#12345: worker process 12346 exited on signal 11 (core dumped) Signal 11 označava SIGSEGV (segmentation fault). Ako primetite seriju ovakvih alarma u kratkom vremenskom intervalu, velika je verovatnoća da je server pod aktivnim napadom. Indikatori u access.log fajlu Analizirajte zahteve koji imaju abnormalno dugačke URI staze ili sadrže bizarne nizove karaktera namenjene izvršavanju na gomili. Možete koristiti alat poput grep za brzu pretragu sumnjivih zahteva sa neobično velikim brojem karaktera: Bash awk 'length($7) > 1024' /var/log/nginx/access.log (Ova komanda filtrira i prikazuje sve zahteve gde je URI duži od 1024 karaktera). Zaključak i lekcija za budućnost Slučaj NGINX Rift (CVE-2026-42945) šalje jasnu poruku globalnoj IT zajednici: starost koda i njegova dugogodišnja stabilnost nisu garancija apsolutne bezbednosti. Činjenica da je fundamentalni propust u jednom od najkorišćenijih alata današnjice ostao neprimećen skoro dve decenije naglašava potrebu za kontinuiranim, dubinskim auditom otvorenog koda (open-source security auditing) uz pomoć savremenih automatizovanih alata za statičku i dinamičku analizu (SAST/DAST), kao i tehnikama “fuzzing”-a memorije. Za sistem administratore i inženjere, ovaj incident predstavlja poziv na akciju. Vremenski prozor između objavljivanja ranjivosti i kreiranja stabilnih exploit alata od strane napadača postaje sve kraći. Zbog toga su brza inventarizacija sistema, primena bezbednosnih zakrpa i striktno praćenje sistemskih logova jedini efikasni odgovori na pretnje ovog kalibra. Post navigation Digitalni potres u lancu snabdevanja: Grupa „Nitrogen” udarila na Foxconn, ugroženi tajni podaci tehnoloških giganta Windows DNS Client Ranjivost (CVE-2026-41096)