Testing software applications with schema-based fuzzing
AssigneeMicrosoft Corporation
InventorsJohn Neystadt, Nissim Natanov
Life of this patent
Estimating the term…
Abstract
Systems and methods to test software applications with schema-based fuzzing are described. In one aspect, the systems and methods automatically generate valid input data for a software application according to a fuzzing data schema. The fuzzing data schema describes characteristics of data format that would be proper or well formed for input into the software application. The systems and methods mutate to the valid input data with one or more fuzzing algorithms to generate corrupted versions, or malformed data. The malformed data is for fuzz testing the software application to identify any security vulnerabilities.
Claims19
A method at least partially implemented by a computing device, the method comprising:
- automatically generating, by the computing device, valid input data for a software application according to a schema that represents decomposing input data into atomic groups including:
- groups of groups, groups of elements, and groups of primitive elements;
- the groups, elements, and primitive elements representing components of a markup language, the valid input data being well-formed for input into the software application;
- generating a random character for each member of the groups of groups, groups of elements, and groups of primitive elements;
- and
- fuzz-testing the software application with corrupted versions of the valid input data, the fuzz-testing identifying any security vulnerabilities associated with the software application independent of any false positive security vulnerability indications.
A tangible computer-readable data storage medium comprising computer-program instructions executable by a processor, the computer-program instructions, when executed by the processor, for performing operations comprising:
- describing, in a schema, characteristics of a set of well-formed input data for a particular software application, the characteristics including groups and elements representing components of a markup language;
- parsing the schema to evaluate the characteristics and randomly generate, based on the characteristics, a set of valid input data for the particular software application, wherein the generating comprises iterating through each combination of the groups and elements described in the schema, and generating a random character for each combination;
- fuzz-testing the software application with corrupted versions of the valid input data, the fuzz-testing identifying any code-portions in the particular software application with security vulnerabilities.
A computing device comprising:
- a processor;
- and
- a memory coupled to the processor, the memory comprising computer-program instructions executable by the processor for performing operations comprising:
- randomly generating a set of valid input data by iterating through each member of groups and elements in combinations, the groups and elements decomposed from valid data according to a user-defined fuzzing data schema, the groups and elements representing components of a markup language;
- mutating the set of valid input data to generate a corresponding set of invalid input data, the valid input data being generated from the groups and elements described in the fuzzing data schema, the groups and elements describing the characteristics of well-formed data for a particular software application;
- providing the invalid input data to the particular software application or to an intermediate testing tool to fuzz-test the particular software application for security vulnerabilities.
Dependencies are inferred from the claim text.