Finding and Preventing Bugs in JavaScript Bindings
JavaScript, like many high-level languages, relies on runtime systems written in low-level C and C++. For example, the Node.js runtime system gives JavaScript code access to the underlying file system, networking, and I/O by implementing utility functions in C++. Since C++'s type system, memory...
Uloženo v:
| Vydáno v: | Proceedings - IEEE Symposium on Security and Privacy s. 559 - 578 |
|---|---|
| Hlavní autoři: | , , , , , |
| Médium: | Konferenční příspěvek |
| Jazyk: | angličtina |
| Vydáno: |
IEEE
01.05.2017
|
| Témata: | |
| ISSN: | 2375-1207 |
| On-line přístup: | Získat plný text |
| Tagy: |
Přidat tag
Žádné tagy, Buďte první, kdo vytvoří štítek k tomuto záznamu!
|
| Abstract | JavaScript, like many high-level languages, relies on runtime systems written in low-level C and C++. For example, the Node.js runtime system gives JavaScript code access to the underlying file system, networking, and I/O by implementing utility functions in C++. Since C++'s type system, memory model, and execution model differ significantly from JavaScript's, JavaScript code must call these runtime functions via intermediate binding layer code that translates type, state, and failure between the two languages. Unfortunately, binding code isboth hard to avoid and hard to get right. This paper describes several types of exploitable errors that binding code creates, and develops both a suite of easily-to-build static checkers to detect such errors and a backwards-compatible, low-overhead API to prevent them. We show that binding flaws are a serious security problem byusing our checkers to craft 81 proof-of-concept exploits for security flaws in the binding layers of the Node.js and Chrome, runtime systems that support hundreds of millions of users. As one practical measure of binding bug severity, we were awarded 6,000 in bounties for just two Chrome bug reports. |
|---|---|
| AbstractList | JavaScript, like many high-level languages, relies on runtime systems written in low-level C and C++. For example, the Node.js runtime system gives JavaScript code access to the underlying file system, networking, and I/O by implementing utility functions in C++. Since C++'s type system, memory model, and execution model differ significantly from JavaScript's, JavaScript code must call these runtime functions via intermediate binding layer code that translates type, state, and failure between the two languages. Unfortunately, binding code isboth hard to avoid and hard to get right. This paper describes several types of exploitable errors that binding code creates, and develops both a suite of easily-to-build static checkers to detect such errors and a backwards-compatible, low-overhead API to prevent them. We show that binding flaws are a serious security problem byusing our checkers to craft 81 proof-of-concept exploits for security flaws in the binding layers of the Node.js and Chrome, runtime systems that support hundreds of millions of users. As one practical measure of binding bug severity, we were awarded 6,000 in bounties for just two Chrome bug reports. |
| Author | Engler, Dawson Narayan, Shravan Stefan, Deian Wahby, Riad S. Jhala, Ranjit Brown, Fraser |
| Author_xml | – sequence: 1 givenname: Fraser surname: Brown fullname: Brown, Fraser – sequence: 2 givenname: Shravan surname: Narayan fullname: Narayan, Shravan – sequence: 3 givenname: Riad S. surname: Wahby fullname: Wahby, Riad S. – sequence: 4 givenname: Dawson surname: Engler fullname: Engler, Dawson – sequence: 5 givenname: Ranjit surname: Jhala fullname: Jhala, Ranjit – sequence: 6 givenname: Deian surname: Stefan fullname: Stefan, Deian |
| BookMark | eNotjM1KAzEURqMo2NZu3LrJC8w0ufm9S1usVgoWquuSmbkpEY1lMhZ8e5W6-DgcOHxjdpE_MzF2I0UtpcDZdlODkK62_oxN0XlpBApjlFLnbATKmUqCcFdsXMqbECAU6hGDZcpdynsecsc3PR0pD386_9oXnjJ_Csewbft0GPj8VJZrdhnDe6HpPyfsdXn_snis1s8Pq8XdukrSmaEKEbpoY2v171ADQDSBWtTkgiKU5FA7CGijxxhVQ-SatgMgYSxRo9SE3Z5-ExHtDn36CP33zqHxBr36AWfORUA |
| CODEN | IEEPAD |
| ContentType | Conference Proceeding |
| DBID | 6IE 6IH CBEJK RIE RIO |
| DOI | 10.1109/SP.2017.68 |
| DatabaseName | IEEE Electronic Library (IEL) Conference Proceedings IEEE Proceedings Order Plan (POP) 1998-present by volume IEEE Xplore All Conference Proceedings IEEE Electronic Library (IEL) IEEE Proceedings Order Plans (POP) 1998-present |
| DatabaseTitleList | |
| Database_xml | – sequence: 1 dbid: RIE name: IEEE/IET Electronic Library (IEL) (UW System Shared) url: https://ieeexplore.ieee.org/ sourceTypes: Publisher |
| DeliveryMethod | fulltext_linktorsrc |
| Discipline | Computer Science |
| EISBN | 9781509055333 1509055339 |
| EISSN | 2375-1207 |
| EndPage | 578 |
| ExternalDocumentID | 7958598 |
| Genre | orig-research |
| GroupedDBID | 23M 29O 6IE 6IF 6IH 6IL 6IN AAJGR AAWTH ABLEC ACGFS ADZIZ ALMA_UNASSIGNED_HOLDINGS BEFXN BFFAM BGNUA BKEBE BPEOZ CBEJK CHZPO IEGSK IJVOP M43 OCL RIE RIL RIO RNS |
| ID | FETCH-LOGICAL-i175t-af2df6fc64fc694222f5aec94e7a3e91e79472a96f89ff3bee7bcd22e056eeb33 |
| IEDL.DBID | RIE |
| ISICitedReferencesCount | 29 |
| ISICitedReferencesURI | http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=000413081300031&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| IngestDate | Wed Aug 27 02:46:57 EDT 2025 |
| IsPeerReviewed | false |
| IsScholarly | true |
| Language | English |
| LinkModel | DirectLink |
| MergedId | FETCHMERGED-LOGICAL-i175t-af2df6fc64fc694222f5aec94e7a3e91e79472a96f89ff3bee7bcd22e056eeb33 |
| PageCount | 20 |
| ParticipantIDs | ieee_primary_7958598 |
| PublicationCentury | 2000 |
| PublicationDate | 2017-May |
| PublicationDateYYYYMMDD | 2017-05-01 |
| PublicationDate_xml | – month: 05 year: 2017 text: 2017-May |
| PublicationDecade | 2010 |
| PublicationTitle | Proceedings - IEEE Symposium on Security and Privacy |
| PublicationTitleAbbrev | SP |
| PublicationYear | 2017 |
| Publisher | IEEE |
| Publisher_xml | – name: IEEE |
| SSID | ssj0020394 |
| Score | 2.231223 |
| Snippet | JavaScript, like many high-level languages, relies on runtime systems written in low-level C and C++. For example, the Node.js runtime system gives JavaScript... |
| SourceID | ieee |
| SourceType | Publisher |
| StartPage | 559 |
| SubjectTerms | C++ languages Computer bugs Engines Indexes Runtime Security |
| Title | Finding and Preventing Bugs in JavaScript Bindings |
| URI | https://ieeexplore.ieee.org/document/7958598 |
| WOSCitedRecordID | wos000413081300031&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| hasFullText | 1 |
| inHoldings | 1 |
| isFullTextHit | |
| isPrint | |
| link | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlV07T8MwED61FQNTgRbxlgdG3CZOYufWIirEUFUqSN0q1z6jLCnq6_fjOGlhYGGwZFuWLJ8f9_DdfQCPJkeKKVLcWDQ8FSbhOTnBHfoDZGW-jJUJYBNqMsnnc5y24OkYC0NEwfmMBlU1_OXbldlVprKhQi_cYt6GtlKyjtU6KldRgmmTfjSOcDibVm5balClUP0FmxK4xrj7v_nOoP8TfsemR8ZyDi0qL6B7wF9gzXXsgRgXISaF6dKyQy4m3xztPjesKNmb3utZeBXYqB656cPH-OX9-ZU3GAi88Ix9y7UT1klnZOoLVvYal2kymJLSCWFM_j4poVG6HJ1LlkRqaawQ5AUb8opycgmdclXSFTD0olBG0mJiTKpdhg6Fs45kRF7Jw-waehUJFl91motFs_qbv7tv4bQicO37dwed7XpH93Bi9ttis34Ie_MN7SmSVw |
| linkProvider | IEEE |
| linkToHtml | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlV1LTwIxEJ4gmugJFY1ve_Dowm730Z0rRoKKhARMuJHSTs1eFsPr99vuLujBi4cmbdOk6fQxj87MB_CgUqSAfOEpjcqLuAq9lAz3DNoDpJN0FghVgE2IwSCdTHBYg8ddLAwRFc5n1HLV4i9fz9XamcraAq1wi-ke7MdRxP0yWmunXvkhRlUC0sDH9mjoHLdEyyVR_QWcUvCNbuN_Mx7D2U8AHhvuWMsJ1Cg_hcYWgYFVF7IJvJsVUSlM5pptszHZZmf9uWRZzl7lRo6Kd4F1ypHLM_joPo-fel6FguBllrWvPGm4NolRSWQLOouNiSUpjEjIkDAge6MEl5iYFI0JZ0RipjTnZEUbsqpyeA71fJ7TBTC0wlBMicZQqUiaGA1yow0lPlk1D-NLaDoSTL_KRBfTavVXf3ffw2Fv_N6f9l8Gb9dw5IhdegLeQH21WNMtHKjNKlsu7op9-ga6KZWe |
| openUrl | ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=proceeding&rft.title=Proceedings+-+IEEE+Symposium+on+Security+and+Privacy&rft.atitle=Finding+and+Preventing+Bugs+in+JavaScript+Bindings&rft.au=Brown%2C+Fraser&rft.au=Narayan%2C+Shravan&rft.au=Wahby%2C+Riad+S.&rft.au=Engler%2C+Dawson&rft.date=2017-05-01&rft.pub=IEEE&rft.eissn=2375-1207&rft.spage=559&rft.epage=578&rft_id=info:doi/10.1109%2FSP.2017.68&rft.externalDocID=7958598 |