It's after long time I am posting anything here. Was busy with family stuff and changing jobs. Anyways.
Recently I was asked (as part of my job) to complete the penetration testing for a legacy application. This was a direct result of reported issues from appsec scanners and fair amount of static code analysis (tools and products will stay un-named here), which issued huge number of critical alerts.
Multiple instances of XSS, SQL injection, Command injection, Buffer overflow etc were reported by both Static code analysis and appsec scanner. So what did we have in the soup. Classic CGI with apache's mod_cgi with log4j logging.
My first thoughts, cocky as always. I start digging; and after two days, I have one high vulnerability. YES, 1, ONE, ένα, एक, JUST ONE.
All scanners threw was false positives. And this one vulnerability is not reported by any scanners. so what's the secret? Well there are quite a few,
1. The application in question went from a command line interface to a web based cloud solution in last 20 years of development.
2. Developers used minimum 3rd part components, and updated these on time.
3. Inherently scanners are designed for generating issues based on pattern matching which at best is complete guess work.
4. Security people running these scans had limited understanding of development technology used or chose to report incorrect over the possibility of incomplete.
Moral of the story,
1. ALL WEBAPP SCANNERS ARE DUMB. Static code analysis is ill equipped for legacy applications.
2. Don't be cocky when you see CGI.
3. Time can't be telescoped. Therefore something that was developed over 20 years by dozens of developers can't be broken in minutes.
4. Inconsistency of development causes flaws in legacy applications.
5. Put in the time to find these development inconsistencies, and you shall be rewarded with few vulnerabilities.
6. Helping fix these bring a lot of satisfaction.