It is argued that runtime verification techniques can be used to identify unknown application security vulnerabilities that are a consequence of unexpected execution paths in software. A methodology is proposed that can be used to build a model of expected application execution paths during the software development cycle. This model is used at runtime to detect exploitation of unknown security vulnerabilities using anomaly detection style techniques. The approach is evaluated by considering its effectiveness in identifying 19 vulnerabilities across 26 versions of Apache Struts over a 5 year period.
Contemporary software developmentContemporary software is implemented using a variety of high-level programming languages, software frameworks and third party components. While applicationlevel code may appear straightforward, enabling rapid and low-cost application development, its underlying system is a complex arrangement of inter-dependent class PostAction extends ApiAction { private String message; public void setMessage(String msg) { this.message = msg; } public void execute(){ String userId = getUser().getId(); datastore.add(userId, message); } public User getUser() { return getSession().get(USER); } } StrutsActionProxy: PostAction.