Cisco ASA Remote Code Execution – Verifying CVE-2016-1287
Remote Code Execution on Cisco ASA
A year ago ExodusIntel disclosed a vulnerability affecting the IKE implementation in Cisco’s ASA products. The error is due to an overflow in the checking of reassembled IKE fragments, and allows remote code execution from an unauthenticated attacker. More information on the technical aspects of this can be found at ExodusIntel’s blog here. As Cisco ASAs are widely used in the industry, we started to see this vulnerability come up in many penetration tests, but it was hard to verify beyond the fact that a scanner found this issue. The consulting team here at NetSPI, as well as our clients, wanted a more verbose verification that this vulnerability was present.
Creating the Verification Tool
In order to get a concrete verification for this, I first read through all the write-ups on the vulnerability. After I had a solid foundation of the flaw itself, I used vulnerability scanners to test a vulnerable ASA in our lab environment and did a packet capture. With this packet capture, and the scanner plugins I was able to figure out a good way to verify the presence of the vulnerability. I implemented a similar verification in Python which included output showing where the fragmentation reassembly fails. The ASA will either respond with an incomplete IKE notify packet, indicating the ASA is vulnerable, or it will drop the invalid fragments and it will not respond, demonstrating that the patch has been applied. Examples of both of these scenarios can be seen below, note that these would typically be externally facing IP addresses, but as they were in a testing lab the WAN interface was on an internal network.
Vulnerable ASA
pentest ~ $ python3 cisco_asa.py 10.10.1.100:500 This tool is used to verify the presence of CVE-2016-1287, an unauthenticated remote code execution vulnerability affecting Cisco's ASA products. No attempt will be made to execute code, this simply observes behavior of affected versions when malformed fragments are sent to the ASA. Continue? [y/N] y [*] Sending Initiator Request [*] Received Response [+] Valid SA found. Moving on [*] Sending first fragment [*] Sending second fragment [*] Notify Payload found. Printing Notify payload data. Next payload: NONE Critical bit Not Critical Payload length: 8 Protocol ID: IKE SPI Size: 0 Notify Message Type: Invalid Syntax Notification DATA: missing [+] Notification data is missing. ASA is vulnerable. 00000000: 66 53 54 71 45 49 58 64 75 6A FD C0 52 32 52 96 fSTqEIXduj..R2R. 00000010: 29 20 22 20 00 00 00 00 00 00 00 24 00 00 00 08 ) " .......$.... 00000020: 01 00 00 07 ....
Patched ASA
pentest ~ $ python3 cisco_asa.py 10.10.1.100:500 This tool is used to verify the presence of CVE-2016-1287, an unauthenticated remote code execution vulnerability affecting Cisco's ASA products. No attempt will be made to execute code, this simply observes behavior of affected versions when malformed fragments are sent to the ASA. Continue? [y/N] y [*] Sending Initiator Request [*] Received Response [+] Valid SA found. Moving on [*] Sending first fragment [*] Sending second fragment [*] IKE Fragment was dropped indicating the ASA is not vulnerable.
The code can be found on NetSPI’s GitHub here.
Explore More Blog Posts
Modern Adventures in Azure Privilege Escalation
Azure has been growing rapidly over the past few years As of June 2026, there were over 200 services, 897 built-in Azure RBAC roles, and 22,018 different permissions. The attack surface of Azure has also increased with this growth. There are also a number of new and updated tools that give us insight into the […]
A New Era for Offensive Security
Today, NetSPI and Synack announced a definitive agreement to merge, backed by KKR, forming the industry’s leading offensive cybersecurity platform.
Introducing EchoBench: A Human Calibrated Benchmark for Autonomous Pentesting
NetSPI introduces EchoBench, a human-calibrated benchmark for autonomous AI web app pentesting. EchoBench measures finding fidelity, difficulty-reach, OWASP breadth, and repeatability to accurately gauge AI security capabilities against real human outcomes.