We will cover several types of software testing tools and discuss their
applicability to vulnerability discovery. The following classes of tools will be reviewed:
??? Debuggers
??? Code coverage analysis tools
??? Profiling tools
??? Flow analysis tools
??? Memory use monitoring tools
Debuggers
Debuggers provide fine-grain control over an executing program and can require a fair
amount of operator interaction. During the software development process, they are
most often used for isolating specific problems rather than large scale automated testing.
When you use a debugger for vulnerability discovery, however, you take advantage
of the debugger??™s ability to both signal the occurrence of an exception, and provide a
precise snapshot of a program??™s state at the moment it crashes. During black box testing
it is useful to launch programs under the control of a debugger prior to any fault injection
attempts. If a black box input can be generated to trigger a program exception,
detailed analysis of the CPU registers and memory contents captured by the debugger
makes it possible to understand what avenues of exploitation might be available as a
result of a crash.
The use of debuggers needs to be well thought out.
Pages:
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609