Endava / cats

CATS is a REST API Fuzzer and negative testing tool for OpenAPI endpoints. CATS automatically generates, runs and reports tests with minimum configuration and no coding effort. Tests are self-healing and do not require maintenance.
Apache License 2.0
1.2k stars 73 forks source link

Link fuzzer reports with actual vulnerabilities #111

Open ocervell opened 8 months ago

ocervell commented 8 months ago

cats is good when cherry-picking a fuzzer and running it on one endpoint.

However, today I'm scanning an API for a customer, ran on all endpoints using:

cats -c open_api.yml -s https://<API_URL> --proxyHost 127.0.0.1 --proxyPort 8080 -H "Authorization=Basic <TOKEN>" --checkHeaders --refData refs.yml --iu

I'm still getting more than 3k errors, which makes it difficult to identify what to look at in priority. Some of them are timeouts due to the app not handling as many requests, others don't mean much (for instance, ExtraHeaders fuzzer when the app doesn't even process them will result in errors, but they don't mean anything - but there are hundreds of examples like this).

The way I workaround this at the moment is to run one fuzzer at a time, but this defeats a bit the purpose of running cats somehow (ideally we want to do a full run, then pickle on the vulns we're interested in, and then re-run with a different set of inputs).

Proposal for improvements:

en-milie commented 8 months ago

hi @ocervell. Some of the things you mention can already be done. Some examples:

It's a good idea to extend the User-Agent header with additional context. I'll add that to the backlog.

I would typically recommend a first round with all fuzzers in blackbox mode: cats ... -b -k which will only report 500. It just needs the contract and authorization headers. After, you can play with the --ingoreXXX arguments --matchXXX arguments and different filtering arguments.

en-milie commented 8 months ago

The User-Agent header is enhanced in the latest release: https://github.com/Endava/cats/releases/tag/cats-11.3.0