Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • pc-lint/flexelint
  • Solaris lint: supposedly significantly enhanced compared to traditional lint
  • other flavors of lint?
  • splint (already tried on parts of krb5 code, found some bugs, has issues).
    • Web site: http://www.splint.org/
    • Languages supported: C (C90, most C99 extensions, some GNU C extensions).
    • License: GNU GPL
    • Platforms: UNIX
    • Problems detected include (list is excerpt from manual):
      • Dereferencing a possibly null pointer
      • Using possibly undefined storage or returning storage that is not properly defined
      • Type mismatches, with greater precision and flexibility than provided by C compilers
      • Violations of information hiding
      • Memory management errors including uses of dangling references and memory leaks
      • Dangerous aliasing
      • Modifications and global variable uses that are inconsistent with specified interfaces
      • Problematic control flow such as likely infinite loops, fall through cases or incomplete switches, and suspicious statements
      • Buffer overflow vulnerabilities
      • Dangerous macro implementations or invocations
      • Violations of customized naming conventions.
    • Observations: Splint maintenance seems minimal these days, and development pretty much stopped. The memory management tracking is interesting, based on the idea that one pointer handle "owns" an object at any one time, ownership can be transferred, functions shouldn't remember pointers they don't own, etc. However, it doesn't understand functions with different behavior in success and failure cases - like C's very critical realloc. Inline comments in code can disable warnings, alert splint to memory ownership handling that's different from its default assumptions, etc.

Other:

  • BLAST: BLAST is a software model checker for C programs (http://mtc.epfl.ch/software-tools/blast/)
  • BOON: BOON is a tool for automatically finding buffer overrun vulnerabilities in C source code (http://www.cs.berkeley.edu/~daw/boon/)
  • cadvise (hpux only)
  • calysto (work in progress by Domagoj Babic; already tried on krb5 code, found some problems; currently a service only, send email to developer)
  • ccfinder, ccfinderx (www.ccfinder.net; code clone finder; supports Java, C/C++, VB, C#; runs on Windows XP)
  • checkstyle (checkstyle.sourceforge.net; runs many checks on java code including coding conventions, code duplication)
  • codesonar (www.grammatech.com; commercial, free trial available; supports c/c++, runs on Windows, Linux and Solaris; does interprocedural, whole-program analysis)
  • coverity (current status as of early February: Kerberos team evaluating)
  • Eclipse metrics tools:
  • flawfinder: basic scanning, easy to set up, GPL -amb (http://www.dwheeler.com/flawfinder/, http://sourceforge.net/projects/flawfinder/)
  • fortify findbugs (java only)
  • fortify sca
  • its4 (www.cigital.com/its4; not supported; just matches on token sequences in un-preprocessed code)
  • klocwork insight, klocwork developer (www.klocwork.com; works on c, c++, java)
  • MOPS: a tool for finding security bugs in C programs and for verifying conformance to rules of defensive programming http://www.cs.berkeley.edu/~daw/mops/
  • oink (based on cqual) www.cubewano.org/oink
  • Pixy (http://pixybox.seclab.tuwien.ac.at/pixy/) checks PHP for XSS and SQL injection vulnerabilities.
  • pmd (java only)
  • polyspace (www.mathworks.com; supports C/C++, Ada for embedded systems)
  • PScan (format string problems mainly; flawfinder, RATS, and gcc can do similar things; server not responding 1/24)
  • pychecker (Python only)
  • rats (Rough Auditing Tool for Security; rough analysis intended as a starting point for manual analysis; http://www.fortifysoftware.com/security-resources/rats.jsp)
  • simian (similarity analyser; www.redhillconsulting.com.au/products/simian/overview.html; identifies duplication in c, c++, c#, java, html, ml, vb, text, etc; runs in .net 1.1 or java 1.4 or later; free for non-commercial or open source use)
  • skavenger: mostly for php (fancy grep replacement, really?  not interesting. -amb) (http://code.google.com/p/skavenger/)
  • SmartRisk Analyzer (gone? originally @stake, which was acquired by Symantec)
  • SourceAudit: C/C++; interesting on paper, at least; costs money?  -amb (http://www.sourceaudit.com/products_sa.php)
  • sparse (http://www.kernel.org/pub/software/devel/sparse/)
  • xrefactory (www.xref-tech.com; c and java refactoring tool and source browser; includes emacs support)
  • unpaste (finds parallel syntactic constructs that are sometimes duplicated or nearly identical code)
  • Veracode SecurityReview (binary code analysis service?)

...