Toward software assurance: infusing a threat modeling methodology into beginning level programming courses
Software Assurance (SwA) is about achieving a level of confidence that the software in question is free from vulnerabilities and that it functions as intended. SwA requires software developers to have competency in both the software assurance life cycle and threat risk management that they acquire the requisite knowledge (K), practitioner skills (S), and abilities (A), i.e. KSA; however, beginning-level programmers typically learn fundamental object-orientation concepts and programming skills without understanding SwA throughout their introductory programming courses. For this purpose, we have infused a threat modeling methodology, Microsoft Threat Modeling, into beginning level programming courses that answer the following questions: 1) can we infuse the threat modeling into existing laboratory teaching modules without having to make any significant changes to those modules? 2) If we need to change existing laboratory teaching modules, what changes should we make? 3) What approaches can we propose to the existing curriculum in order for the students equip with the KSAs for SwA? We first assessed whether threat modeling could be infused into existing programming assignment modules without needing any significant changes to those modules. Based upon this analysis, we reengineered a programming assignment for an introductory programming course to demonstrate how threat modeling can be infused into these modules in order to convey to students knowledge of threat modeling, equip them with the skills specific to the threat modeling methodology, and develop their abilities to mitigate software vulnerabilities by using a threat modeling toolkit. Based upon empirical results, we provide suggestions for others who are interested in infusing one KSA for SwA, threat modeling, into their beginning level programming courses.