Fuzz security testing
Fuzzing refers to security testing techniques which leverage automation to provide a program with invalid or unexpected input with the intention of uncovering security vulnerabilities such as crashes, buffer overflows, use after free bugs, memory leaks and race conditions. A combination of fuzzing techniques are typically used alongside each other to thoroughly test a target application for vulnerabilities.
Coverage guided fuzzing is a technique which leverages compile-time instrumentation to trace inputs whilst a program is in execution with the aim of maximizing code coverage.
Mutation based and generation based fuzzing techniques do not rely on knowing about a target’s internal behavior or implementation. Instead, they use the output of a mutation engine and integrate it into well-formed input that the target would be able to consume.
What do we cover?
The scope of a fuzzing test is very much tailored to your project’s requirements. The following are some examples of common targets during fuzz testing engagements:
- SIP servers, clients and proxy fuzzing
- HTTP and WebSocket server fuzzing
- Fuzzing of custom network protocols
- Fuzzing of file or message parsers
- Fuzzing of custom software packages and libraries
The following are the primary techniques employed in a fuzz testing engagement:
- Coverage-guided fuzzing using source code instrumentation
- Mutation based and generation based fuzzing, usually augmented by custom software that constructs the fuzzer’s input into valid datagrams and/or files expected by the target.
How does the process look like?
Most of our engagements follow these steps:
- First step is that you contact us
- We ask you a number of questions to understand what you have in mind, the goals for the exercise and the scope
- We perform a scoping exercise to better understand the size of the project; in the case of an VoIP penetration test, the scoping exercise often involves answering questionnaires to better understand the exposure and therefore tailor our proposed work to your needs
- We verify with you our scope where appropriate
- We work on a proposal which describes the goals, the scope, the methodology, deliverables, dates allocated for the project, terms and conditions and the price
- The actual work takes place during the allocated dates; your IT staff involved in the project often need to be available during the tests
- Upon completing the tests, we work on the reports and often provide a brief report of the main findings so that your staff are informed of the results immediately
- The deliverables are provided to you
- Often the process also includes testing of the security fixes once applied
What are the deliverables?
At the end of the project, the client usually receives the following:
- Executive report, which is an easy to follow 4 page report that includes information about the penetration test, list of the findings and a short explanation of the security fixes or mitigation techniques
- Technical report, which includes the following sections:
- Introduction, which describes the scope, methodology and purpose of the work
- Methodology, which describes our tests to explain what was covered and how; this would include both tests that led to vulnerability discoveries, and also those that did not
- Findings and recommendations which are categorised as High security threats, Other security threats and Other concerns and recommendations
- Each finding that is considered a security threat includes:
- A description of the security issue as it affects the target system
- Our assessment of the impact of the vulnerability
- Details on how to reproduce the issue found
- Solutions and recommendations, which are tailored for the target audience and can go into quite some detail
- Other material is sometimes provided such as:
- Video demonstrations showing exploitation of your systems
- Dedicated exploit code to reproduce the security issues found
- When the tests are done on-site, we often brief the involved executives and/or technical team and discuss solutions to the security issues found
- Similarly, conference calls can be used when the work is done remotely
What costs can one expect?
Cost is dependent on the size and complexity of the system on test and the level of rigor in which testing is to be performed. This is determined through pre-sale client discussions and scoping questionnaires. The price of an engagement will be delivered as a fixed bid quote.