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Ă« server 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 hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster