Në PostgreSQL është eliminuar një vulnerabilitet, i përdorur në sulmin ndaj BeyondTrust

Janë formuar përmirësime korigjuese për të gjitha degët e mbështetura të PostgreSQL 17.3, 16.7, 15.11, 14.16 dhe 13.19, të cilat kanë rregulluar mbi 70 gabime dhe kanë eliminuar një vulnerabilitet (CVE-2025-1094), i angazhuar në fund të dhjetorit në një sulm ndaj kompanisë BeyondTrust dhe Ministrisë së Financave të SHBA. Problemi në PostgreSQL është zbuluar gjatë analizës së një vulnerabiliteti të largët (CVE-2024-12356) në shërbimet BeyondTrust PRA (Privileged Remote Access) dhe BeyondTrust RS (Remote Support), gjatë shfrytëzimit të të cilit është angazhuar gjithashtu një vulnerabilitet i panjohur më parë (0-day) në libpq.

Si rezultat i sulmit, sulmuesit arritën të merrnin një çelës për qasjen në API-në e përdorur për ofrimin e shërbimeve të mbështetjes teknike për klientët e shërbimeve SaaS nga BeyondTrust. Kjo API u përdor për të rivendosur fjalëkalimin dhe për të kompromentuar infrastrukturën e Ministrisë së Financave të SHBA, e cila përdor produktet BeyondTrust. Gjatë sulmit, sulmuesit arritën të ngarkonin dokumente të ndjeshme dhe morën qasje në stacionet e punës të punonjësve të ministrisë.

Vulnerabiliteti shfaqet në bibliotekën libpq, e cila ofron API për ndërveprimin me DBMS nga programet në gjuhën C (mbi bibliotekën janë gjithashtu realizuar biblioteka-mbështetje për C++, Perl, PHP dhe Python). Problemi prek aplikacionet që përdorin funksionet PQescapeLiteral(), PQescapeIdentifier(), PQescapeString() ose PQescapeStringConn() për të ekzekutuar karakteret speciale dhe për të neutralizuar thonjëzat.

Sulmuesi mund të arrijë të futë kodin e tij SQL, nëse teksti i marrë nga jashtë para përdorimit brenda kërkesës SQL ekzekutohet duke përdorur funksionet e lartpërmendura të libpq. Në aplikacionet e BeyondTrust, kërkesat e ekzekutuara në këtë mënyrë u dërguan përmes utilitarit të linjës së komandës psql. Vulnerabiliteti shkaktohet nga mungesa e verifikimit të saktësisë së karaktereve Unicode të përdorura në tekst në funksionet e ekzekutimit, çka lejon anashkalimin e normalizimit të thonjëzave përmes specifikimeve të paligjshme të sekuencave shumë-byte UTF-8.

Për të shfrytëzuar dobësinë, mund të përdoret një karakter i papërshtatshëm UTF-8, i përbërë nga baytë 0xC0 dhe 0x27 («└'»). Bayti 0x27 në kodimin ASCII korrespondon me citojën e vetme («‘»), e cila duhet të eskapohet. Në kodin e eskaponit, kombinimi i baytëve 0xC0 dhe 0x27 përpunohen si një karakter Unicode. Si rezultat, bayti 0x27 në këtë sekuencë mbetet i paeskapuar, duke u përpunuar si citojë në përpunimin e SQL kërkesave në utilitarin psql.

Kur ekzekutoni SQL kërkesat duke përdorur utilitarin psql për të organizuar ekzekutimin e kodit të rastësishëm, mund të përdorni zëvendësimin në varg komandës «\!», e cila është e destinuar në psql për të ekzekutuar programe të rastësishme. Për shembull, për të ekzekutuar në сервере utilitarin «id», mund të kaloni vlerën «hax\xC0′; \! id #». Në shembullin e mëposhtëm, për të eskapuar thirret skripti PHP dbquote, i cili përdor funksionin PHP pg_escape_string, që punon mbi funksionin PQescapeString nga libpq: $ echo -e «hello \xC0’world'» | ./dbquote ‘hello └’world»’ $ quoted=$(echo -e «hax\xC0′; \! id # » | ./dbquote) $ echo «SELECT COUNT(1) FROM gw_sessions WHERE session_key = $quoted AND session_type = ‘sdcust’ AND (expiration IS NULL OR expiration>NOW())» | psql -e SELECT COUNT(1) FROM gw_sessions WHERE session_key = ‘hax└’; ERROR: byte sequence e pavlefshme për kodimin «UTF8»: 0xc0 0x27 uid=1000(myexamplecompany) gid=1000(myexamplecompany)

Burimi: opennet.ru

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster