Hacking of cars has become a hot topic. If you have any doubt, consider the extensive coverage of the remote takeover of a Jeep Cherokee by security researchers Charlie Miller and Chris Valasek via a security vulnerability in the car’s UConnect infotainment software.
One part of a solution to a real-world hack may be to separate potential attack points (telematics, Bluetooth and radio) from safety-critical car functions (braking, steering and acceleration). But external communication to connected cars (WiFi car software updates and GPS/sensors for future autonomous cars) will still be necessary in some vehicles.
It’s gotten to a point where almost anything in a modern car that is electronically controlled (GM OnStar app, BMW ConnectedDrive and car key fobs) can and will be hacked unless stringent system and software security design considerations and processes are put in place.
The scale of the problem is enormous. Today, mainstream cars may contain tens of millions of lines of software code executing on over a hundred electronic control units (ECUs). Ensuring software security in the auto industry will entail careful attention to all aspects of software development: design, coding standards, testing, verification, and run-time assurance.
It will also be necessary for the industry to secure communication interfaces (radio, media, wireless, telematics, vehicle-to-vehicle), isolate key functions, monitor for anomalous messages on vehicle networks and guarantee the security of supply-chain components. And, with so many third-party components as well as home-grown code, a robust source code management (SCM) or version control platform will be essential to track and manage source code development and provide detailed audit logs for industry standards compliance (ISO 26262) or as part of fault or accident investigations.
Even minor bugs have consequences
If a mobile game app crashes due to a software bug, annoyed users may stop using it and download something else. In a car, however, the consequences of a minor software bug can be catastrophic. For example, in 2014 Honda publicly admitted that a software defect in an ECU caused unintended acceleration and recalled 175K hybrid cars.
Software vulnerabilities that occur in “unsafe” languages such as C and C++ (format string attacks, buffer overflows, dangling pointers, and privilege escalation bugs) can also be leveraged by attackers to gain access to sensitive automotive systems. Some automakers have been hesitant to move away from C / C++ because of existing legacy code investments, smaller memory footprint, real-time execution constraints, and the need to write low-level device drivers; although recently, available memory-safe alternatives such as Rust and Ivory show some promise.
Going forward, software assurance in cars will be even more challenging as automated parking assistance and lane guidance becomes more widely available and self-driving autonomous cars appear on the horizon. Connected cars are also being refreshed more frequently with some vehicle features even being updated via over-the-air firmware updates (Tesla max speed and pseudo-autonomous capabilities), which opens up even more security breach concerns.
Current standards, future needs
Automotive industry software development standards and guidelines such as the Motor Industry Software Reliability Association [MISRA] C /C++ standard) try to prevent the use of known bad coding practices. Several static analysis tools can also scan source code repositories to catch non-MISRA-compliant code and identify software flaws and potential vulnerabilities. Additional tools can detect policy violations, flow analysis, code reviews and run-time errors to identify memory leaks and buffer overflows during the build and test process.
Perhaps the greatest area of concern still to be addressed is the security of supply chain components. In 2014, Toyota was fined $1.2B by the U.S. government for “hiding safety defects and concealing information” that some believed were software defects in its automotive code called attention to by the technical press. This example demonstrates that auto manufacturers will be ultimately held responsible for failures of any part within their vehicles. It’s no surprise, then, that recently more automakers are issuing auto recalls for software safety or security updates than ever before (Fiat, Jeep and Tesla).
But most ECUs and other components come from third-party suppliers as a “black box” built to auto manufacturers’ requirements and give little visibility into how the hardware and software was developed. Those manufacturers now need to be intimately familiar with every component and version of the software running in their cars that they developed or came from their software supply chain.
Combined with rigorous design for systems isolation, secure software development in automotive systems needs to be a top priority for automakers. Using the right, standards-compliant, modern software development, test, verification and SCM practices is critical for delivering safe and reliable products rapidly in today’s ultra-competitive modern car market.