3 ms·
Agreed. Their definition of static analysis is laughably bizarre as well; there are many security and safety properties that can be proved by static analysis bu
by joshuata 10y ago
Agreed. Their definition of static analysis is laughably bizarre as well; there are many security and safety properties that can be proved by static analysis but not by dynamic analysis. Additionally, many of the problems they attribute to static analysis (non-specific versioning and recursive dependencies) are caused by the package managers themselves, and can be solved using static analysis if the build tool is well defined and well behaved.
Their tool has a few major weaknesses:
1. Builds are not reproducible - Reproducible builds require pinned package versions, which they specifically avoid. This could result in security holes if a dependent package version was bumped after the parent project was tested.
2. Subject of analysis - Their main target of analysis is the build file. This severely limits the extent of their analysis and requires them to build new tools for each build tool used.
3. Underestimation - Since a code path must be exercised in order to analyze it, you are guaranteed that the set of vulnerabilities detected is a subset of (or equal to) the true set of vulnerabilities. This is the opposite of what I believe should be the default: Always prefer false positives over false negatives. Both static analysis and binary analysis allow the programmer to over-estimate their analysis, guaranteeing that all vulnerabilities will be found.
- nickpsecurity 10y agoI was going to say same about build systems being able to do static analysis. Some can even be correct-by-construction. Further, if compiler like CompCert or CakeML is used, then static analysis on source will apply to binary too. Finally, static tools can analyze a lot more than just one file or whatever. This article is BS.
- jwn 10y agoI'm not sure what you mean by #1, the builds are as reproducible as the build system being used. For #2, SourceClear doesn't build the software under test, it's hooked into the build via various methods. For Maven and Gradle, those are plugins. For NPM and Bundler, the existing build files contain the complete dependency graphs as determined by the build system. The analysis is quite accurate, I daresay more so than any other tool. Yes, it requires implementation work for each build stack, but that's the price you pay for accuracy. In response to your #3, SourceClear doesn't report only vulnerabilities verified by call paths, it reports on all components will known vulnerabilities and denotes if a call path was found. Disclaimer, I'm a Co-Founder and have spent a great deal of time writing scanning code.