PostgreSQL llança actualitzacions que solucionen la fallada a libpq

PostgreSQL

Fa pocs dies, PostgreSQL va donar a conèixer el llançament de les actualitzacions correctives per a totes les branques compatibles de PostgreSQL (versions 17.3, 16.7, 15.11, 14.16 i 13.19). Aquestes actualitzacions, que corregeixen més de 70 errors i sobretot eliminen la vulnerabilitat identificada com a CVE-2025-1094, vinculada a un atac que va afectar BeyondTrust i el Departament del Tresor dels EUA a finals de desembre.

La vulnerabilitat va ser detectada durant l'anàlisi d'una altra falla remota (CVE-2024-12356) als serveis BeyondTrust PRA (Privileged Remote Access) i BeyondTrust RS (Remote Support), i es va veure agreujada per la presència d'una vulnerabilitat prèviament desconeguda (0-day).

Sobre la vulnerabilitat que afecte BeyondTrust

S'esmenta que la fallada a PostgreSQL es va originar a libpq , la biblioteca que proporciona l'API per interactuar amb PostgreSQL des de programes escrits a C , i que també és la base per als enllaços a C++, Perl, PHP i Python.

La vulnerabilitat rau en el maneig inadequat de la validaciĂ³ de carĂ cters Unicode en funcions crucials d'escapament. Aquestes funcions sĂ³n fonamentals per neutralitzar carĂ cters especials a les consultes SQL i evitar injeccions de codi. Tot i aixĂ², la manca de validaciĂ³ adequada permet que certes seqĂ¼Ă¨ncies multibyte UTF-8 no vĂ lides eludeixin la normalitzaciĂ³ de les cometes.

Mètode d'atac

Aquesta fallada permet la substituciĂ³ de SQL en aplicacions que utilitzen aquestes funcions per processar consultes, especialment quan les consultes s'envien a travĂ©s de la utilitat de lĂ­nia d'ordres psql. Per exemple, es pot aprofitar aquesta vulnerabilitat per executar ordres arbitrĂ ries al servidor mitjançant la substituciĂ³ a la lĂ­nia d'ordres «!», com es va demostrar amb un exemple en què es va invocar la utilitat «id».

L‟explotaciĂ³ es basa en la utilitzaciĂ³ d‟un carĂ cter UTF-8 no vĂ lid, format pels bytes 0xC0 i 0x27. El byte 0x27 correspon a una cometa simple a ASCII, que normalment s'escaparia per evitar problemes d'injecciĂ³ SQL. PerĂ² en combinar-se amb 0xC0, la seqĂ¼Ă¨ncia s'interpreta com un Ăºnic carĂ cter Unicode, deixant la cometa simple sense fugir.

Impacte de l'atac

Com a resultat daquesta vulnerabilitat, els atacants van aconseguir obtenir una clau daccĂ©s a lAPI que sutilitza per oferir suport remot a travĂ©s dels serveis BeyondTrust SaaS. Amb aquesta clau , es va poder restablir contrasenyes i comprometre la infraestructura del Departament del Tresor dels EUA , accedint a documents confidencials ia estacions de treball d'empleats. L'atac va exposar seriosos errors a la cadena de seguretat, destacant la importĂ ncia de comptar amb mecanismes robustos de validaciĂ³ d'entrada a biblioteques tan crĂ­tiques com libpq.

Actualitzacions i mesures correctives

Davant d'aquest panorama, l'equip de PostgreSQL ha implementat actualitzacions que corregeixen aquesta vulnerabilitat i una sèrie d'errors addicionals. La soluciĂ³ Ă©s millorar la validaciĂ³ de carĂ cters en les funcions d'escapament, garantint que qualsevol seqĂ¼Ă¨ncia UTF-8 es processi correctament i evitant que s'interpreti de manera errĂ²nia una cometa simple.

A mĂ©s d'aixĂ², com ja es va esmentar, aquesta actualitzaciĂ³ corregeix mĂ©s de 70 errors que es van informar els Ăºltims mesos:

  • Se soluciona la possible reutilitzaciĂ³ de resultats obsolets en agregats de finestres, cosa que podria generar resultats incorrectes.
  • Diverses correccions de condicions de carrera per al buit que, en el pitjor dels casos, podrien provocar danys en un catĂ leg del sistema.
  • Diverses correccions per truncar taules i Ă­ndexs que eviten possibles danys.
  • SoluciĂ³ per separar una particiĂ³ on la vostra prĂ²pia restricciĂ³ de clau externa fa referència a una taula particionada.
  • CorrecciĂ³ dels codis de format FFn (per exemple, FF1) to_timestamp, on un codi de format sencer abans de FFn consumiria tots els dĂ­gits disponibles.
  • Correccions per a SQL/JSON i XMLTABLE()per posar cometes dobles en entrades especĂ­fiques quan sigui necessari.
  • Incloeu la ldapschemeopciĂ³ a pg_hba_file_rules().
  • Diverses correccions per a UNION, inclosa la de no fusionar columnes amb intercalacions no compatibles.
  • Diverses correccions que podrien afectar la disponibilitat o velocitat d'inici d'una connexiĂ³ a PostgreSQL.
  • Corregeix mĂºltiples fuites de memĂ²ria a la sortida de descodificaciĂ³ lĂ²gica.
  • Corregeix diverses pèrdues de memĂ²ria a PL/Python.
  • CorrecciĂ³ d'una pèrdua de memĂ²ria pg_restore amb dades comprimides a zstd.
  • CorrecciĂ³ pg_basebackup per manejar correctament fitxers pg_wal.tar que superin els 2 GB a Windows.
  • Se soluciona la fallada en pageinspect en instĂ ncies on la brin_page_items()definiciĂ³ de la funciĂ³ no estĂ  actualitzada a la darrera versiĂ³.
  • Corregeix la condiciĂ³ de carrera en intentar cancel·lar una postgres_fdw consulta remota.

Finalment si estĂ s interessat a poder conèixer mĂ©s sobre aixĂ², pots consultar els detalls al segĂ¼ent enllaç.


Afegir com a font preferida a Google