PostgreSQL-iga on eemaldatud haavatavus, mida kasutati rĂŒnnakul BeyondTrusti vastu

On korrektsed uuendused kĂ”ikidele toetatud PostgreSQL harudele 17.3, 16.7, 15.11, 14.16 ja 13.19, milles on parandatud ĂŒle 70 vea ja kĂ”rvaldatud haavatavus (CVE-2025-1094), mis aktiveeriti detsembri lĂ”pus rĂŒnnakus BeyondTrusti ja USA rahandusministeeriumi vastu. PostgreSQL'i probleem tuvastati BeyondTrust PRA (Privileged Remote Access) ja BeyondTrust RS (Remote Support) teenuste kaugel avatud haavatavuse (CVE-2024-12356) analĂŒĂŒsi kĂ€igus, mille Ă€rakasutamise korral rakendati lisaks seni teadmata (0-day) haavatavust libpq-s.

RĂŒnnaku tulemusena suudeti kurjategijatel saada vĂ”tme API ligipÀÀsuks, mida kasutatakse BeyondTrusti SaaS-teenuste klientide kaugtugiteenuste osutamiseks. Seda API-d kasutati parooli lĂ€htestamiseks ja USA rahandusministeeriumi infrastruktuuri kompromiteerimiseks, kes kasutab BeyondTrusti tooteid. RĂŒnnaku kĂ€igus suutsid kurjategijad ĂŒles laadida konfidentsiaalseid dokumente ja pÀÀseda ligi ministeeriumi töötajate arvutitele.

Haavatavus ilmneb libpq teegis, mis pakub API-de ĂŒhendamiseks andmebaasiga C keeles kirjutatud programmide kaudu (teegile on ka rakendatud mĂ€histe teegid C++, Perl, PHP ja Python jaoks). Probleem mĂ”jutab rakendusi, mis kasutavad spetsiaalsete sĂŒmbolite genereerimisfunktsioone nagu PQescapeLiteral(), PQescapeIdentifier(), PQescapeString() vĂ”i PQescapeStringConn().

RĂŒndaja vĂ”ib saavutada oma SQL-koodi sisestamise, kui vĂ€ljastpoolt saadud tekst, enne kui see kasutatakse SQL-pĂ€ringus, genereeritakse ĂŒlalmainitud libpq funktsioonide abil. BeyondTrusti rakendustes edastati selliselt genereeritud pĂ€ringud kĂ€surea utiliidi psql kaudu. Haavatavus on tingitud faktist, et genereerimisfunktsioonides ei kontrollita kasutatud Unicode-sĂŒmbolite Ă”igsust, mis vĂ”imaldab ĂŒmbersĂ”itu jutumĂ€rkide normaliseerimisest vale UTF-8 mitme baitiga jĂ€rjestuste esitamiste kaudu.

TĂ”rke kasutamiseks saab kasutada vale UTF-8 sĂŒmbolit, mis koosneb baitidest 0xC0 ja 0x27 ("└'"). Bait 0x27 ASCII kodeeringus vastab ĂŒhele jutumĂ€rgile ('‘'), mis vajab edasi- vĂ”i tagasiviimist. Koodi edastamise korral töödeldakse baitide kombinatsiooni 0xC0 ja 0x27 ĂŒhe Unicode-sĂŒmbolina. Seega jÀÀb bait 0x27 sellises jĂ€rjestuses ekraanituks, samas kui SQL-pĂ€ringu töötlemisel utiliidis psql töödeldakse seda kui jutumĂ€rki.

Kaugjuhtimisega SQL-pĂ€ringute kĂ€ivitamine utiliidi psql abil saab juhusliku koodi tĂ€itmiseks kasutada kĂ€su „\!“ asendamist, mis on psql-is mĂ”eldud juhuslike programmide kĂ€ivitamiseks. NĂ€iteks kĂ€ivitamiseks serveris utiliidi „id“ puhul vĂ”ib edastada vÀÀrtuse „hax\xC0â€Č; \! id #“. Allpool olevas nĂ€ites kutsutakse ekraanile PHP-skript dbquote, mis kasutab PHP funktsiooni pg_escape_string, mis töötab libpq funktsiooni PQescapeString peal: $ 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└’; VIGA: vigane baitide jĂ€rjestus kodeeringule „UTF8”: 0xc0 0x27 uid=1000(myexamplecompany) gid=1000(myexamplecompany)

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster