Ilang araw na ang nakalipas, inanunsyo ng PostgreSQL ang paglabas ng mga pag-aayos ng bug para sa lahat ng sinusuportahang sangay ng PostgreSQL (mga bersyon 17.3, 16.7, 15.11, 14.16, at 13.19). Ang mga update na ito, na nagwawasto ng mahigit 70 bug, ay kapansin-pansing nag-aalis ng kahinaan na kinilala bilang CVE-2025-1094, na nauugnay sa isang pag-atake na nakaapekto sa BeyondTrust at sa U.S. Treasury Department noong huling bahagi ng Disyembre.
Ang kahinaan ay natukoy sa pagsusuri ng isa pang remote flaw (CVE-2024-12356) sa mga serbisyo ng BeyondTrust PRA (Privileged Remote Access) at BeyondTrust RS (Remote Support), at pinalala pa ito ng pagkakaroon ng dati nang hindi kilalang (0-araw) na kahinaan sa libpq library.
Sa kahinaan na nakaapekto sa BeyondTrust
Nabanggit na ang depekto sa PostgreSQL ay nagmula sa libpq , ang library na nagbibigay ng API para sa pakikipag-ugnayan sa PostgreSQL mula sa mga programang nakasulat sa C , at siya ring batayan para sa mga binding sa C++, Perl, PHP, at Python.
Ang kahinaan ay nakasalalay sa hindi sapat na paghawak ng Unicode character validation sa mahahalagang escape function. Ang mga function na ito ay mahalaga para sa pag-neutralize ng mga special character sa mga SQL query at pagpigil sa code injection. Gayunpaman, ang kakulangan ng wastong validation ay nagpapahintulot sa ilang invalid na UTF-8 multibyte sequences na malampasan ang quote normalization.
Paraan ng pag-atake
Ang depektong ito ay nagpapahintulot sa pagpapalit ng SQL sa mga application na gumagamit ng mga function na ito upang iproseso ang mga query, lalo na kapag ang mga query ay ipinapadala sa pamamagitan ng psql command-line utility. Halimbawa, ang kahinaang ito ay maaaring samantalahin upang magsagawa ng mga arbitraryong utos sa server sa pamamagitan ng pagpapalit ng "!" sa command line, tulad ng ipinakita sa isang halimbawa ng paggamit ng "id" utility.
Ang pagsasamantala ay umaasa sa paggamit ng isang di-wastong UTF-8 na character na binubuo ng mga byte na 0xC0 at 0x27. Ang Byte 0x27 ay tumutugma sa isang solong quote sa ASCII, na karaniwang tinatakasan upang maiwasan ang mga problema sa SQL injection. Ngunit kapag pinagsama sa 0xC0, ang pagkakasunud-sunod ay binibigyang-kahulugan bilang isang karakter ng Unicode, na iniiwan ang nag-iisang quote na hindi nakatakas.
Epekto ng pag-atake
Bilang resulta ng kahinaang ito, nakakuha ang mga attacker ng access key sa API na ginagamit upang magbigay ng malayuang suporta sa pamamagitan ng mga serbisyo ng BeyondTrust SaaS. Gamit ang key na ito , nagawa nilang i-reset ang mga password at ikompromiso ang imprastraktura ng Kagawaran ng Pananalapi ng Estados Unidos , na nakakuha ng access sa mga kumpidensyal na dokumento at mga workstation ng empleyado. Inilantad ng pag-atake ang mga malubhang depekto sa kadena ng seguridad, na nagbibigay-diin sa kahalagahan ng pagkakaroon ng matatag na mekanismo ng pagpapatunay ng input sa mga kritikal na library tulad ng libpq.
Mga update at mga hakbang sa pagwawasto
Bilang tugon sa sitwasyong ito, nagpatupad ang pangkat ng PostgreSQL ng mga update na nagwawasto sa kahinaang ito at ilang karagdagang bug. Ang solusyon ay nakasalalay sa pagpapabuti ng pagpapatunay ng karakter sa mga escape function, tinitiyak na ang anumang UTF-8 sequence ay napoproseso nang tama at pinipigilan ang maling interpretasyon ng mga single quote.
Bilang karagdagan dito, tulad ng nabanggit na, inaayos ng update na ito ang higit sa 70 mga bug na iniulat sa nakalipas na ilang buwan:
- Inayos ang posibleng muling paggamit ng mga lipas na resulta sa mga pinagsama-samang window, na maaaring humantong sa mga maling resulta.
- Iba't ibang mga pag-aayos ng kundisyon ng lahi para sa vacuum na maaaring, sa pinakamasamang kaso, ay magdulot ng katiwalian ng isang system catalog.
- Iba't ibang mga pag-aayos upang putulin ang mga talahanayan at index upang maiwasan ang posibleng katiwalian.
- Workaround para sa pagtanggal ng partition kung saan ang sarili nitong foreign key constraint ay tumutukoy sa isang partitioned table.
- Inayos ang FFn (hal. FF1) to_timestamp na mga format na code, kung saan ang isang integer na format na code bago ang FFn ay kukuha ng lahat ng available na digit.
- Mga pag-aayos para sa SQL/JSON at XMLTABLE() upang maglagay ng mga dobleng panipi sa paligid ng mga partikular na entry kapag kinakailangan.
- Isama ang ldapschemeoption sa pg_hba_file_rules().
- Iba't ibang mga pag-aayos para sa UNION, kabilang ang hindi pagsasama-sama ng mga column na may mga hindi sinusuportahang collation.
- Maraming mga pag-aayos na maaaring makaapekto sa availability o bilis ng pagsisimula ng koneksyon sa PostgreSQL.
- Inaayos ang maraming memory leaks sa output ng logic decode.
- Inaayos ang ilang memory leaks sa PL/Python.
- Nag-ayos ng pg_restore memory leak gamit ang zstd compressed data.
- Inayos ang pg_basebackup upang maayos na mahawakan ang mga pg_wal.tar na file na mas malaki sa 2GB sa Windows.
- Inayos ang pag-crash sa pageinspect sa mga pagkakataon kung saan ang kahulugan ng function na brin_page_items() ay hindi na-update sa pinakabagong bersyon.
- Inaayos ang kundisyon ng lahi kapag sinusubukang kanselahin ang isang malayuang postgres_fdw na query.
Panghuli, kung interesado kang matuto nang higit pa, makikita mo ang mga detalye sa sumusunod na link.