Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2025-64720-PoC — CVE-2025-64720 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो पैलेट प्रीमल्टीप्लिकेशन में libpng बफर ओवरफ्लो है। इसमें एक्सप्लॉइट जनरेटर, ASan/UBSan के साथ टेस्ट हार्नेस, और हीप-यूज़-आफ्टर-फ्री कमजोरी का विस्तृत तकनीकी विश्लेषण शामिल है। | Kitploit
उपकरण/GitHubGitHub/dantsco/cve-2025-64720-poc
मेमोरी फोरेंसिकभेद्यता विश्लेषणशोषणफज़िंगबाइनरी विश्लेषणपेपर और शोधलर्निंग और शिक्षा
GitHubdantsco/cve-2025-64720-poc

CVE-2025-64720-PoC

CVE-2025-64720 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो पैलेट प्रीमल्टीप्लिकेशन में libpng बफर ओवरफ्लो है। इसमें एक्सप्लॉइट जनरेटर, ASan/UBSan के साथ टेस्ट हार्नेस, और हीप-यूज़-आफ्टर-फ्री कमजोरी का विस्तृत तकनीकी विश्लेषण शामिल है।

रिपॉजिटरी देखें
2129 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2025-64720: libpng में पैलेट प्रीमल्टिप्लिकेशन में बफर ओवरफ़्लो

स्थिति: पैच किया गया
गंभीरता: उच्च
CVE ID: CVE-2025-64720
खोज तिथि: 2025-11-XX
सार्वजनिक प्रकटीकरण: 2025-11-21

अवलोकन

सारांश

libpng के png_image_read_composite फ़ंक्शन में एक आउट-ऑफ़-बाउंड रीड भेद्यता मौजूद है, जब PNG_FLAG_OPTIMIZE_ALPHA सक्षम के साथ पैलेट इमेज को प्रोसेस किया जाता है। png_init_read_transformations में पैलेट कम्पोज़िटिंग कोड प्रीमल्टिप्लिकेशन के दौरान गलत तरीके से बैकग्राउंड कम्पोज़िटिंग लागू करता है, जो सरलीकृत PNG API के लिए आवश्यक component ≤ alpha × 257 अपरिवर्तनीयता का उल्लंघन करता है, जिससे मेमोरी भ्रष्टाचार होता है।


भेद्यता विवरण

मूल कारण

png_init_read_transformations में लाइन ~1336 पर, पैलेट विस्तार कोड निम्नलिखित प्रदर्शन करता है:

component += (255-alpha)*png_sRGB_table[outrow[c]];

यह गणना component मानों को 16,776,960 (0x1000800) तक उत्पन्न करती है, जहाँ (component >> 15) == 512 है। png_image_read_composite में बाद का PNG_sRGB_FROM_LINEAR मैक्रो आउट-ऑफ़-बाउंड ऐरे एक्सेस करता है:

png_sRGB_base[component>>15]    // Accesses png_sRGB_base[512]
png_sRGB_delta[component>>15]   // Accesses png_sRGB_delta[512]
// दोनों ऐरे में केवल इंडेक्स 0-511 (आकार 512) हैं

समस्या तब होती है जब:

  1. PNG पैलेट मोड (कलर टाइप 3) का उपयोग पारदर्शिता (tRNS चंक) के साथ करता है
  2. एप्लिकेशन अल्फा-सक्षम प्रारूप के साथ सरलीकृत API का उपयोग करता है
  3. PNG_FLAG_OPTIMIZE_ALPHA आंतरिक रूप से सक्षम है
  4. पैलेट विस्तार बैकग्राउंड कम्पोज़िटिंग के साथ प्रीमल्टिप्लिकेशन करता है

भेद्य घटक

  • फ़ाइल: pngread.c, pngtrans.c
  • फ़ंक्शन: png_image_read_composite, png_init_read_transformations
  • कोड पथ: सरलीकृत API → अल्फा ऑप्टिमाइज़ेशन के साथ पैलेट विस्तार

अपरिवर्तनीयता उल्लंघन

अपेक्षित: component ≤ alpha × 257
         सुनिश्चित करता है (component >> 15) ≤ 511 (ऐरे सीमा के भीतर)

वास्तविक: component = previous_value + (255-alpha) × png_sRGB_table[RGB_value]
         alpha=0, RGB=255 के साथ: component अपेक्षित सीमा से अधिक हो सकता है
         
परिणाम:   (component >> 15) 512 के बराबर हो सकता है (सीमा से बाहर एक्सेस)

प्रभावित संस्करण

भेद्य संस्करण

  • सॉफ़्टवेयर: libpng
  • संस्करण: 1.6.51 से कम सभी संस्करण
  • प्लेटफ़ॉर्म: Linux, Windows, macOS, BSD, आदि
  • आर्किटेक्चर: x86, x64, ARM, ARM64, आदि

पैच किए गए संस्करण

  • पहला पैच संस्करण: 1.6.51
  • रिलीज़ तिथि: 2025-11-21
  • पैच कमिट: 08da33b

संस्करण पहचान

# विधि 1: pkg-config
pkg-config --modversion libpng

# विधि 2: प्रत्यक्ष लाइब्रेरी क्वेरी
libpng-config --version

# विधि 3: बाइनरी जाँच
strings /usr/lib/libpng*.so* | grep -i "libpng version"

# विधि 4: स्रोत से
grep PNG_LIBPNG_VER_STRING png.h

तकनीकी विश्लेषण

आक्रमण वेक्टर

एक हमलावर विशिष्ट विशेषताओं वाली एक दुर्भावनापूर्ण PNG फ़ाइल बनाकर इस भेद्यता का शोषण कर सकता है:

  1. आक्रमण पूर्वापेक्षाएँ:

    • लक्ष्य एप्लिकेशन libpng < 1.6.51 का उपयोग करता है
    • एप्लिकेशन सरलीकृत PNG API (png_image_* फ़ंक्शन) का उपयोग करता है
    • एप्लिकेशन अल्फा-सक्षम आउटपुट प्रारूप (जैसे RGBA, ARGB) का अनुरोध करता है
  2. आक्रमण चरण:

    • tRNS चंक के साथ पैलेट PNG (रंग प्रकार 3) बनाएँ
    • पैलेट प्रविष्टियों को अधिकतम RGB मानों (255, 255, 255) पर सेट करें
    • कई पैलेट प्रविष्टियों के लिए अल्फा मानों को शून्य पर सेट करें
    • पीड़ित एप्लिकेशन PNG को अल्फा प्रारूप के साथ संसाधित करता है
    • PNG_FLAG_OPTIMIZE_ALPHA आंतरिक रूप से सक्षम है
    • पैलेट विस्तार घटक अपरिवर्तनीयता का उल्लंघन करता है
    • आउट-ऑफ़-बाउंड ऐरे एक्सेस होता है
  3. आक्रमण परिणाम:

    • png_sRGB_base या png_sRGB_delta से आउट-ऑफ़-बाउंड रीड
    • मेमोरी भ्रष्टाचार से हीप-यूज़-आफ्टर-फ्री होता है
    • एप्लिकेशन क्रैश (सेवा अस्वीकार)
    • OOB रीड के माध्यम से संभावित सूचना प्रकटीकरण

मेमोरी लेआउट

┌─────────────────┐
│ png_sRGB_base   │  ऐरे इंडेक्स: 0-511 (512 प्रविष्टियाँ)
│ [512 प्रविष्टियाँ]  │  मान्य एक्सेस: (component >> 15) ≤ 511
├─────────────────┤
│ [OOB एक्सेस]    │  इंडेक्स 512 ← भेद्य एक्सेस जब component ≥ 0x1000000
├─────────────────┤
│ png_sRGB_delta  │  ऐरे इंडेक्स: 0-511 (512 प्रविष्टियाँ)
│ [512 प्रविष्टियाँ]  │  समान OOB एक्सेस के लिए भी भेद्य
├─────────────────┤
│ आसन्न मेमोरी   │  संभावित सूचना प्रकटीकरण
└─────────────────┘

गणना जो ओवरफ़्लो का कारण बनती है:
component = alpha × component + (255-alpha) × png_sRGB_table[palette_RGB]

जब alpha=0 और palette_RGB=255:
component = 0 + 255 × 65535 = 16,711,425
(component >> 15) = 512 (सीमा से बाहर!)

ट्रिगर स्थितियाँ

आवश्यक शर्तें:

  • PNG रंग प्रकार 3 (अनुक्रमित/पैलेट)
  • tRNS चंक मौजूद (पारदर्शिता)
  • tRNS चंक में अल्फा मान 0
  • पैलेट में उच्च RGB मान (विशेषकर 255, 255, 255)
  • सरलीकृत API उपयोग (png_image_finish_read)
  • अल्फा-सक्षम प्रारूप (PNG_FORMAT_ARGB, PNG_FORMAT_RGBA फ़्लैग के साथ)

वैकल्पिक कारक:

  • PNG_FORMAT_FLAG_AFIRST वाला प्रारूप क्रैश की संभावना बढ़ाता है
  • बड़ी छवियाँ बग को ट्रिगर करने के अधिक अवसर प्रदान करती हैं
  • कई शून्य-अल्फा पैलेट प्रविष्टियाँ विश्वसनीयता बढ़ाती हैं

गैर-ट्रिगरिंग स्थितियाँ:

  • libpng >= 1.6.51 (पैच किया गया)
  • अतिरिक्त फ़्लैग के बिना PNG_FORMAT_RGBA (कभी-कभी सुरक्षित)
  • गैर-पैलेट रंग प्रकार (RGB, ग्रेस्केल, आदि)
  • पारदर्शिता के बिना पैलेट
  • सभी अल्फा मान = 255 (पूरी तरह से अपारदर्शी)

प्रमाण-अवधारणा (Proof of Concept)

त्वरित प्रारंभ

# रिपॉजिटरी क्लोन करें
git clone https://github.com/truediogo/CVE-2025-64720
cd CVE-2025-64720

# इमेज जनरेट करें
python3 generate-images.py

# टेस्ट बनाएँ
chmod +x build.sh
./build.sh

# एक्सप्लॉइट चलाएँ (भेद्य libpng < 1.6.51 की आवश्यकता है)
./test_asan exploit_v1.png exploit_v2.png exploit_v3.png exploit_v4.png

PoC घटक

1. एक्सप्लॉइट जनरेटर (generate-images.py)

दुर्भावनापूर्ण PNG फ़ाइलें उत्पन्न करता है जो भेद्यता को ट्रिगर करती हैं।

उपयोग:

python3 generate_poc.py

आउटपुट:

  • exploit_v1.png - 8x8 इमेज, एकसमान सफेद पैलेट, शून्य अल्फा
  • exploit_v2.png - 8x8 इमेज, रणनीतिक पैलेट भिन्नता
  • exploit_v3.png - 64x64 इमेज, बड़ी दोहराए गए पैटर्न के साथ
  • exploit_v4.png - 4x4 इमेज, न्यूनतम मामला सभी-शून्य अल्फा के साथ

विकल्प:

# विशिष्ट वेरिएंट उत्पन्न करें
generate_malicious_png('custom.png', variant=2)

# वेरिएंट:
# 1: अधिकतम RGB मान शून्य अल्फा के साथ (विश्वसनीय)
# 2: अधिकतम ओवरफ़्लो के लिए डिज़ाइन किया गया रणनीतिक पैलेट
# 3: दोहराए गए ट्रिगरिंग पैटर्न के साथ बड़ी छवि
# 4: वैश्विक-बफर-ओवरफ़्लो को लक्षित करने वाला न्यूनतम मामला

2. टेस्ट (test.c)

सरलीकृत API का उपयोग करके PNG फ़ाइलों को संसाधित करता है और भेद्यता प्रदर्शित करता है।

संकलन:

# AddressSanitizer के साथ (अनुशंसित - सर्वोत्तम पहचान)
gcc -o test_asan test.c -lpng -fsanitize=address -g -O0 -fno-omit-frame-pointer

# UndefinedBehaviorSanitizer के साथ
gcc -o test_ubsan test.c -lpng -fsanitize=undefined -g -O0

# डिबगिंग प्रतीकों के साथ
gcc -o test_debug test.c -lpng -g -O0

# Valgrind के लिए
gcc -o test_valgrind test.c -lpng -g -O0 -fno-inline

विशेषताएँ:

  • कई अल्फा-सक्षम प्रारूपों का परीक्षण करता है (RGBA, ARGB, LINEAR_RGB_ALPHA)
  • libpng संस्करण और भेद्यता स्थिति प्रदर्शित करता है
  • सत्यापन के लिए पहला पिक्सेल मान दिखाता है
  • व्यापक त्रुटि प्रबंधन

अपेक्षित आउटपुट

भेद्य संस्करण पर (libpng 1.6.36):

libpng version: 1.6.36
PNG_LIBPNG_VER: 10636

[!] libpng < 1.6.51 का पता चला (भेद्य संस्करण)

=== Testing: exploit_v1.png ===
File: exploit_v1.png
Original format: 0xb
Image: 8x8

Trying format: PNG_FORMAT_RGBA (0x3)
Buffer size: 256 bytes
Calling png_image_finish_read...
Success - read completed
First pixel RGBA: ff ff ff 00
टूल डाउनलोड करें