Structural Testing of Executables - Sébastien Bardin

do not address the problem of the oracle. Conceptual ... combination of concolic execution and static analysis implementation of the tool ... certification of third-party software .... Recent approach for programs : PathCrawler, Dart, Cute, Exe.
677KB taille 10 téléchargements 67 vues
Structural Testing of Executables Motivations Machine code The Osmose Tool Test data generation

S´ebastien Bardin

Philippe Herrmann

CEA-LIST, Software Reliability Lab.

Bit-vector solver IR recovery Experiments Related work Conclusion

S.Bardin, P.Herrmann

Structural Testing of Executables

1/ 29

Overview Structural testing at the machine code level automatic test data generation goal: structural coverage or bug finding do not address the problem of the oracle Motivations

Conceptual framework: symbolic/concolic execution

Machine code The Osmose Tool Test data generation Bit-vector solver IR recovery Experiments

Three main contributions show how to adapt existing techniques to machine code combination of concolic execution and static analysis implementation of the tool Osmose

Related work Conclusion

Limitations no floating-point numbers, no interruptions

S.Bardin, P.Herrmann

Structural Testing of Executables

2/ 29

Why binary-level analysis? No source code available Components Off the Shelf (COTS) legacy code mobile code, malware certification of third-party software Motivations Machine code

Low confidence in the compiling process

The Osmose Tool Test data generation Bit-vector solver IR recovery

compilers may contain bugs optimisations preserve (?) correctness, what about security? What You See Is Not What You eXecute

Experiments Related work Conclusion

High precision of the analysis quality of service (QoS): wcet, maximal stack height, etc. security

S.Bardin, P.Herrmann

Structural Testing of Executables

3/ 29

Outline

Motivations About machine code The Osmose tool Motivations Machine code The Osmose Tool

Test data generation Bit-level constraint solving

Test data generation

IR recovery

Bit-vector solver

Experiments

IR recovery

Related work

Experiments

Conclusion

Related work Conclusion

S.Bardin, P.Herrmann

Structural Testing of Executables

4/ 29

Outline

Motivations About machine code The Osmose tool Motivations Machine code The Osmose Tool

Test data generation Bit-level constraint solving

Test data generation

IR recovery

Bit-vector solver

Experiments

IR recovery

Related work

Experiments

Conclusion

Related work Conclusion

S.Bardin, P.Herrmann

Structural Testing of Executables

4/ 29

About machine code The machine code is interpreted: 1. PC is the entry-point 2. decode instr at address PC 3. execute instr, update PC Motivations

4. goto 2

Machine code The Osmose Tool Test data generation Bit-vector solver IR recovery Experiments Related work Conclusion

S.Bardin, P.Herrmann

Instructions data: +, -, ×, /, >>,