top | item 19678608

(no title)

jakevn | 6 years ago

If this has solved the issue of automatically proving that any C or C++ program has no buffer overflows, why do we still see CVEs for popular libraries and software that result from them?

discuss

order

nickpsecurity|6 years ago

Neither FOSS projects nor commercial software use proven methods most of the time. That's why you see the results you see. I described that here:

http://www.ganssle.com/tem/tem372.html#article4

The tools can also miss things. They miss more as complexity goes up. High-assurance systems used to structure things in a hierarchical way with simple functions and only call downs to aid the analysis. Basically, reduce combinatorial explosion. Most software isn't structured anything like that. It does combinatorial explosion with C not giving analyzer a lot of information to begin with. So, it causes tools to miss things.

Rust might be easier to analyze due to the type system. Those labels become inputs and heuristics for future static analyzers.

lapinot|6 years ago

`Sound' does not mean `complete'. Don't forget that no false positive or negative isn't all, the solver might just give up.

fulafel|6 years ago

Because people can't resist chasing proven incorrect code ("find bugs"), instead of overhauling programs for proven correct code. Because the latter is a lot of work.