Rapid7 Vulnerability & Exploit Database

OpenSSL Alternative Chains Certificate Forgery MITM Proxy

Back to Search

OpenSSL Alternative Chains Certificate Forgery MITM Proxy



This module exploits a logic error in OpenSSL by impersonating the server and sending a specially-crafted chain of certificates, resulting in certain checks on untrusted certificates to be bypassed on the client, allowing it to use a valid leaf certificate as a CA certificate to sign a fake certificate. The SSL/TLS session is then proxied to the server allowing the session to continue normally and application data transmitted between the peers to be saved. The valid leaf certificate must not contain the keyUsage extension or it must have at least the keyCertSign bit set (see X509_check_issued function in crypto/x509v3/v3_purp.c); otherwise; X509_verify_cert fails with X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY. This module requires an active man-in-the-middle attack.


  • David Benjamin
  • Adam Langley
  • Ramon de C Valle <rcvalle@metasploit.com>


Module Options

To display the available options, load the module within the Metasploit console and run the commands 'show options' or 'show advanced':

msf > use auxiliary/server/openssl_altchainsforgery_mitm_proxy
msf auxiliary(openssl_altchainsforgery_mitm_proxy) > show actions
msf auxiliary(openssl_altchainsforgery_mitm_proxy) > set ACTION < action-name >
msf auxiliary(openssl_altchainsforgery_mitm_proxy) > show options
    ...show and set options...
msf auxiliary(openssl_altchainsforgery_mitm_proxy) > run 

Time is precious, so I don’t want to do something manually that I can automate. Leveraging the Metasploit Framework when automating any task keeps us from having to re-create the wheel as we can use the existing libraries and focus our efforts where it matters.

– Jim O’Gorman | President, Offensive Security