All bodies  ›  Office of Voting Systems Technology Assessment  ›  Hart Verity Voting 3.0 Voting System Software Testing Report

OVSTA

Hart Verity Voting 3.0 Voting System Software Testing Report

Hart Verity Voting 3.0.1 Voting System

Office of Voting Systems Technology Assessment · vendors-hart-intercivic-verity-verity-sc · Testing report · Hart InterCivic

Read the report at Hart InterCivic ↗

Software Testing Verity Voting System 3.0 Report Date: 2018-09-07 Version: 2.0 Status: FINAL Classification: Public atsec information security corporation 9130 Jollyville Road, Suite 260 Austin, TX 78759 Tel: +1 512 615 7300 Fax: +1 512 615 7301 www.atsec.com Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 1 of 29 Revision history Version Change date Author(s) Changes to previous version 1.0 2018-07-09 Ryan Hill Initial draft 1.1 2018-07-27 Ryan Hill Second draft 2.0 2018-09-07 Ryan Hill Updated based on customer feedback. Trademarks atsec and the atsec logo are registered trademarks of atsec information security corporation. Verity is a trademark of Hart InterCivic, Inc. FCMG and the FCMG Logo are registered trademarks of the Freeman, Craft, McGregor Group. Microsoft, Windows, .NET, and SQL Server are registered trademarks of Microsoft Corporation. MITRE is a registered trademark of The MITRE Corporation. Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 2 of 29 Table of Contents 1 Executive Summary ....................................................................................................... 5 2 Introduction .................................................................................................................... 6 2.1 Scope and Basis ................................................................................................... 6 2.2 Inputs .................................................................................................................... 7 2.3 Threat Model ........................................................................................................ 7 2.4 Methodology ......................................................................................................... 8 2.4.1 Potential vulnerabilities .............................................................................. 10 2.4.2 Code quality ............................................................................................... 10 2.4.3 Design ....................................................................................................... 10 2.4.4 Cryptography ............................................................................................. 11 2.4.5 Back doors ................................................................................................. 11 2.4.6 Measurement of findings ........................................................................... 11 2.4.7 Depth of analysis ....................................................................................... 12 3 Description of the Verity Voting System ....................................................................... 13 3.1 Voting System Functions .................................................................................... 13 3.2 Physical Components ......................................................................................... 13 3.3 Logical Components ........................................................................................... 14 3.4 Interfaces ............................................................................................................ 14 3.4.1 Network interfaces ..................................................................................... 14 3.4.2 Peripheral devices ..................................................................................... 15 3.4.3 Files ........................................................................................................... 15 3.4.4 Databases ................................................................................................. 16 4 Findings ....................................................................................................................... 17 4.1 Public Vulnerability Search ................................................................................. 17 4.2 Static Code Analysis & Documentation Review .................................................. 19 Glossary ......................................................................................................................... 24 References ..................................................................................................................... 26 Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 3 of 29 List of Tables Table 1: Device/Area Media ........................................................................................... 15 Table 6: Potential Vulnerabilities Identified ..................................................................... 19 Table 7: Summary of issues discovered during the static code analysis ........................ 23 Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 4 of 29 1 Executive Summary This report was prepared by atsec information security corporation to review aspects of the security and integrity of the Verity Voting System v. 3.0. atsec is an independent, third-party company providing information-security assurance related services. This report identifies security weaknesses and vulnerabilities found through static code review and by searches of public vulnerability sources. The search focused particularly on those that could be exploited to alter vote recording, vote results, critical election data such as audit logs, or to conduct a denial of service attack on the voting system. It should be noted that the public vulnerability search is most likely to identify vulnerabilities that have been reported in commonly used commercial off the shelf system components. The static code analysis revealed 10 issues, the public vulnerability search identified 9 vulnerabilities that could potentially be used for an attack on the voting system. Of the 10 issues found by static code analysis, 5 were assessed to be of medium severity and 5 were assessed to be of low severity. At a high level, weaknesses and vulnerabilities were identified that can be attributed to difficulties resulting from an aging and repeatedly modified system. These include the following. Use of old 3rd party code containing publicly known vulnerabilities Instances of incorrect error or exception handling Use of outdated crypto algorithms and key lengths which become more susceptible to attack over time Hard coded passwords and unenforced password complexity rules Poor password storage methods Inclusion of code that is no longer used Possibly weak or duplicated initialization vectors SQL query best practices are not followed Instances of poor audit logging Inconsistent design such as varying requirements for password strength In addition, numerous less severe but still noteworthy vulnerabilities were found related to code quality and non-conformance to the California Voting System Standards. See section 4 for all findings. Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 5 of 29 2 Introduction This report was prepared by atsec information security corporation to review aspects of the security and integrity of the Verity Voting System v3.0. It has been prepared in support of a contract awarded to Freeman, Craft, McGregor Group, Inc. This project has a goal to provide voting system test support services to assist the California Secretary of State (SOS) with the evaluation of the Verity Voting System v3.0 for its suitability for use in the State of California in accordance with Elections Code sections 19001 et seq. The source code review was performed by the following atsec information security corporation consultants. Fiona Pattinson (Project Manager) King Ables (Lead Reviewer) Jason Gorgeoulis (Reviewer) Demetrius Kellum (Reviewer) Sean Lewis (Reviewer) Dick Sikkema (Reviewer) Ryan Hill (Documentation Specialist) This document identifies the security vulnerabilities found through static code review and by searches of public vulnerability sources that could be exploited to alter vote recording, vote results, critical election data, such as audit logs, or to conduct a denial of service attack on the voting system. 2.1 Scope and Basis The Verity Voting System (EVS) v3.0 (hereafter referred to as the “voting system” or simply as the “system”) is a paper-based voting system made up of software, hardware, device, and peripheral components. The system has the following software components: Verity Data—Ballot design software Verity Build—Election definition and media creation/ballot printing software Verity Central—Central ballot scanning and adjudication software Verity Count—Ballot tabulation and reporting software The system can be set up to support one or more of the following hardware components: Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 6 of 29 Verity Print—On-demand ballot printing device Verity Touch Writer—Accessible ballot marking device Verity Reader—Optional ballot verification device Verity Scan—Ballot scanning device Verity vDrive—Specially formatted USB media used for data transfers Verity Access—Accessibility device providing additional input options Verity Key—USB security key atsec performed the source code review on the basis of an Agreement between Freeman, Craft, McGregor Group Inc., with the State of California, which states that the source code review includes examining the system in a manner that will provide the California Secretary of State with a basis for evaluating the extent to which the source code meets applicable standards. The threat model included in the Agreement is reproduced below and defines the threat parameters for the scope of this examination. 2.2 Inputs The reviewers were provided with a Technical Data Package (TDP) including the source code and a set of documents that support the findings in this report. These documents were examined during the source code review to better understand the voting system and identify discrepancies between the documentation and the source code. These documents are listed in the References section. 2.3 Threat Model This assessment is centered on the threat model given in the Request for Quotation (RFQ). The system is expected to counter the following attacks. Alter vote recording Alter vote results Alter critical election data, such as audit logs Conduct a denial of service attack on the voting system To the extent possible, vulnerabilities found have been reported with an indication of whether the exploitation of the vulnerability would require access by any of the following. 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. Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 7 of 29 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: o Set up and pre-election procedures o Election operation o Post-election processing of results o Archiving and storage operations Vendor insider: Has 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. The atsec team did not attempt to demonstrate exploitability of identified potential vulnerabilities. However, identified potential vulnerabilities were described along with the anticipated factors necessary to mount an attack. 2.4 Methodology The atsec team was tasked with the Source Code review which included but was not limited to the following aspects. Evaluation of potential vulnerabilities and related issues (code quality and standards compliance), considering that an exploitable issue in a component that is not in itself security relevant could be used to subvert more critical data. This is an issue whenever the architecture of the system does not provide strong separation of the components. Adherence to other applicable coding format conventions and standards including best practices for the coding language used, and any IEEE, NIST, ISO or NSA standards or guidelines which the Contractor find reasonably applicable. Analysis of the program logic and branching structure. Search for exposures to commonly exploited vulnerabilities, such as buffer overflows, integer overflow, inappropriate casting or arithmetic. Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 8 of 29 Evaluation of the use and correct implementation of cryptography and key management. Analysis of error and exception handling. Evaluation of the likelihood of security failures being detected. o Are audit mechanisms reliable and tamper resistant? o Is data that might be subject to tampering properly validated and authenticated? Evaluation of the risk that a user can escalate his or her capabilities beyond those authorized. Evaluation of whether the design and implementation follow sound, generally accepted engineering practices. Is code defensively written to protect against: o Bad data; o Errors in other modules; o Changes in environment; o User errors; and o Other adverse conditions. Evaluation of whether the system is designed in a way that allows meaningful analysis, including: o Is the architecture and code amenable to an external review (such as this one)? o Could code analysis tools be usefully applied? o Is the code complexity at a level that it obfuscates its logic? Search for embedded, exploitable code (such as “Easter eggs”) that can be triggered to affect the system. Search for dynamic memory access features which would permit the replacement of certificated executable code or control data or insertion of exploitable code or data. Search 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. Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 9 of 29 2.4.1 Potential vulnerabilities The reviewers used the following public repositories to identify vulnerabilities that may affect the system. MITRE Common Vulnerability and Exposures (CVEs) NIST NVD using Common Platform Enumeration (CPE) tool COTS component support sites (e.g., HP, JRSoftware, NHibernate) Although this list may not have entries for the voting system itself, constituent software and commercial off-the-shelf (COTS) components that the voting system integrates may contain vulnerabilities. The review team identified such components that the system relies upon and conducted searches for these products as well. 2.4.2 Code quality While performing the examination of the code for other activities, the reviewers identified and recorded areas within the code base that demonstrate poor code quality. Although poor code quality does not necessarily identify vulnerabilities, it does provide an indication that vulnerabilities may exist. The following coding standards were used during this analysis. California Voting System Standards, October 2014 The reviewers also compared the code against the Verity Coding Standards that was found in the TDP. The team also performed numerous informal static analysis activities on the source code to gather code quality data using customized command scripts. 2.4.3 Design The source code review team used the technical data package, source code, and any material provided or otherwise publicly available to construct an understanding of the architecture and design of the voting system. This understanding included discovering the external interfaces and their security mechanisms and controls, particularly as much information as possible was gathered to support conclusions regarding the ability for a threat agent to tamper with or circumvent security controls. Interfaces represent the primary attack surface of the voting system. Interfaces can include web-based interfaces, native graphic user interfaces, command line interfaces, or technical interfaces that are not designed for direct user interaction (e.g., database connections). Each of these interfaces was examined to identify the security controls that counter the threats. Secure interfaces also depend on filtering out poorly structured or corrupt data. The review team specifically checked for input validation mechanisms and determined if related attacks, such as command injection are possible. Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 10 of 29 2.4.4 Cryptography While cryptography is often the most difficult security mechanism to break directly, misuse of cryptographic primitives can render that protection weak or non-existent. The review team identified where cryptography is used throughout the source code and determined if its use is appropriate for the given purpose. For example, using a cryptographic hash function to protect passwords is appropriate while using an encryption algorithm with a hard-coded key is not. 2.4.5 Back doors Those with access to the voting system during development and having malicious intent can place back doors into the source code so that they could gain unauthorized access to the voting system during operation. Back doors are extremely hard to find because a seasoned programmer can obfuscate code to look benign. The review team marked areas of vulnerabilities as identified by command line searches, as described in section 4.5, for further scrutiny. For example, a particular area of code with poor code quality and access to sensitive information such as authentication credentials might be a good place to hide a back door. The reviewers gave such areas extra scrutiny by considering insider threats in addition to unintentional implementation flaws. 2.4.6 Measurement of findings A summary of findings is listed in section 4. Each finding contains the following information. A description of the vulnerability or weakness An assessment of what threats are involved in the possible exploitation of the vulnerability or weakness A categorization of the findings, which can be: o A weakness in the source code. Weaknesses are issues identified in the source code that are not directly exploitable but may indicate the existence of exploitable vulnerabilities within the source code. o A non-conformity in the code quality standards. Non-conformities do not necessarily imply weaknesses, though the rationale for the requirement is often based on preventing weaknesses. o A potential vulnerability in the source code. The reviewers consider potential vulnerabilities to likely be exploitable. o A vulnerability in the source code. The reviewers have either shown or have referenced other parties who have asserted the vulnerability to be exploitable. A severity level of the findings, which can be either: Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 11 of 29 o A low severity finding. Low severity implies either the impact to the product is low or already mitigated by the system, or the difficulty in exploitation would likely require unrestricted access to the systems, expert knowledge of the system, or would require cost prohibitive resources. o A medium severity finding. Medium severity implies either the impact of exploitation to the product would be significant, or the difficulty in exploitation would likely require extended access to the systems, informed knowledge of the system, or would require significant resources. o A high severity finding. High severity implies either the impact of exploitation to the product would result in complete compromise of security, or the difficulty in exploitation would likely require little to no access or knowledge of the systems or little to no resources. 2.4.7 Depth of analysis Because of the complexity and volume of the material to be reviewed, limited time available and broad scope (assessment of documents and quality of the code, along with source code review), the team concentrated on surveying a breadth of categories of vulnerabilities that they could identify, and only reviewed in depth enough samples of each of the categories to determine how that vulnerability was being handled. For all the categories, no attempt was made to enumerate how many instances existed. Other source code review projects would be likely to find more instances, but those findings should be within the listed categories. Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 12 of 29 3 Description of the Verity Voting System The Verity Voting System is a suite of software, hardware, device and peripheral components for conducting and reporting elections. 3.1 Voting System Functions The Verity Voting System provides a number of high-level functions necessary to conduct an election. These activities include the following. Ballot data creation Election definition and ballot production Device configuration Polling-place-based ballot printing Polling place Ballot Marking Device Polling place ballot review Polling place digital scanning for paper ballots High-speed, large-volume ballot scanning Ballot Adjudication Counting of votes/tabulation Consolidation and reporting of results and audit logs Audits and recounts 3.2 Physical Components Several components are used in conducting an election with Verity. Some are specialized hardware components built or assembled by Verity, others are COTS products used to run Verity. The following are the specialized hardware components. Verity Print—An on-demand device for printing and issuing blank paper ballots to voters. The voter completes their ballot and casts it using either Verity Scan or by putting it in a ballot box to be scanned centrally. Verity Touch Writer—An accessible device for marking digital ballots using a touch screen. After confirming their selections the vote prints the ballot on the attached printer and casts it. Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 13 of 29 Verity Reader—A device for optionally verifying a ballot. A voter can insert their marked paper ballot to verify how it will be counted and hear audio read-back of their choices. It does not store or tabulate votes. Verity Scan—A polling-place-based digital device for scanning and casting either hand-marked or printed ballots. The voter can check and correct the ballot before casting and the scanned ballot is depositing into a secure ballot box for storage. Verity vDrive—A specially formatted USB media used to transfer the election ballot styles to voting devices, to transfer cast vote records to Verity Count for tabulation, and to collect and transfer audit logs. Verity Access—An accessibility device attached to each Verity Touch Writer and Verity Reader device to provide the reader with additional input options including a scrolling wheel and select button, headphones, and a connection that may be used with tactile buttons or sip-and-puff devices. Verity Key—A USB device for Verity’s two-factor authentication process. Critical operations require the Verity Key to be inserted and a passcode to be entered. 3.3 Logical Components Verity Data—Ballot design software for entering, importing, and managing election data, jurisdiction data and translations as well as recording and importing audio. It also allows users to choose ballot templates, view ballot previews and lock the election data so that it can be opened in Verity Build. Verity Build—Election definition, media creation, and ballot printing software for opening elections, proofing data, configuring device settings, printing ballots and writing vDrives and Verity Keys. It also performs the final steps to prepare ballots for elections. Verity Central—Central ballot scanning and adjudication software for scanning and reviewing ballots, resolving write-in votes and voter intent issues, and writing cast vote records to vDrive for tabulation in Verity Count. Verity Count—Ballot tabulation and reporting software for reading vDrives, tabulating ballots, resolving write-in votes, printing reports, and exporting election results. 3.4 Interfaces The voting system moves data between external interfaces and internal components in a variety of ways: peripheral devices, files, and databases. This section will discuss these interfaces in more detail. 3.4.1 Network interfaces The logical components located at the Data/Build (can be one machine), Central, and Count sites will use Ethernet for network connectivity. Hart will provide the hardware necessary to instantiate a closed network at each individual location. The use of non- hardwired connectivity will not be permitted and such functionality has been disabled (e.g., wireless, Bluetooth). Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 14 of 29 The communication channels to other IT entities will be protected using TLS over TCP/IP. 3.4.2 Peripheral devices Data is moved between logical components using different media. Depending on the purpose of the data, the appropriate transport mechanism is chosen. Data will either be transported as a digital file or physically printed material. Table 1 summarizes the appropriate export media for each device or area. Component Export mechanism Verity Data and Verity Build (these are on Verity vDrive (election definitions) the same system) Verity Keys (voting equipment programming) Pre-voting paper ballots Verity Print Pre-voting ballots Verity Central Verity vDrive (Cast Vote Records) Verity Touch Writer Voter marked ballots (digital form) Verity vDrive (audit logs) Verity Scan Verity vDrive (Cast Vote Records and audit logs) Table 1: Device/Area Media 3.4.3 Files Many file types are used by various components of the voting system and are transferred by a variety of interfaces and media. The following types of data are stored in the voting system. Election data and configuration files Media files (e.g., audio) OS/WES7 configuration files Device configuration files Election results files Cast Vote Record (CVR) data files Audit logs Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 15 of 29 Extensible Markup Language (XML) PMQ files Signature files 3.4.4 Databases The Verity voting system uses two different Microsoft SQLServer databases: SQLServer 2012 and SQLServer Compact. Microsoft SQLServer 2012 was stated as the version used. However, it is unclear which version of SQLServer Compact is used. The following applications that will have access to the Microsoft SQLServer 2012 database. Verity Build Verity Central Verity Count User Management Election Manager Verity Device databases are created using Microsoft SQLServer Compact. These devices include the following. Verity Scan Verity Touch Writer Verity Reader Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 16 of 29 4 Findings 4.1 Public Vulnerability Search Table 6 lists the publicly known vulnerabilities identified that could potentially impact the voting system. Name (Vulnerable Description Additional information component) CVE-2016-2243 (HP Local users can cause the https://support.hp.com/us- Z240 Workstation) system to fail to recover the en/document/c05012469 BIOS. https://cve.mitre.org/cgi- bin/cvename.cgi?name=CVE- 2016-2243 Meltdown/Spectre The computer system is https://support.hp.com/us- (HP Z240 susceptible to the en/document/c05869091 Workstation) Meltdown/Spectre malware. Outdated version The software version being https://support.microsoft.com/en- (SQLServer 2012) used (11.0.2100) is out us/help/321185/how-to-determine- dated. There have been the-version-edition-and-update- numerous Service Packs level-of-sql-server-an and Security updates since this release. The reviewer suggests updating to address any discovered (and potentially undiscovered) vulnerabilities. The latest service pack is Service Pack 4. SP1 installation Certain updates related to https://support.microsoft.com/en- failure (Windows SP1 may fail when updating us/help/3189682/serviceability- Embedded System the OS. update-for-windows-embedded- 7) Some updates that could standard-7-sp1-posready-7-a fail are: KB2949927: Availability of SHA-2 Hashing Algorithm for Windows 7 and Windows Server 2008 R2 KB3033929: Security Update for Windows 7 for x64-based Systems Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 17 of 29 Name (Vulnerable Description Additional information component) KB3110329: Security Update for Windows 7 The reviewer is providing this information to ensure the developer is aware of this situation and develop an appropriate mitigation strategy. Meltdown (Windows The operating system used https://news.softpedia.com/news/ Embedded System is susceptible to the microsoft-re-issues-kb4056894- 7) Meltdown malware. kb4056892-meltdown-spectre-for- some-amd-chips-519350.shtml Meltdown patch (KB4056894): https://www.catalog.update.micros oft.com/Search.aspx?q=4056894 Bugs (NHiberate) The reviewer was unable to https://github.com/nhibernate/nhib determine the version of ernate- NHibernate the system is core/issues?q=is%3Aopen+is%3A using. The link provided will issue+label%3A%22t%3A+Bug% list bugs found in all 22 versions of the software. The reviewer suggests the developer look at the list and find bugs against the version of NHiberate being used. Bugs (Fluent The reviewer was unable to https://github.com/FluentNHiberna NHibernate) determine the version of te/fluent- Fluent NHibernate the nhibernate/issues?q=is%3Aopen+ system is using. The link is%3Aissue+label%3Abug provided will list bugs found in all versions of the software. The reviewer suggests the developer look at the list and find bugs against the version of Fluent NHiberate being used. Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 18 of 29 Name (Vulnerable Description Additional information component) DLL Hijacking The software is susceptible https://packetstormsecurity.com/fil (InnoSetup/Inno to including a Trojan horse es/134694/jrsoft-dllhijack.txt Script Setup) DLL that is located in an http://cve.mitre.org/cgi- untrusted path on the bin/cvename.cgi?name=CVE- system. 2010-4833 http://jrsoftware.org/files/is5- whatsnew.htm http://news.jrsoftware.org/news/in nosetup/msg103180.html http://news.jrsoftware.org/news/in nosetup/msg103182.html Malformed Windows The reviewer noticed how http://cve.mitre.org/cgi- binary not protected the developer has bin/cvename.cgi?name=CVE- (McAfee Application whitelisted what files should 2014-9920 Control for Devices) run on the system. The https://kc.mcafee.com/corporate/in following CVE is something dex?page=content&id=SB10077 to be aware of in the event a file is added that the program may think is non- executable. Table 2: Potential Vulnerabilities Identified 4.2 Static Code Analysis & Documentation Review Table 7 summarizes the findings that arose from the source code review team's assessment of the voting system. Potential exploitation of a weakness or vulnerability and type of attacker is noted where applicable. Description Assessment Categorization Usage of SHA-1 to The use of SHA-1 for signature Type: potential sign data and sign generation is generally disallowed by vulnerability and hash. Weakness of NIST (except where specifically non-conformity SHA-1 could allow for allowed in NIST protocol-specific (FIPS) corruption of data. guidance); however, its use for digital Severity: low signature verification is allowed for legacy use (i.e., the verification of already-generated digital signatures). Note: NIST still does allow testing of SHA-1 although NIST have requested federal agencies to stop using SHA-1. Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 19 of 29 Description Assessment Categorization NIST have provided guidance on mitigating the risk of using SHA-1 in SP800-131a. Microsoft SQL Server Not having the latest version of the Type: potential 2012 (MSSQL) is not software leaves the system open to vulnerability patched. undiscovered and unpatched Severity: medium vulnerabilities. The version of MSSQL installed is 11.0.2100. There have been numerous Service Packs and Security updates since this release. In order to address any discovered (and potentially undiscovered) vulnerabilities, updating to the latest Service Pack is recommended (Service Pack 4). The ability to write The code has access to the system Type: potential directly to memory is a memory. Malicious code could be vulnerability potential vulnerability. interjected and executed. Severity: low Although compliant The algorithm used to determine if a Type: potential with CVSS 7.2.3 h) user’s password is strong enough is vulnerability requirements, not using best practices. The Severity: low password complexity algorithm does not enforce the use of rules do not follow best lower case lettering. This will allow a practices. The weaker password, by default. password complexity Also, the minimum length acceptable criteria allow for a is too small. Current practice for reduced strength secure password length is 12 to 15 password. If the characters. system becomes compromised, this will allow a threat agent to determine a user’s password more quickly. Password information The password field is being stored in Type: potential is not being stored the String class. vulnerability using an Severity: medium The All-in-one Code Framework appropriate/suitable Coding Standards states that MSDN class. Password provides guidelines for using the .NET Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 20 of 29 Description Assessment Categorization information is being framework. stored in an unsecure Since passwords are sensitive part of memory while information, a different class more being used. Code suitable to this type of information could be interjected, should be used, such as the using other parts of the SecureString class. code base, to access this sensitive From the Microsoft MSDN site: information. When created properly, a SecureString instance provides more data protection than a String. When creating a string from a character-at-a-time source, String creates multiple intermediate in memory, whereas SecureString creates just a single instance. Garbage collection of String objects is non-deterministic. In addition, because its memory is not pinned, the garbage collector will make additional copies of String values when moving and compacting memory. In contrast, the memory allocated to a SecureString object is pinned, and that memory can be freed by calling the Dispose method. Usage of authorization There is use of AuthorizationException Type: vulnerability check for a plugin in the modules. A catch of the Severity: medium could allow exception was detected but it did not unauthorized use of handle the exception. the plugin and manipulation by an unauthorized user. The SQL query strings SQL statements are being constructed Type: vulnerability are being constructed using ‘+’ or append method on a Severity: medium in a way that is class. vulnerable to SQL Best practice (OWASP) is to use injection attacks. parameterized queries for constructing SQL statements. CVSS 5.2.8 Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 21 of 29 Description Assessment Categorization Unable to determine The security policy was unable to be Type: potential security policy fully understood based on the PDFs vulnerability regarding configuration from the technical document package. Severity: low file access and modification. There are instances There are instances where Type: non- where exception/error exception/error handling doesn’t follow conformity, handling doesn’t follow a consistent implementation. potential a consistent Additionally, these instances do not vulnerability implementation. follow the guidelines described in the Severity: low Verity Logging Technical CVSS 5.2.5 Requirements Document (section 5.3: Events that must be logged). For example, there are catch blocks that do not write to any log files, there are instances where exceptions are caught and assigned to variables where nothing is done with that variable, and there are empty catch blocks. Product is no longer Product documentation states all Type: non- FIPS 140-2 certified or cryptographic modules used are FIPS conformity, conformant as claimed. 140-2 validated. potential Currently Non- vulnerability The FIPS 140-2 certificates listed in approved algorithms “Verity Operational Environment Severity: medium may contain 4005515 C00.pdf,” Appendix A, exploitable (#1319,#1326,#1327,#1328,#1329,#1 weaknesses and any 330,#1331) are all now on the CMVP data protected by historical list. encryption may be at Each historical certificate carries the risk. following disclaimer: CVSS 7.5.4 a) iii) "Historical - The referenced cryptographic module should not be included by Federal Agencies in new procurements. Agencies may make a risk determination on whether to continue using this module based on their own assessment of where and how it is used." FIPS requirements have changed since 2011 when these certificates were issued. Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 22 of 29 Description Assessment Categorization Technically, all modules used have been validated as conformant in 2011, but now the certifications have expired. Note: CVSS is not clear in regard to if historical FIPS 140-2 certifications are allowed. Table 3: Summary of issues discovered during the static code analysis Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 23 of 29 Glossary AES Advanced Encryption Standard API Application Programming Interface CAPI Crypto API CBC Cipher Block Chaining CMVP Cryptographic Module Validation Program COTS Commercial Off-The-Shelf CPE Common Platform Enumeration CRC Cyclic Redundancy Check CTR Counter CVE Common Vulnerability and Exposures CVR Cast Vote Record CWE Common Weakness Enumeration TDES Triple-Data Encryption Standard EC Elliptic Curve ECDSA Elliptic Curve Digital Signature Algorithm EDM Election Data Manager ELS Event Log Service EMS Election Management System EQC Election Qualification Code ERM Election Reporting Manager EVS Verity Voting System FIPS Federal Information Processing Standard HMAC Hash Message Authentication Code HTTP Hyper Text Transfer Protocol Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 24 of 29 HTTPS Hyper Text Transfer Protocol Secure IP Internet Protocol IV Initialization Vector KDF Key Derivation Function LAN Local Area Network OS Operating System PBKDF Password-Based Key Derivation Function PC Personal Computer PKI Public Key Infrastructure PRF Pseudo-Random Function PRNG Pseudorandom Number Generator RCV Ranked Choice Voting RMS Removable Media Service RNG Random Number Generator RSA Rivest-Shamir-Adleman SHA Secure Hash Algorithm SHS Secure Hash Standards SOS Secretary of State TCP Transmission Control Protocol TDP Technical Data Package TRD Technical Requirements Document USB Universal Serial Bus VAT Voter Assist Terminal XML Extensible Markup Language Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 25 of 29 References Documentation provided for the source code review included Verity EVS product documentation and other publicly available standards documents. The atsec source code review team also consulted other publicly available documents listed in the last group. Verity Documents PC Application Framework UI Design Document, Version 5 Print Design Reader Design Release Notes Verity Voting 3.0.0, Version A.00, Published 09-08-2016 Scan Design Touch Writer Design Verity 3.0 Desktop Database Schema Verity 3.0 Device Database Schema Verity Airgap Interface Technical Reference, Version A.02, Published 2014 Verity API Specification, Version A.03, Published 09-06-2017 Verity Base Station Microcontroller, Version A.01, Published 05-26-2015 Verity Build 3.0 Modification TRD, Version A.01, Published 09-01-2017 Verity Build TRD, Version A.10, Published 10-14-2015 Verity Build User Interface Design Document, Version 11 Verity California Use Procedures, Verity Voting 3.0, Published 2017 Verity Central 3.0 Modification TRD, Version A.01, Published 07-18-2017 Verity Central TRD, Version A.07, Published 10-22-2015 Verity Central User Interface Specification, Version 8 Verity Coding Standard, Version A.15, Published 03-30-2018 Verity Count 3.0 Modification TRD, Version A.01, Published 09-01-2017 Verity Count TRD, Version A.10, Published 11-02-2015 Verity Count User Interface Specification, Version 9 Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 26 of 29 Verity Data 3.0 Modification TRD, Version A.01, Published 09-01-2017 Verity Data TRD, Version A.06 Verity Desktop User Interface Design Document, Version 3 Verity Device Suite 3.0 Modification TRD, Version A.01, Published 09-01-2017 Verity Device Suite TRD, Version A.09, Published 11-03-2015 Verity Election Definition Data TRD, Version A.01, Published 10-14-2015 Verity Election Management TRD, Version A.06, Published 10-21-2015 Verity Election Management User Interface Design Document, Version 1 Verity Key Design Technical Document, Version A.01, Published 05-26-2015 Verity Logging 3.0 Modification TRD, Version A.01, Published 09-01-2017 Verity Logging Design Technical Document, Version 1.03, Published 05-26-2015 Verity Logging TRD, Version A.04, Published 10-21-2015 Verity Print TRD, Version 6, Published 11-03-2015 Verity Reader TRD, Version A.01, Published 09-01-2017 Verity Risk and Threat Assessment, Version B.00, Published 02-14-2017 Verity Scan 3.0 Modification TRD, Version A.01, Published 09-01-2017 Verity Scan TRD, Version A.07, Published 10-27-2015 Verity Security Requirements Document, Version A.07, Published 10-28-2015 Verity Shared Device User Interface Design Document, 7 Version Verity Software Architecture & Design, Version C.00, 02-14-2017 Verity System Design Verity Electronics Specification, Version A.13, Published 05-01- 2017 Verity Touch Writer 3.0 Modification TRD, Version A.01, Published 09-01-2017 Verity Touch Writer TRD, Version A.09, Published 11-03-2015 Verity Touch Writer User Interface Design Document, Version 12 Verity User Management 3.0 Modification, Version A.01, Published 09-01-2017 Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 27 of 29 Verity User Management TRD, Version A.01, Published 10-21-15 Verity User Management User Interface Design Document, Version 2 Verity Voting 3.0 System Limits, Version C.00, Published 08-30-2017 Verity Voting Verity Operational Environment, Version C.00, Published 09-11-2017 Public Documents All-In-One Code Framework Coding Standards, Published 2014 California Voting System Standards, Published October 2014 National Institute of Standards and Technology, Implementation Guidance for FIPS PUB 140-2 and the Cryptographic Module Validation Program, January 2016, http://csrc.nist.gov/groups/STM/cmvp/documents/fips140-2/FIPS1402IG.pdf National Institute of Standards and Technology, FIPS 140-2 Security Requirements for Cryptographic Modules, May 2001, http://csrc.nist.gov/publications/fips/fips140- 2/fips1402.pdf National Institute of Standards and Technology, FIPS 140-2 Annex A: Approved Security Functions, December 2002, http://csrc.nist.gov/publications/fips/fips140- 2/fips1402annexa.pdf National Institute of Standards and Technology, FIPS 180-4 Secure Hash Standard (SHS), March 2012, http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf National Institute of Standards and Technology, FIPS 186-4 Digital Signature Standard (DSS), July 2013, http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186- 4.pdf National Institute of Standards and Technology, FIPS 197 Advanced Encryption Standard, November 2001, http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf National Institute of Standards and Technology, FIPS 198-1 The Keyed-Hash Message Authentication Code (HMAC), July 2008, http://csrc.nist.gov/publications/fips/fips198-1/FIPS-198-1_final.pdf National Institute of Standards and Technology, NIST Special Publication 800-57, Recommendation for Key Management—Part 1: General (Revised), January 2016, http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57pt1r4.pdf National Institute of Standards and Technology, NIST Special Publication 800-90A, Recommendation for Random Number Generation Using Deterministic Random Bit Generators, June, 2015, http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-90Ar1.pdf Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 28 of 29 National Institute of Standards and Technology, NIST Special Publication 800-131A, Transitions: Recommendation for Transitioning the Use of Cryptographic Algorithms and Key Lengths, November, 2015, https://csrc.nist.gov/publications/detail/sp/800- 131a/rev-1/final OWASP, Open Web Application Security Project, The OWASP SQL and database Scripting Technology Knowledge Base, https://www.owasp.org/index.php/Query_Parameterization_Cheat_Sheet Last update: 2018-09-07 Classification: Public Status: FINAL Version: 2.0 ©2018 atsec information security corporation Page 29 of 29