Three Apex details security scanners get wrong
Apex looks enough like Java that it is easy to read it as Java. Security tooling does the same, and the places where Apex is not Java are where findings go missing. A scanner that matches Database.query( will not see DataBase.Query(. A reviewer who sees an access check at the top of a method tends to assume everything below it is covered.
This post walks through three such details. Each one hid real findings in our own engine until vulkro-sf 0.27.0, and each one is just as easy to miss in a manual review. For every case there is vulnerable code, the reason it is vulnerable, and a fixed version.
