Secure software development is a challenging task requiring consideration of many possible threats and mitigations. This paper investigates how and why programmers, despite a baseline of security experience, make security-relevant errors. To do this, we conducted an in-depth analysis of 94 submissions to a secure-programming contest designed to mimic real-world constraints: correctness, performance, and security. In addition to writing secure code, participants were asked to search for vulnerabilities in other teams' programs; in total, teams submitted 866 exploits against the submissions we considered. Over an intensive six-month period, we used iterative open coding to manually, but systematically, characterize each submitted project and vulnerability (including vulnerabilities we identified ourselves). We labeled vulnerabilities by type, attacker control allowed, and ease of exploitation, and projects according to security implementation strategy. Several patterns emerged. For example, simple mistakes were least common: only 21% of projects introduced such an error. Conversely, vulnerabilities arising from a misunderstanding of security concepts were significantly more common, appearing in 78% of projects. Our results have implications for improving secure-programming APIs, API documentation, vulnerability-finding tools, and security education.
[ .pdf ]
@inproceedings{votipka19bibifiqual, author = {Daniel Votipka and Kelsey Fulton and James Parker and Matthew Hou and Michelle L. Mazurek and Michael Hicks}, title = {Understanding security mistakes developers make: Qualitative analysis from {Build It, Break It, Fix It}}, booktitle = {Proceedings of the USENIX Security Symposium (USENIX SEC)}, year = {2020}, month = aug, note = {\textbf{Distinguished Paper}} }
This file was generated by bibtex2html 1.99.