Guide Me to Exploit: Assisted ROP Exploit Generation for ActionScript Virtual Machine


YILMAZ F. , Sridhar M., Choi W.

36th Annual Computer Security Applications Conference, ACSAC 2020, Virtual, Online, United States Of America, 7 - 11 December 2020, pp.386-400 identifier

  • Publication Type: Conference Paper / Full Text
  • Doi Number: 10.1145/3427228.3427568
  • City: Virtual, Online
  • Country: United States Of America
  • Page Numbers: pp.386-400
  • Keywords: ActionScript language, automatic exploit generation, fuzz testing, language virtual machines, program synthesizing, vulnerabilities

Abstract

© 2020 ACM.Automatic exploit generation (AEG) is the challenge of determining the exploitability of a given vulnerability by exploring all possible execution paths that can result from triggering the vulnerability. Since typical AEG implementations might need to explore an unbounded number of execution paths, they usually utilize a fuzz tester and a symbolic execution tool to facilitate this task. However, in the case of language virtual machines, such as the ActionScript Virtual Machine (AVM), AEG implementations cannot leverage fuzz testers or symbolic execution tools for generating the exploit script, because of two reasons: (1) fuzz testers cannot efficiently generate grammatically correct executables for the AVM due to the improbability of randomly generating highly-structured executables that follow the complex grammar rules and (2) symbolic execution tools encounter the well-known program-state-explosion problem due to the enormous number of control paths in early processing stages of a language virtual machine (e.g., lexing and parsing). This paper presents GuidExp, a guided (semi-automatic) exploit generation tool for AVM vulnerabilities. GuidExp synthesizes an exploit script that exploits a given ActionScript vulnerability. Unlike other AEG implementations, GuidExp leverages exploit deconstruction, a technique of splitting the exploit script into many smaller code snippets. GuidExp receives hints from security experts and uses them to determine places where the exploit script can be split. Thus, GuidExp can concentrate on synthesizing these smaller code snippets in sequence to obtain the exploit script instead of synthesizing the entire exploit script at once. GuidExp does not rely on fuzz testers or symbolic execution tools. Instead, GuidExp performs exhaustive search adopting four optimization techniques to facilitate the AEG process: (1) exploit deconstruction, (2) operand stack verification, (3) instruction tiling, and (4) feedback from the AVM. A running example highlights how GuidExp synthesizes the exploit script for a real-world AVM use-after-free vulnerability. In addition, GuidExp's successful generation of exploits for ten other AVM vulnerabilities is reported.