{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,19]],"date-time":"2026-06-19T16:08:28Z","timestamp":1781885308852,"version":"3.54.5"},"reference-count":62,"publisher":"Association for Computing Machinery (ACM)","issue":"2","license":[{"start":{"date-parts":[[2021,1,21]],"date-time":"2021-01-21T00:00:00Z","timestamp":1611187200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/501100007052","name":"Universit\u00e0 degli Studi di Verona","doi-asserted-by":"crossref","award":["cda-univr-21\/12\/2018"],"award-info":[{"award-number":["cda-univr-21\/12\/2018"]}],"id":[{"id":"10.13039\/501100007052","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Priv. Secur."],"published-print":{"date-parts":[[2021,5,31]]},"abstract":"<jats:p>\n            Dynamic languages, such as JavaScript, employ string-to-code primitives to turn dynamically generated text into executable code at run-time. These features make standard static analysis extremely hard if not impossible, because its essential data structures, i.e., the control-flow graph and the system of recursive equations associated with the program to analyze, are themselves dynamically mutating objects. Nevertheless, assembling code at run-time by manipulating strings, such as by\n            <jats:bold>eval<\/jats:bold>\n            in JavaScript, has been always strongly discouraged, since it is often recognized that \u201c\n            <jats:italic>eval is evil<\/jats:italic>\n            ,\u201d leading static analyzers to not consider such statements or ignoring their effects. Unfortunately, the lack of formal approaches to analyze string-to-code statements pose a perfect habitat for malicious code, that is surely evil and do not respect good practice rules, allowing them to hide malicious intents as strings to be converted to code and making static analyses blind to the real malicious aim of the code. Hence, the need to handle string-to-code statements approximating what they can execute, and therefore allowing the analysis to continue (even in the presence of dynamically generated program statements) with an acceptable degree of precision, should be clear. To reach this goal, we propose a static analysis allowing us to collect string values and to soundly over-approximate and analyze the code potentially executed by a string-to-code statement.\n          <\/jats:p>","DOI":"10.1145\/3426470","type":"journal-article","created":{"date-parts":[[2021,1,21]],"date-time":"2021-01-21T11:31:58Z","timestamp":1611228718000},"page":"1-38","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":21,"title":["Analyzing Dynamic Code"],"prefix":"10.1145","volume":"24","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-5150-0393","authenticated-orcid":false,"given":"Vincenzo","family":"Arceri","sequence":"first","affiliation":[{"name":"University of Verona, Verona, Italy"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-1213-536X","authenticated-orcid":false,"given":"Isabella","family":"Mastroeni","sequence":"additional","affiliation":[{"name":"University of Verona, Verona, Italy"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2021,1,21]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"Hynek Petrak [n.d.]. Hynek Petrak JS Malware collection. Retrieved from https:\/\/github.com\/HynekPetrak\/javascript-malware-collection.  Hynek Petrak [n.d.]. Hynek Petrak JS Malware collection. Retrieved from https:\/\/github.com\/HynekPetrak\/javascript-malware-collection."},{"key":"e_1_2_1_2_1","volume-title":"Proceedings of the ACM SIGPLAN Symposium on Principles of Programming Languages (POPL\u201911)","author":"An J."},{"key":"e_1_2_1_3_1","volume-title":"Proceedings of the International Workshop on Information Hiding (LNCS), J. Camenisch, C. S. Collberg, N. F. Johnson, and P. Sallee (Eds.)","volume":"4437","author":"Anckaert B."},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.entcs.2017.02.003"},{"key":"e_1_2_1_5_1","volume-title":"Proceedings of the 7th International Workshop on Verification and Program Transformation, (VPT@Programming\u201919)","author":"Arceri Vincenzo","year":"2019"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/3341105.3373964"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.3390\/app10103525"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-32505-3_15"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-17499-5_11"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/1646353.1646374"},{"key":"e_1_2_1_11_1","unstructured":"P. Biggar and D. Gregg. 2009. Static Analysis of Dynamic Scripting Languages. Technical Report. Department of Computer Science Trinity College Dublin.  P. Biggar and D. Gregg. 2009. Static Analysis of Dynamic Scripting Languages. Technical Report. Department of Computer Science Trinity College Dublin."},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/1985793.1985827"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/321239.321249"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-73721-8_6"},{"key":"e_1_2_1_15_1","volume-title":"Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI\u201907)","author":"Cai H."},{"key":"e_1_2_1_16_1","volume-title":"Proceedings of the 10th International Symposium on Static Analysis (SAS\u201903)","volume":"2694","author":"Christensen Aske Simon"},{"key":"e_1_2_1_17_1","volume-title":"Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI\u201909)","author":"Chugh R."},{"key":"e_1_2_1_18_1","volume-title":"Proceedings of the 24th ACM Symposium on Principles of Programming Languages (POPL\u201997)","author":"Cousot P.","year":"1997"},{"key":"e_1_2_1_19_1","volume-title":"Proceedings of the 4th ACM Symposium on Principles of Programming Languages (POPL\u201977)","author":"Cousot P."},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1093\/logcom\/2.4.511"},{"key":"e_1_2_1_21_1","volume-title":"Proceedings of the 7th ACM Conference on Functional Programming Languages and Computer Architecture. ACM Press","author":"Cousot P."},{"key":"e_1_2_1_22_1","volume-title":"Proceedings of the 5th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages (POPL\u201978)","author":"Cousot P."},{"key":"e_1_2_1_23_1","volume-title":"Proceedings of the 20th USENIX Security Symposium. USENIX Association. http:\/\/static.usenix.org\/events\/sec11\/tech\/full_papers\/Curtsinger.pdf","author":"Curtsinger Charlie","year":"2011"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/2775051.2676986"},{"key":"e_1_2_1_25_1","doi-asserted-by":"crossref","unstructured":"M. Davis R. Sigal and E. J. Weyuker. 1994. Computability Complexity and Languages: Fundamentals of Theoretical Computer Science (Computer Science and Scientific Computing) 2nd ed. Elsevier.  M. Davis R. Sigal and E. J. Weyuker. 1994. Computability Complexity and Languages: Fundamentals of Theoretical Computer Science (Computer Science and Scientific Computing) 2nd ed. Elsevier.","DOI":"10.1016\/B978-0-08-050246-5.50020-9"},{"key":"e_1_2_1_26_1","volume-title":"Proceedings of the 16th International Symposium on Static Analysis (SAS\u201909)","volume":"5673","author":"Doh Kyung-Goo"},{"key":"e_1_2_1_27_1","volume-title":"Proceedings of the Conference on Information Security (IS\u201907)","volume":"4779","author":"Drape S."},{"key":"e_1_2_1_28_1","volume-title":"Widening for Automata. Diploma Thesis","author":"D\u2019Silva V."},{"key":"e_1_2_1_29_1","volume-title":"Proceedings of the ISSTA\/ECOOP Workshops (ISSTA\u201918)","author":"Gauthier Fran\u00e7ois","year":"2018"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1093\/logcom\/8.4.457"},{"key":"e_1_2_1_31_1","volume-title":"Proceedings of the ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation (PEPM\u201912)","author":"Giacobazzi R."},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1093\/logcom\/exp053"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-33125-1_11"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/3175660"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-58601-6_107"},{"key":"e_1_2_1_36_1","volume-title":"Proceedings of the 20th USENIX Security Symposium. USENIX Association.","author":"Hooimeijer Pieter","year":"2011"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/2338965.2336758"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-03237-0_17"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2018.2878020"},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/2635868.2635904"},{"key":"e_1_2_1_41_1","volume-title":"Proceedings of the 20th International Symposium on Static Analysis (SAS\u201913)","volume":"7935","author":"Kim Hyunha"},{"key":"e_1_2_1_42_1","volume-title":"Proceedings of the International Workshop on Foundations of Object-Oriented Languages. ACM.","author":"Lee Hongki","year":"2012"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/2644805"},{"key":"e_1_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-16901-4_30"},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/3029052"},{"key":"e_1_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.cose.2011.08.007"},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/2384616.2384660"},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/1060745.1060809"},{"key":"e_1_2_1_49_1","volume-title":"Proceedings of the 22nd International Symposium on Static Analysis (SAS\u201915)","author":"M\u00f8ller Anders","year":"2015"},{"key":"e_1_2_1_50_1","unstructured":"Luca Negrini Vincenzo Arceri Pietro Ferrara and Agostino Cortesi. 2020. Twinning automata and regular expressions for string static analysis. Retrieved from https:\/\/arxiv:cs.SE\/2006.02715.  Luca Negrini Vincenzo Arceri Pietro Ferrara and Agostino Cortesi. 2020. Twinning automata and regular expressions for string static analysis. Retrieved from https:\/\/arxiv:cs.SE\/2006.02715."},{"key":"e_1_2_1_51_1","volume-title":"Hanne Riis Nielson, and Chris Hankin","author":"Nielson Flemming","year":"1999"},{"key":"e_1_2_1_52_1","volume-title":"Proceedings of the 29th European Conference on Object-Oriented Programming (ECOOP\u201915)","author":"Park Changhee","year":"2015"},{"key":"e_1_2_1_53_1","volume-title":"Proceedings of the 25th European Conference on Object-Oriented Programming (ECOOP\u201911)","volume":"6813","author":"Richards Gregor","year":"2011"},{"key":"e_1_2_1_54_1","volume-title":"Compiler Design\u2014Analysis and Transformation","author":"Seidl Helmut"},{"key":"e_1_2_1_55_1","doi-asserted-by":"publisher","DOI":"10.14722\/ndss.2018.23071"},{"key":"e_1_2_1_56_1","doi-asserted-by":"publisher","DOI":"10.1145\/1040294.1040300"},{"key":"e_1_2_1_57_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0167-6423(99)00012-X"},{"key":"e_1_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/2714576.2714620"},{"key":"e_1_2_1_59_1","volume-title":"Proceedings of the Annual Computer Security Applications Conference (ACSAC\u201908)","author":"Wang X."},{"key":"e_1_2_1_60_1","volume-title":"Proceedings of the 15th USENIX Security Symposium, Angelos D. Keromytis (Ed.). USENIX Association.","author":"Xie Yichen","year":"2006"},{"key":"e_1_2_1_61_1","doi-asserted-by":"publisher","DOI":"10.1145\/2771783.2771814"},{"key":"e_1_2_1_62_1","doi-asserted-by":"publisher","DOI":"10.1145\/1985793.1985828"}],"container-title":["ACM Transactions on Privacy and Security"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3426470","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3426470","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T22:01:45Z","timestamp":1750197705000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3426470"}},"subtitle":["A Sound Abstract Interpreter for\n            <i>Evil<\/i>\n            Eval"],"short-title":[],"issued":{"date-parts":[[2021,1,21]]},"references-count":62,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2021,5,31]]}},"alternative-id":["10.1145\/3426470"],"URL":"https:\/\/doi.org\/10.1145\/3426470","relation":{},"ISSN":["2471-2566","2471-2574"],"issn-type":[{"value":"2471-2566","type":"print"},{"value":"2471-2574","type":"electronic"}],"subject":[],"published":{"date-parts":[[2021,1,21]]},"assertion":[{"value":"2020-02-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2020-09-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2021-01-21","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}