All bodies  ›  Office of Voting Systems Technology Assessment  ›  Consultant's Source Code Test Report

OVSTA

Consultant's Source Code Test Report

Liberty Vote Democracy Suite 5.2

Office of Voting Systems Technology Assessment · vendors-dominion-ds52-sc · Testing report · Liberty Vote Systems

Read the report at Liberty Vote Systems ↗

Dominion Democracy Suite 5.2 Source Code Test Report for California DOM-17002-CSTR-01 Prepared for: Vendor Name Dominion Voting Vendor System Democracy Suite 5.2 Prepared by: SLI ComplianceSM 4720 Independence St. Wheat Ridge, CO 80033 303-422-1566 www.SLICompliance.com Accredited by the Election Assistance Commission (EAC) for Selected Voting System Test Methods or Services Test Report version 2.0 Page 1 of 12 Document No. DOM-17002-CSTR-01 Dominion Voting Democracy Suite 5.2 Software Test Report r2.0 Copyright 2017 by SLI ComplianceSM Revision History Release Author Revision Summary 1.0 M. Santos Initial Release 2.0 M. Santos Updates for CVSS discrepancies Disclaimer The information reported herein must not be used by the client to claim product certification, approval, or endorsement by NVLAP, NIST, or any agency of the Federal Government. Trademarks • SLI is a registered trademark of SLI Compliance. • All products and company names are used for identification purposes only and may be trademarks of their respective owners. Test Report version 2.0 Page 2 of 12 Document No. DOM-17002-CSTR-01 Dominion Voting Democracy Suite 5.2 Software Test Report r2.0 TABLE OF CONTENTS INTRODUCTION ........................................................................................................................................... 4 SCOPE OF THE DOMINION DEMOCRACY SUITE 5.2 VOTING SYSTEM ............................................................... 4 SYSTEM TOPOLOGY DIAGRAM ...................................................................................................................... 5 REVIEW SPECIFICATIONS ......................................................................................................................... 6 SOURCE CODE REVIEW ................................................................................................................................ 6 REVIEW RESULTS....................................................................................................................................... 8 DISCREPANCIES ........................................................................................................................................... 8 VULNERABILITIES ......................................................................................................................................... 9 FINAL REPORT .......................................................................................................................................... 11 Test Report version 2.0 Page 3 of 12 Document No. DOM-17002-CSTR-01 Dominion Voting Democracy Suite 5.2 Software Test Report r2.0 INTRODUCTION This report outlines the test approach SLI Compliance (SLI) followed when performing Software Testing on the Dominion Democracy Suite 5.2 voting system against the California Voting System Standards (CVSS). The purpose of this document is to provide an understanding of the work SLI conducted. Scope of the Dominion Democracy Suite 5.2 Voting System This section provides a description of the scope of Dominion Democracy Suite 5.2 voting system components: • EMS – Result, Tally and Reporting (RTR) application • ImageCast Central (ICC) application • ImageCast Evolution (ICE) firmware/hardware • ImageCast X (ICX) firmware/hardware The Dominion Democracy Suite 5.2 Election Management System (EMS) represents a set of N-Tier software applications (EMS, RTR, Adjudication) for pre- voting and post-voting election project activities that are applicable to jurisdictions of various sizes and geo-political complexities. The Dominion Democracy Suite 5.2 ICC system consists of a central high-speed optical scan ballot counter (tabulator) called the ICC Ballot Counter and is used for processing absentee ballots (such as vote by mail). This ballot counter unit is based on commercial off the shelf (COTS) hardware coupled with custom-made ballot processing application software. It is used for high-speed centralized scanning and counting of paper ballots. The Dominion Democracy Suite 5.2 ICE system employs a precinct-level optical scan ballot counter (tabulator) in conjunction with an external ballot box. This tabulator is designed to mark and/or scan paper ballots, interpret voting marks, communicate these interpretations back to the voter (either visually through the integrated LCD display or audibly via integrated headphones) and, upon the voter’s acceptance, deposit the ballots into the secure ballot box. The Dominion Democracy Suite 5.2 ICX ballot marking platform is used for creation of paper Electronic Mobile Ballots. These ballots are later scanned and tabulated by the ICC optical ballot counter and/or scanned, verified, and cast by the ICE. Test Report version 2.0 Page 4 of 12 Document No. DOM-17002-CSTR-01 Dominion Voting Democracy Suite 5.2 Software Test Report r2.0 System Topology Diagram Test Report version 2.0 Page 5 of 12 Document No. DOM-17002-CSTR-01 Dominion Voting Democracy Suite 5.2 Software Test Report r2.0 REVIEW SPECIFICATIONS The following are the specifications for source code testing conducted on the Dominion Democracy Suite 5.2 voting system. Source Code Review The Dominion Democracy Suite 5.2 voting system includes proprietary software and firmware. The Dominion Democracy Suite 5.2 voting system code base was tested to the applicable CVSS requirements. Review of the code included: • Adherence to the applicable standards in sections 5 and 7 of the CVSS • Adherence to other applicable coding format conventions and standards including best practices for the coding language used • Analysis of the program logic and branching structure • Evaluation of whether the system is designed in a way that allows meaningful analysis, including: o Whether the architecture and code is amenable to an external review o Whether code analysis tools can be usefully applied o Whether the code complexity is at a level that obfuscates its logic Security considerations reviewed against the code base included: • Search for exposures to commonly exploited vulnerabilities • Evaluate the use and correct implementation of cryptography and key management • Analyze error and exception handling • Evaluate the likelihood of security failures being detected o Evaluate whether audit mechanisms are reliable and tamper resistant o Evaluate whether data that might be subject to tampering is properly validated and authenticated • Evaluate the risk that a user can escalate his or her capabilities beyond those authorized • Evaluate the design and implementation to ensure that sound, generally accepted engineering practices are followed, checking to verify that code is defensively written against: o Bad data Test Report version 2.0 Page 6 of 12 Document No. DOM-17002-CSTR-01 Dominion Voting Democracy Suite 5.2 Software Test Report r2.0 o Errors in other modules o Changes in environment o User errors o Other adverse conditions • Evaluate for embedded, exploitable code (such as “Easter eggs”) that can be triggered to affect the system • Evaluate the code for dynamic memory access features which would permit the replacement of certificated executable code or control data or insertion of exploitable code or data • Evaluate the code for use of runtime scripts, instructions, or other control data that can affect the operation of security relevant functions or the integrity of the data Components and coding languages involved in Dominion’s applications are shown in Table 1. Table 1 – Democracy Suite 5.2 Components Component Language/s Lines of Code Standard ICC C/C++ 234,812 CPlusPlus_CodingStandard-5.2-CA.pdf ICX Java 166,547 dvs_JavaCodingStandards.pdf ICE C/C++ 822,346 CPlusPlus_CodingStandard-5.2-CA.pdf Csharp_AutomatedCodeReview-5.2- ADJ C# 189,280 CA.pdf Csharp_AutomatedCodeReview-5.2- EMS C# 1,682,875 CA.pdf Source Code Review Tools utilized by SLI included: • Module Finder: an SLI proprietary application used to parse module names from C/C++ and VB code and populate the identified module names into the review documents • StyleCop: a commercial application used to review code to stated requirements • Understand: a commercial application used to review code to stated requirements Test Report version 2.0 Page 7 of 12 Document No. DOM-17002-CSTR-01 Dominion Voting Democracy Suite 5.2 Software Test Report r2.0 REVIEW RESULTS Discrepancies Discrepancies are reported to provide the California Secretary of State a basis for evaluating the extent to which the source code meets applicable standards. ADJ source code review Four violations of the “single exit point” requirement were found in the ADJ source code base reviewed. As a result, four discrepancies were written against the code base. EMS source code review There were fifty violations of the “single exit point” and one function found to be longer than 240 lines in the EMS source code base reviewed. As a result, fifty-one discrepancies were written against the code base. ICC source code review There were nine instances of unchecked pointers and one instance of case statement without a break found in the ICC source code base reviewed. As a result, ten discrepancies were written against the code base. ICE source code review There were four instances of unchecked pointers found in the ICE source code base reviewed. As a result, four discrepancies were written against the code base. ICX source code review No source code requirements were found to be at issue within the ICX source code base reviewed and no discrepancies were written against the code base. Test Report version 2.0 Page 8 of 12 Document No. DOM-17002-CSTR-01 Dominion Voting Democracy Suite 5.2 Software Test Report r2.0 Vulnerabilities For any vulnerabilities discovered, SLI was tasked with identifying the particular standards applicable to each vulnerability. To the extent possible, reported vulnerabilities include an indication of whether the exploitation of the vulnerability would require access by: • Voter: Usually has low knowledge of the voting machine design and configuration. Some may have more advanced knowledge. May carry out attacks designed by others. They have access to the machine(s) for less than an hour. • Poll worker: Usually has low knowledge of the voting machine design and configuration. Some may have more advanced knowledge. May carry out attacks designed by others. They have access to the machine(s) for up to one week, but all physical security has been put into place before the machines are received. • Elections official insider: Wide range of knowledge of the voting machine design and configuration. May have unrestricted access to the machine for long periods of time. Their designated activities include: • Setup and pre-election procedures; • Election operation; • Post-election processing of results; and • Archiving and storage operations. • Vendor insider: Possesses great knowledge of the voting machine design and configuration. They have unlimited access to the machine before it is delivered to the purchaser and, thereafter, may have unrestricted access when performing warranty and maintenance service, and when providing election administration services. SLI will not verify or demonstrate exploitability of the vulnerability but the report of the vulnerability will identify factors involved in the exploitation. Any vulnerability theories developed by the source code review team members shall, to the extent possible, be referred to the Secretary of State staff. ADJ source code vulnerability review No vulnerabilities were found within the ADJ source code base reviewed. As a result, no findings were written against the code base. EMS source code vulnerability review No vulnerabilities were found within the EMS source code base reviewed. As a result, no findings were written against the code base. Test Report version 2.0 Page 9 of 12 Document No. DOM-17002-CSTR-01 Dominion Voting Democracy Suite 5.2 Software Test Report r2.0 ICC source code vulnerability review No vulnerabilities were found within the ICC source code base reviewed. As a result, no findings were written against the code base. ICE source code vulnerability review The following potential vulnerabilities were found within the ICE source code base: SQL Statements Five instances of SQL statements that hold the possibility of code being injected into them were observed within the ICE source code base. It was noted, however, that these statements are inside private functions and can only be accessed by appropriate function calls. As a result of the placement of the SQL statements in question, the level of access required to take advantage of this potential vulnerability would be that of a vendor insider – someone with great knowledge of, and access to, the voting machine design and configuration. strcopy It was noted that forty-four instances of the “strcopy” function are being used. It is recommended not to use strcopy as it does not protect against out of bounds issues. The strings being acted on are normally bounds-checked either on entry into or before being passed by the receiving or calling function. For the “strcopy” statements in question, the level of access required to take advantage of this potential vulnerability would be that of a vendor insider – someone with great knowledge of, and access to, the voting machine design and configuration. memcpy It was noted that six instances of the “memcpy” function are being used. Code using the memcpy function is prone to buffer overflow. The data being acted on is normally bounds-checked on entry into or before being passed by the receiving or calling function. For the “memcpy” statements in question, the level of access required to take advantage of this potential vulnerability would be that of a vendor insider – someone with great knowledge of, and access to, the voting machine design and configuration. strcmp It was noted that one instance of the “strcmp” function is being used. Code using the “strcmp” function is prone to buffer overflow. Test Report version 2.0 Page 10 of 12 Document No. DOM-17002-CSTR-01 Dominion Voting Democracy Suite 5.2 Software Test Report r2.0 Values being passed into the strcmp function are bounds-checked before being passed to the strcmp function. For the “strcmp” statements in question, the level of access required to take advantage of this potential vulnerability would be that of a vendor insider – someone with great knowledge of, and access to, the voting machine design and configuration. ICX source code vulnerability review One potential vulnerability was found within the ICX source code base reviewed. Potentially, whenever a USB drive is inserted into the ICX machine it is automatically loaded, without a security check of the contents. This could mean that regardless of what is on that thumb drive it will be read and if an “.exe” file exists, it will be run. This potential vulnerability will be further investigated during Security testing. For the vulnerability in question, the level of access required to take advantage of this potential vulnerability would be inclusive of the following actors: • Voter, who could potentially gain access to the USB port and cause a reboot of the device. • Poll worker, who does have access to the USB port as well as the ability to reboot the device. • Elections official insider, who does have access to the USB port as well as the ability to reboot the device. • Vendor insider, who does have access to the USB port as well as the ability to reboot the device. Final Report Sixty-nine discrepancies were identified within the Dominion Democracy Suite 5.2 code base. Several potential vulnerabilities were identified within the Dominion Democracy Suite 5.2 code base, within either the ICE code base or the ICX code base. Within the Dominion Democracy Suite 5.2 ICE code base, all findings were low risk vulnerabilities that would require an in-depth knowledge of the ICE code base and how it operates to be able to successfully subvert the system. To exploit them successfully would require modifying the code before any build. Within the Dominion Democracy Suite 5.2 ICX code base, one potential vulnerability was discovered and the level of access required to take advantage of this potential vulnerability would be open to a variety of actors including a voter, a poll worker, an election official insider, and a vendor insider. This possible Test Report version 2.0 Page 11 of 12 Document No. DOM-17002-CSTR-01 Dominion Voting Democracy Suite 5.2 Software Test Report r2.0 vulnerability has a more widespread potential. Polling place procedures are one method of mitigating this issue, with poll workers actively verifying that the USB ports are sealed and no one has access. As per the direction given by the California Secretary of State, this software testing report does not include any recommendation as to whether or not the system should be approved. End of Test Report Test Report version 2.0 Page 12 of 12 Document No. DOM-17002-CSTR-01