Insecure Context Switching: Inoculating Regular Expressions for Survivability

Insecure Context Switching: Inoculating Regular Expressions for Survivability

Insecure Context Switching: Inoculating regular expressions for survivability Will Drewry and Tavis Ormandy Google, Inc. fwad,[email protected] Abstract the evolution of software use and analysis were added as complicating factors. Survivability engineering [45] fo- For most computer end–users, web browsers and Internet cuses on these factors and the of application risk mitiga- services act as the providers and protectors of their per- tion tactics at all levels, especially technical ones, to aid sonal information, from bank accounts to personal cor- in fortifying software as it ages [22] [23] [50] [53]. Even respondence. These systems are critical to users’ con- though there has been extensive research into survivabil- tinued lifestyles but often show no evidence of surviv- ity engineering, very few of the guidelines [50] [53], or ability [45], or robustness against present and future at- even other known good security practices, appear com- tacks. Software defects, considered the largest risk to monplace in industry software, and the general state of survivability [45], are quite prevalent in consumer prod- software security may still be as Blakley described nearly ucts and Web service software components [12]. Recent twelve years ago [10]. A basic review of software de- widespread security issues [20] [19] serve to emphasize fect occurrence rates, as a contraindicator of survivabil- this fact and show a lack investment in survivability en- ity, reinforces the bleak outlook on the current environ- gineering practices [22] [23] [50] [53] that may have mit- ment [12] [69] [68]. igated the risk. Survivability engineering, however, is largely a Common software components that comprise indus- counterintuitive concept in normal software develop- try software, commercial or free, were authored and ment [53], especially when it comes to code reuse. Code deployed with functional isolation in mind. Despite reuse is encouraged [47] and common, as evidenced by original intent, many of these components are migrat- the large number of commercial and open source soft- ing in to Internet–connected systems. The context ware libraries and their extensive use across the software switch from functional isolation to extreme connectiv- industry. Software libraries, or any reusable components, ity changes the threat environment of these components are often designed with specific usage contexts in mind. dramatically [10] [53]. Most software that has under- These uses may be well–defined using any number of gone this sort of insecure context switch has received formal, such as UML [71], or informal techniques, but very little security attention. This paper briefly surveys rarely are the complete intentions effectively commu- recent examples of these sorts of context switches. In nicated to the end–developer, especially as these com- particular, we focus on the survivability and inocula- ponents age. There is no established standard for de- tion [31] of regular expression engine implementations scribing the expected threat environment of a software in connected environments. Through the course of this library, and even if there was, there is no mechanism to research, a number of critical vulnerabilities were un- enforce the use of such a standard. While domain spe- covered that traverse operating systems and applications cific repositories aid in context–safe reuse [30], there are including Adobe Flash, Apple Safari, Perl, GnuPG, and not many comprehensive repositories which match func- ICU. tional domains with security domains [60]. This leaves little option for developers except to rely on program- 1 Introduction ming language–supplied features and software compo- nents selected by their advertised functionality. This be- The existence of software defects are attributed to many havior, when not carefully considered, leads to insecure causes, ranging from expected human error to poor de- context switching. veloper education [42] [43] [96]. In the past decade, This paper contributes a thorough examination of the survivability and inoculation [31] of a prime example ability. Dowd’s recent whitepaper [20], describes such of insecure context switching: modern regular expres- a scenario. Flash suffered from an exploitable vulnera- sion [44] use. Regular expressions are an idiomatic tech- bility, but as it was not compiled in a fashion compat- nique for text search and manipulation with a presence ible with Windows Vista’s ASLR functionality, no ran- in nearly every modern programming language, from C domization occured which allowed for reliable exploita- to Ruby. Their widespread acceptance has lead regular tion on Vista. This is not an isolated incident; many expressions to be exposed unquestioningly in potentially systems and software do not support or use these fea- hostile, connected environments. This would be unsur- tures [65] [13], and when they do, they are still not im- prising, and unimportant, if regular expression engine pervious to all known attack techniques, much less future implementation was trivial or if regular expression en- developments in software security research. gines were implemented with connected environments in mind. However, the creation of robust implementations 1.1.1 Regular Expression History is still an open topic of research [48] [24], and regular ex- pressions were implemented, initially, in functional iso- Since the introduction of regular expressions to the lation as a text editor feature [18]. QED text editor [18] and the Unix environment in the 1970s [94], regular expression use, as a means of suc- 1.1 Background cinctly expressing acceptable grammars, has increased continuously. They have even garnered an accepted place Survivability of specific software components is not the in many IETF standards. A simple review of IETF stan- only measurement of overall system survivability. While dards, or RFCs, shows a continued reliance on regular a number of serious vulnerabilities are discussed later in expressions. This is likely due, in large part, to the re- the paper, the view should not be overly bleak. Many lease of a public domain, regular expression engine by legacy, and even just poorly implemented, software com- Henry Spencer in 1986 [72] [73]. ponents exist and are in common use, but there are inoc- Beginning around 1990, regular expressions moved ulation, or risk–mitigating tactics, already at play at a from a command–line environment and text edi- lower–level. tor feature to an expected piece of functionality in Most modern operating systems deploy a number of most programming languages. Starting with Tcl, risk–mitigating mechanisms to add to the overall robust- EMACS/Lisp [49], and Perl [92], this trend [11] contin- ness of the system. Many tactics are used explicitly to ues into modernity with PHP, Python, Ruby, Javascript, prevent software defects from becoming fully exploitable Actionscript, C#, Java, and so on. In spite of the contin- vulnerabilities. Some of these tactics are address– ued inclusion of regular expressions as core functional- space layout randomization [70], non–executable mem- ity, many of the engines derive their code, at least tangen- ory pages [61] [95], and capability-enforcement sys- tially, from Spencer’s 1986 release. This ancestry leads tems [51] [5]. In addition, compilers, like GNU GCC, to heavily patched implementations blind to newer, or provide the addition of stack canaries [25] and position even parallel, advances in this area of research [48] [14]. independent executable support [41]. The combined ef- Even for engines that have emancipated themselves from forts of base system libraries, language compilers, and this legacy, regular expression implementation is not a the operating system layers add to the overall survivabil- trivial task. ity. While none of these techniques prevent exploitation entirely, they do increase the complexity of creating reli- 1.1.2 Regular Expression Security able exploits. In addition to these base system extensions, there is Past research into the security of regular expression en- work which provides risk–mitigation at the application gine implementation has been limited to specific features layer. Systrace [63], presented in 2003, provides a mech- in specific engines or to the overall execution–time ro- anism for intrusion prevention aiding the overall sur- bustness issues which affect most full–featured, non– vivability of the system. Unfortunately, system call– deterministic finite automata–based engines. In a re- based policy enforcement systems, like systrace, are not cent article, Cox provides a detailed discussion of the supplied by default with most operating system distri- exponential execution–time issues across multiple well– butions. There are also other software fault isolation, known implementation [14]. Additionally, these issues or software sandboxing, systems in existence [100], but are well–defined as the risks of regular expression en- their deployment is similarly scarce. gines [48] [24] [33] and of exponential algorithms in gen- The lack of sandbox integration and the unenforced eral [15]. nature of many of the base system mitigation tactics Exponential search algorithms aside, the most promi- leaves single components liable for full system surviv- nent example of regular expression security research is the vulnerability [75] found in PCRE’s [35] validation of the general awareness of the risks involved with using quantifier values. The vulnerability received substantial virtual machines in unexpected contexts [38] [27].

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    10 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us