Une vulnérabilité dans PostgreSQL a été corrigée, utilisée lors de l'attaque contre BeyondTrust

Des mises Ă  jour correctives ont Ă©tĂ© Ă©mises pour toutes les versions prises en charge de PostgreSQL 17.3, 16.7, 15.11, 14.16 et 13.19, corrigeant plus de 70 bogues et Ă©liminant une vulnĂ©rabilitĂ© (CVE-2025-1094) qui, fin dĂ©cembre, a Ă©tĂ© exploitĂ©e dans une attaque contre la sociĂ©tĂ© BeyondTrust et le ministĂšre des Finances des États-Unis. Le problĂšme dans PostgreSQL a Ă©tĂ© identifiĂ© lors de l'analyse d'une vulnĂ©rabilitĂ© Ă  distance (CVE-2024-12356) dans les services BeyondTrust PRA (Privileged Remote Access) et BeyondTrust RS (Remote Support), dont l'exploitation a Ă©galement impliquĂ© une vulnĂ©rabilitĂ© auparavant inconnue (0-day) dans libpq.

À la suite de l'attaque, les cybercriminels ont rĂ©ussi Ă  obtenir une clĂ© d'accĂšs Ă  l'API utilisĂ©e pour fournir un support technique Ă  distance aux clients des services SaaS de BeyondTrust. Cette API a Ă©tĂ© utilisĂ©e pour rĂ©initialiser le mot de passe et compromettre l'infrastructure du ministĂšre des Finances des États-Unis, qui utilise des produits BeyondTrust. Au cours de l'attaque, les cybercriminels ont pu tĂ©lĂ©charger des documents confidentiels et accĂ©der aux stations de travail des employĂ©s du ministĂšre.

La vulnérabilité se manifeste dans la bibliothÚque libpq, qui fournit une API pour interagir avec les bases de données depuis des programmes en langage C (des bibliothÚques de liaison pour C++, Perl, PHP et Python sont également implémentées sur cette bibliothÚque). Le problÚme concerne les applications qui utilisent les fonctions PQescapeLiteral(), PQescapeIdentifier(), PQescapeString() ou PQescapeStringConn() pour échapper les caractÚres spéciaux et neutraliser les guillemets.

Un attaquant peut parvenir Ă  injecter son propre code SQL si le texte reçu de l'extĂ©rieur est Ă©chappĂ© Ă  l'aide des fonctions libpq mentionnĂ©es ci-dessus avant d'ĂȘtre utilisĂ© dans une requĂȘte SQL. Dans les applications de BeyondTrust, les requĂȘtes ainsi Ă©chappĂ©es Ă©taient transmises via l'utilitaire de ligne de commande psql. La vulnĂ©rabilitĂ© est causĂ©e par l'absence de vĂ©rification de la validitĂ© des caractĂšres Unicode utilisĂ©s dans le texte dans les fonctions d'Ă©chappement, ce qui permet de contourner la normalisation des guillemets en spĂ©cifiant des sĂ©quences multi-octets UTF-8 incorrectes.

Pour exploiter la vulnĂ©rabilitĂ©, il est possible d'utiliser un caractĂšre UTF-8 incorrect, composĂ© des octets 0xC0 et 0x27 («└'»). L'octet 0x27 en codage ASCII correspond Ă  une apostrophe («‘»), qui doit ĂȘtre Ă©chappĂ©e. Dans le code d'Ă©chappement, la combinaison d'octets 0xC0 et 0x27 est traitĂ©e comme un seul caractĂšre Unicode. Par consĂ©quent, l'octet 0x27 dans cette sĂ©quence reste non Ă©chappĂ©, tandis que lors du traitement de la requĂȘte SQL dans l'outil psql, il est traitĂ© comme une apostrophe.

En cas lancement de requĂȘtes SQL Ă  l'aide de l'outil psql pour organiser l'exĂ©cution de code arbitraire, il est possible d'utiliser la substitution dans la chaĂźne de commande «\!», destinĂ©e dans psql Ă  exĂ©cuter des programmes arbitraires. Par exemple, pour lancer sur le serveur l'outil «id», la valeur «hax\xC0â€Č; \! id #» peut ĂȘtre transmise. Dans l'exemple ci-dessous, pour l'Ă©chappement, un script PHP dbquote est appelĂ©, utilisant la fonction PHP pg_escape_string, qui fonctionne sur la fonction PQescapeString de 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: invalid byte sequence for encoding «UTF8»: 0xc0 0x27 uid=1000(myexamplecompany) gid=1000(myexamplecompany)

Source : opennet.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster