I've been searching around the forum for ZAP REST API security testing information and found this thread. We have started experimenting with putting ZAP passive scanning in the middle of our tests against our stateless REST API. It uses an oauth token in the Authorization header and the HTTP conversation is completely stateless barring when we actually obtain the oauth token. If we exclude the obtaining oauth token, I'm wondering how much value ZAP passive scanning could get us. We have a large battery of tests which use a java http client (read: not a browser) going against a service which accepts json and, in a few cases, a specifically formatted multipart file upload; said service always returns json. I'm having trouble finding the complete, comprehensive description of the scan rules...I see the passive scan rules in the GUI and something called vulnerabilities.xml in the source. Looks like the ZAP output report has the most information but would be nice to see a wiki page with all that information.
Q1. Is there a central place to see the name, description and proposed solution that align to ALL the scan rules? I'm trying to find what's applicable to stateless REST API security testing.
Q2. Given our architecture, is there a benefit to using ZAP passive scanning to test a stateless REST API?
Q3. Are ZAP REST API tests limited to json injection during active scans? This is easy enough for us to put into our homegrown test framework (maybe point me to the source code that does it and I can replicate it)? Or is there some other kind of valuable testing ZAP could have in passive or active scans?
Q4. We have a different set of tests which goes a/g our web application (right up ZAP's alley) and so is there a way to blacklist urls we do not wish to passively scan or show in the report? This is because ZAP might be flagging security issues in the report a/g our REST API urls that are only applicable to stateful sessions.
Seems with REST API security tests, one almost needs to always build custom testing tools after looking at OWASP REST cheat sheets -- a lot of it seems to be related to the specifics of the API under test (e.g. params, ids in url, api biz logic).