Biblioteka ADOdb w wersjach 5.22.9 i wcześniejszych zawiera podatność SQL injection (CWE-89) wynikającą z nieprawidłowego escapowania parametru zapytania. Umożliwia ona atakującemu wykonanie dowolnych poleceń SQL przy połączeniu z bazą SQLite3.
▸ Pokaż oryginał (EN)
ADOdb is a PHP database class library that provides abstractions for performing queries and managing databases. In versions 5.22.9 and below, improper escaping of a query parameter may allow an attacker to execute arbitrary SQL statements when the code using ADOdb connects to a sqlite3 database and calls the metaColumns(), metaForeignKeys() or metaIndexes() methods with a crafted table name. This is fixed in version 5.22.10. To workaround this issue, only pass controlled data to metaColumns(), metaForeignKeys() and metaIndexes() method's $table parameter.
Podatność występuje w metodach metaColumns(), metaForeignKeys() oraz metaIndexes(), które nie filtrują prawidłowo wartości przekazanej jako nazwa tabeli ($table). Atakujący może dostarczyć spreparowaną nazwę tabeli zawierającą złośliwe fragmenty SQL, które zostaną bezpośrednio osadzone w zapytaniu wysyłanym do bazy SQLite3. Brak odpowiedniego escapowania oznacza, że dostarczony payload jest interpretowany jako część składniowa zapytania SQL, a nie jako dane.
Atakujący może wykonać dowolne polecenia SQL na bazie danych SQLite3, co prowadzi do ujawnienia, modyfikacji lub usunięcia danych, a w określonych konfiguracjach również do dalszego naruszenia integralności systemu.
Należy zaktualizować bibliotekę ADOdb do wersji 5.22.10, w której problem został naprawiony. Jako obejście (workaround) do czasu aktualizacji należy przekazywać do parametru $table metod metaColumns(), metaForeignKeys() i metaIndexes() wyłącznie dane pochodzące z zaufanych, kontrolowanych źródeł.
ADOdb w wersjach 5.22.9 i wcześniejszych, wyłącznie w scenariuszach, gdzie aplikacja PHP łączy się z bazą SQLite3 i wywołuje metody metaColumns(), metaForeignKeys() lub metaIndexes() z niezaufanymi danymi jako nazwą tabeli.
Poprawka dostępna w commitcie 5b8bd52cdcffefb4ecded1b399c98cfa516afe03 w repozytorium GitHub projektu ADOdb. Podatność opisana w security advisory GHSA-vf2r-cxg9-p7rf. Pomimo maksymalnego wyniku CVSS 10.0 podatność dotyczy wyłącznie połączeń z SQLite3, co może ograniczać realny zasięg w środowiskach produkcyjnych korzystających z innych silników bazodanowych.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:L