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) a la biblioteca libpq.

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 resideix 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 d'aquesta vulnerabilitat, els atacants van aconseguir obtenir una clau d'accés a l'API 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 aquest panorama, l'equip de PostgreSQL ha implementat actualització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ç.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.