Software Assurance            Software Hardening            Autonomic Computing
GrammaTech Blog

Accelerating Automotive Software Safety with MISRA and Static Analysis

Posted by Bill Graham on October 21, 2016




The MISRA C/C++ coding guidelines were created based on concerns about the ability to safely use the C and C++ programming languages in critical automotive systems. Since its inception in 1998, MISRA has become one of the most-used coding standards in the automotive industry, and has even spread to use in safety-critical devices in other industries, such as medical and industrial control.

Static analysis tools are needed to properly use and enforce the standard, but it's important to understand that not all static analysis tools are created equal. Advanced static analysis tools that provide support for the complex development process and perform more than just simple syntax checking are more ideal than lightweight tools, providing more effectiveness in reducing risks, costs, and time-to-market.


Read More

Topics: Safety, CodeSonar, Functional Safety, MISRA

The Minefields of MISRA Coverage

Posted by Paul Anderson on October 03, 2016








Modern static analysis tools are typically used for two main purposes: finding bugs, and finding violations of coding standards. The primary purpose of CodeSonar is the former—it was originally designed to find serious safety and security defects such as memory errors, API misuse, and concurrency issues; however, it is also perfectly capable of being used for the latter, including the most popular coding standard, MISRA C 2012.

When developers are required to adhere to coding standards, they look for a tool that can help them find violations. One of the metrics they use to compare tools is the coverage: the proportion of rules that the tool claims to check, with a naïve strategy being to choose the tool that claims the highest coverage.

Unfortunately, the notion of coverage is not well-defined, and because there is no reliable source of information that can be used to compare coverage between tools, customers must trust vendors to reasonably interpret the term, and to report their coverage fairly. Unfortunately, some vendors unscrupulously exaggerate coverage in order to gain a competitive advantage, and in doing so also confuse consumers.

In this article, I shed some light on why coverage is a slippery notion, which I hope will in turn help customers make informed decisions about which tool to select.


Read More

Topics: Software Assurance, Safety, CodeSonar, MISRA

The Advantages of Hybrid Source and Binary Static Analysis

Posted by Bill Graham on September 28, 2016




GrammaTech brought unique binary code analysis to the market in 2013. Before then, the only option for binary analysis was to ship your code to specialists who would analyze it and send it back to you with a list of problems. Bringing a commercial binary analysis tool to the market enabled our customers to keep their code in-house and factor binary-only code (such as linked libraries and other third-party code) into safety and security from the beginning of development. Within CodeSonar, binary and source analysis can be done simultaneously on a development project, and the resulting hybrid mode analysis (we call it "mixed mode" at GrammaTech) has many advantages over source-only analysis. In this post, I look at how having both is a clear advantage in analyzing and remediating security vulnerabilities and software defects.


Read More

Topics: Static Analysis, CodeSonar, Binary Analysis

The Cyber Grand Challenge

Posted by Eric Rizzi on September 26, 2016




Several of us at GrammaTech, along with many talented people from UVA, recently participated in DARPA's Cyber Grand Challenge (CGC) as Team TECHx. The challenge in CGC was to build an autonomous Cyber Reasoning System (CRS) capable of playing in a "Capture The Flag" (CTF) hacking competition. Our system was called Xandra.

Each system was responsible for defending network services while proving vulnerabilities ("capturing flags") in other systems' defended services.

The challenge started back in 2014. In two years, what was initially over 100 teams whittled down through qualifying events to just 7 teams in the final event. During the final event, DARPA distributed Challenge Binaries (CBs) that implemented network services and that had been specifically crafted to have different vulnerabilities1. Each CRS was responsible for fielding a version of each of these CBs, which could be attacked by competitor CRSes. The trick was that CRSes could both re-write CBs to make them less vulnerable while simultaneously trying to exploit the vulnerabilities in other systems' CBs. Each time a CRS was able to successfully attack another CRS's CB, it gained points. Each time a CRS's fielded CB was successfully attacked, it lost points. In the end, our system, Xandra, did very well (2nd place!) with what I would classify a combination of good defense, good availability, and average offense.

Xandra on the CGC stage.

Read More

Topics: Research, Software Hardening

CodeSonar for JIRA (Plugin)

Posted by Travis Hidlay on September 23, 2016


Read More

Topics: CodeSonar