CRITICAL✓ PATCH🇬🇧 English

CVE-2022-31631

PHP PDO SQLite — błędne cytowanie ciągów prowadzące do SQL injection

CVSS 9.1v3.1pub. 2025-02-12upd. 2025-07-02

W wersjach PHP 8.0, 8.1 i 8.2 funkcja PDO::quote() nieprawidłowo obsługuje zbyt długie ciągi znaków przy pracy z bazą SQLite, co może prowadzić do SQL injection. Podatność jest krytyczna, ponieważ nie wymaga uwierzytelnienia ani interakcji użytkownika.

Pokaż oryginał (EN)

In PHP versions 8.0.* before 8.0.27, 8.1.* before 8.1.15, 8.2.* before 8.2.2 when using PDO::quote() function to quote user-supplied data for SQLite, supplying an overly long string may cause the driver to incorrectly quote the data, which may further lead to SQL injection vulnerabilities.

🤖 Analiza AI
Jak działa

Funkcja PDO::quote() służy do bezpiecznego cytowania danych dostarczanych przez użytkownika przed ich przekazaniem do zapytania SQL. Gdy przekazany ciąg znaków jest zbyt długi, sterownik SQLite w PHP nieprawidłowo go cytuje, powodując wyjście danych poza oczekiwany kontekst. Skutkuje to możliwością wstrzyknięcia dowolnych instrukcji SQL (SQL injection) do zapytania wykonywanego w bazie SQLite.

Skutki

Atakujący może odczytać lub zmodyfikować dane przechowywane w bazie SQLite, omijając mechanizmy ochrony oparte na PDO::quote(). W konsekwencji możliwe jest nieautoryzowane ujawnienie poufnych danych oraz manipulacja zawartością bazy danych.

Mitygacja

Należy zaktualizować PHP do wersji 8.0.27 lub nowszej (gałąź 8.0), 8.1.15 lub nowszej (gałąź 8.1) albo 8.2.2 lub nowszej (gałąź 8.2). Jako obejście zaleca się stosowanie zapytań parametryzowanych (prepared statements) zamiast ręcznego cytowania danych przez PDO::quote().

Kogo dotyczy

PHP w wersjach 8.0.x przed 8.0.27, 8.1.x przed 8.1.15 oraz 8.2.x przed 8.2.2 — wyłącznie w przypadku użycia sterownika PDO z SQLite.

Uwagi

Podatność dotyczy wyłącznie kombinacji PHP + PDO + SQLite. Aplikacje korzystające z innych silników baz danych (np. MySQL, PostgreSQL) przez PDO nie są narażone na ten konkretny problem.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
  • PHP

    APP
    Php
    8.0.0 – 8.0.27 (bez)8.1.0 – 8.1.15 (bez)8.2.0 – 8.2.2 (bez)
  • Sqlite

    APP
    Sqlite
    ≥ 3.39.2
🟢
PATCH DOSTĘPNY
Aktualizacja od producenta gotowa. Wdrożenie w ramach standardowego cyklu.
Tagi
SQLi
CWE
Referencje

Powiązane podatności

CVE-2024-4577CRITICAL9.8⚠ KEVPL ✓ten sam produkt

PHP CGI argument injection – RCE na Windows przez mechanizm Best-Fit

CVE-2012-1823CRITICAL9.8⚠ KEVten sam produkt

sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi)...

CVE-2026-6722CRITICAL9.5PL ✓ten sam produkt

Use-after-free w rozszerzeniu SOAP PHP umożliwiające RCE

CVE-2024-11235CRITICAL9.2PL ✓ten sam produkt

PHP use-after-free przez __set lub ??= z wyjątkami — RCE

CVE-2024-11236CRITICAL9.8PL ✓ten sam produkt

PHP: integer overflow w ldap_escape() prowadzący do out-of-bounds write