ஆதரிக்கப்படும் அனைத்து PostgreSQL கிளைகள் 17.3, 16.7, 15.11, 14.16, மற்றும் 13.19 க்கும் சரியான புதுப்பிப்புகள் உருவாக்கப்பட்டுள்ளன, 70 க்கும் மேற்பட்ட பிழைகளை சரிசெய்து, டிசம்பர் மாத இறுதியில் BeyondTrust மற்றும் US கருவூலத் துறை மீதான தாக்குதலில் பயன்படுத்தப்பட்ட பாதிப்பை (CVE-2025-1094) நீக்கியது. PostgreSQL இல் உள்ள சிக்கல், BeyondTrust PRA (Privileged Remote Access) மற்றும் BeyondTrust RS (Remote Support) சேவைகளில் தொலைநிலை பாதிப்பு (CVE-2024-12356) பகுப்பாய்வின் போது கண்டுபிடிக்கப்பட்டது, இதன் சுரண்டல் கூடுதலாக libpq இல் முன்னர் அறியப்படாத (0-நாள்) பாதிப்பை உள்ளடக்கியது.
தாக்குதலின் விளைவாக, BeyondTrust SaaS வாடிக்கையாளர்களுக்கு தொழில்நுட்ப ஆதரவு சேவைகளை தொலைவிலிருந்து வழங்கப் பயன்படுத்தப்படும் API ஐ அணுகுவதற்கான ஒரு சாவியை தாக்குபவர்கள் பெற முடிந்தது. இந்த API கடவுச்சொற்களை மீட்டமைக்கவும், BeyondTrust தயாரிப்புகளைப் பயன்படுத்தும் அமெரிக்க கருவூலத் துறையின் உள்கட்டமைப்பை சமரசம் செய்யவும் பயன்படுத்தப்பட்டது. தாக்குதலின் போது, தாக்குதல் நடத்தியவர்கள் ரகசிய ஆவணங்களை பதிவிறக்கம் செய்து அமைச்சக ஊழியர்களின் பணிநிலையங்களை அணுக முடிந்தது.
பாதிப்பு libpq நூலகத்தில் தோன்றுகிறது, இது C நிரல்களிலிருந்து DBMS உடன் தொடர்புகொள்வதற்கான API ஐ வழங்குகிறது (C++, Perl, PHP மற்றும் Python க்கான பிணைப்பு நூலகங்களும் நூலகத்தின் மேல் செயல்படுத்தப்படுகின்றன). இந்தச் சிக்கல் PQescapeLiteral(), PQescapeIdentifier(), PQescapeString(), அல்லது PQescapeStringConn() செயல்பாடுகளைப் பயன்படுத்தி சிறப்பு எழுத்துக்களைத் தப்பித்து மேற்கோள்களை நடுநிலையாக்கும் பயன்பாடுகளைப் பாதிக்கிறது.
SQL வினவலுக்குள் பயன்படுத்தப்படுவதற்கு முன்பு, மேலே உள்ள libpq செயல்பாடுகளைப் பயன்படுத்தி வெளியில் இருந்து பெறப்பட்ட உரை தப்பித்தால், தாக்குபவர் SQL மாற்றீட்டை அடைய முடியும். BeyondTrust பயன்பாடுகளில், இந்த முறையில் தப்பித்த வினவல்கள் psql கட்டளை வரி பயன்பாடு வழியாக அனுப்பப்பட்டன. உரையில் பயன்படுத்தப்படும் யூனிகோட் எழுத்துக்களின் சரியான தன்மைக்கான எஸ்கேப் செயல்பாடுகளில் சரிபார்ப்பு இல்லாததால் பாதிப்பு ஏற்படுகிறது, இது தவறான மல்டி-பைட் யுடிஎஃப்-8 வரிசைகளைக் குறிப்பிடுவதன் மூலம் மேற்கோள் குறிகளின் இயல்பாக்கத்தைத் தவிர்க்க அனுமதிக்கிறது.
பாதிப்பைப் பயன்படுத்த, 8xC0 மற்றும் 0x0 (“└'”) பைட்டுகளைக் கொண்ட தவறான UTF-27 எழுத்தைப் பயன்படுத்தலாம். ASCII குறியாக்கத்தில் உள்ள பைட் 0x27 என்பது தப்பிக்க வேண்டிய ஒற்றை மேற்கோளை ("'") ஒத்துள்ளது. எஸ்கேப் குறியீட்டில், 0xC0 மற்றும் 0x27 பைட்டுகளின் சேர்க்கை ஒற்றை யூனிகோட் எழுத்தாகக் கருதப்படுகிறது. அதன்படி, psql பயன்பாட்டில் ஒரு SQL வினவலை செயலாக்கும்போது, அது ஒரு மேற்கோளாக செயலாக்கப்பட்டாலும், அத்தகைய வரிசையில் பைட் 0x27 தப்பிக்காமல் உள்ளது.
மணிக்கு SQL வினவல்களை இயக்குதல் psql பயன்பாட்டைப் பயன்படுத்தி, கட்டளை சரத்தில் "\!" என்ற மாற்றீட்டைப் பயன்படுத்தி தன்னிச்சையான குறியீட்டை செயல்படுத்துவதை ஒழுங்கமைக்கலாம், இது psql இல் தன்னிச்சையான நிரல்களை இயக்குவதற்காக வடிவமைக்கப்பட்டுள்ளது. எடுத்துக்காட்டாக, இயக்க சர்வர் "id" பயன்பாட்டை "hax\xC0′; \! id #" என்ற மதிப்பை அனுப்பலாம். கீழே உள்ள எடுத்துக்காட்டு, PHP செயல்பாட்டைப் பயன்படுத்தி தப்பிப்பதற்கான PHP ஸ்கிரிப்ட் dbquote ஐ அழைக்கிறது pg_escape_string, இது libpq இலிருந்து PQescapeString செயல்பாட்டின் மேல் செயல்படுகிறது: $ echo -e "hello \xC0'world'" | ./dbquote 'வணக்கம் └'world"' $ மேற்கோள் காட்டப்பட்டது=$(echo -e "hax\xC0′; \! id # " | ./dbquote) $ எதிரொலி "gw_sessions இலிருந்து COUNT(1) ஐத் தேர்ந்தெடுக்கவும் WHERE session_key = $ மேற்கோள் காட்டப்பட்டது AND session_type = 'sdcust' AND (காலாவதியானது NULL அல்லது காலாவதி தேதி> NOW())" | psql -e gw_sessions இலிருந்து COUNT(1) ஐத் தேர்ந்தெடுக்கவும் WHERE session_key = 'hax└'; பிழை: "UTF8" ஐ குறியாக்கம் செய்வதற்கான தவறான பைட் வரிசை: 0xc0 0x27 uid=1000(myexamplecompany) gid=1000(myexamplecompany)
ஆதாரம்: opennet.ru
