Applying Symbolic Execution to Test Implementations of a Network Protocol Against its Specification
Implementations of network protocols must conform to their specifications in order to avoid security vulnerabilities and interoperability issues. We describe our experiences using symbolic execution to thoroughly test several implementations of a network security protocol against its specification. We employ a methodology in which we first extract requirements from the protocol’s RFC and turn them into formulas. These formulas are then utilized by symbolically executing the protocol implementation to explore code paths that can be traversed on packet sequences that violate a requirement. When this exploration exposes a bug, corresponding input values are produced and turned into test cases that can validate the bug in the original implementation. Since we let symbolic execution be guided by requirements, it can naturally produce a wide variety of requirement-violating input sequences, which is difficult to achieve with existing techniques for protocol testing. We applied this methodology to test four different implementations of DTLS against the protocol’s RFC. We were able to quickly expose a known CVE in an older version of OpenSSL, and to discover numerous previously unknown vulnerabilities and non-conformance issues in DTLS implementations, which have by now been confirmed and fixed by their implementors.
Tue 5 AprDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
11:30 - 12:45 | ICST Automated Testing ITesting Tools / Research Papers at Margaret Hamilton Chair(s): Tanja E. J. Vos Universitat Politècnica de València and Open Universiteit | ||
11:30 15mTalk | Applying Symbolic Execution to Test Implementations of a Network Protocol Against its Specification Research Papers Hooman Asadian Uppsala University, Paul Fiterau-Brostean Uppsala University, Bengt Jonsson Uppsala University, Sweden, Konstantinos (Kostis) Sagonas Uppsala University, Sweden Pre-print | ||
11:45 15mTalk | Model-based Testing of Scratch Programs Testing Tools Katharina Götz University of Passau, Patric Feldmeier University of Passau, Gordon Fraser University of Passau | ||
12:00 15mTalk | CITRUS: Automated Unit Testing Tool for Real-world C++ Programs Testing Tools | ||
12:15 15mTalk | Symbolic Verification of Message Signatures in MPI Research Papers Hengbiao Yu National University of Defense Technology, Banghu Yin National University of Defense Technology, Xin Yi National University of Defense Technology | ||
12:30 15mLive Q&A | Discussion and Q&A Research Papers |