Podatność w serwerze HTTP/HTTPS TinyWeb (wersje przed 2.01) umożliwia nieuwierzytelnionemu zdalnemu atakującemu ominięcie mechanizmów kontroli parametrów CGI. W zależności od konfiguracji serwera skutkuje to ujawnieniem kodu źródłowego hostowanych skryptów lub pełnym zdalnym wykonaniem kodu (RCE).
▸ Pokaż oryginał (EN)
TinyWeb is a web server (HTTP, HTTPS) written in Delphi for Win32. A vulnerability in versions prior to 2.01 allows unauthenticated remote attackers to bypass the web server's CGI parameter security controls. Depending on the server configuration and the specific CGI executable in use, the impact is either source code disclosure or remote code execution (RCE). Anyone hosting CGI scripts (particularly interpreted languages like PHP) using vulnerable versions of TinyWeb is impacted. The problem has been patched in version 2.01. If upgrading is not immediately possible, ensure `STRICT_CGI_PARAMS` is enabled (it is defined by default in `define.inc`) and/or do not use CGI executables that natively accept dangerous command-line flags (such as `php-cgi.exe`). If hosting PHP, consider placing the server behind a Web Application Firewall (WAF) that explicitly blocks URL query string parameters that begin with a hyphen (`-`) or contain encoded double quotes (`%22`).
Błąd sklasyfikowany jako CWE-78 (OS command injection) oraz CWE-88 (argument injection) polega na nieprawidłowej walidacji parametrów przekazywanych przez URL do wykonywalnych plików CGI. Atakujący może spreparować żądanie HTTP zawierające parametry query string zaczynające się od myślnika (`-`) lub zawierające zakodowane cudzysłowy (`%22`), które są następnie przekazywane bezpośrednio jako argumenty wiersza poleceń do procesu CGI. W przypadku użycia interpreterów takich jak `php-cgi.exe` tego rodzaju argumenty mogą być interpretowane jako przełączniki sterujące zachowaniem programu, co prowadzi do wykonania dowolnego kodu lub ujawnienia plików źródłowych.
Nieuwierzytelniony zdalny atakujący może wykonać dowolny kod na serwerze (RCE) lub uzyskać dostęp do kodu źródłowego hostowanych skryptów, co może prowadzić do przejęcia kontroli nad systemem oraz wycieku danych.
Należy zaktualizować TinyWeb do wersji 2.01, w której problem został naprawiony. Jeśli natychmiastowa aktualizacja nie jest możliwa: upewnić się, że opcja `STRICT_CGI_PARAMS` jest włączona (domyślnie zdefiniowana w pliku `define.inc`), unikać używania plików wykonywalnych CGI akceptujących niebezpieczne flagi wiersza poleceń (np. `php-cgi.exe`). W przypadku hostowania PHP zaleca się umieszczenie serwera za Web Application Firewall (WAF) blokującym parametry query string zaczynające się od `-` lub zawierające zakodowany cudzysłów (`%22`).
Ritlabs TinyWeb w wersjach wcześniejszych niż 2.01 — dotyczy każdego, kto hostuje skrypty CGI (szczególnie w interpretowanych językach, np. PHP) przy użyciu podatnych wersji serwera.
Podatność dotyczy oprogramowania open-source dostępnego na GitHub. Patch został opublikowany w wersji 2.01 (commit d9dbda8). Szczegółowe informacje dostępne w oficjalnym security advisory producenta (GHSA-rfx5-fh9m-9jj9) oraz na stronie autora (masiutin.net).
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XRitlabs Tinyweb
APPRitlabs< 2.01
Powiązane podatności
Integer overflow w TinyWeb umożliwia HTTP Request Smuggling
TinyWeb: nieprawidłowa walidacja nagłówków HTTP umożliwia header injection
Command injection w TinyWeb HTTP Server via parametry CGI ISINDEX
TinyWeb is a web server (HTTP, HTTPS) written in Delphi for Win32. Versions prior to version 2.02 are vulnerab...
TinyWeb is a web server (HTTP, HTTPS) written in Delphi for Win32. Versions prior to version 2.02 have a Denia...