OVSTA
County of Los Angeles Vsap 2.0 Staff Testing Report
VSAP Tally Version 2.0
Read the report at Los Angeles County VSAP ↗
A P
LEX ADILLA | SECRETARY OF STATE | STATE OF CALIFORNIA
OFFICE OF VOTING SYSTEMS TECHNOLOGY ASSESSMENT
1500 11th Street | Sacramento, CA 95814 | Tel 916.695.1680 | Fax 916.653.4620 | www.sos.ca.gov
County of Los Angeles’
Voting Solutions for All People (VSAP) Tally 2.0
Voting System
Staff Report
Prepared by:
Secretary of State’s
Office of Voting Systems Technology Assessment
December 24, 2019
Table of Contents
I. Introduction ......................................................................................... 1
1. Scope ................................................................................... 1
2. Summary of the Application ................................................. 1
3. Contracting and Outsourcing ............................................... 2
II. Summary of the System .................................................................... 2
III. Testing Information and Results ........................................................ 3
1. Background .......................................................................... 3
2. Functional Testing Summary ............................................... 3
3. Software (Source Code) Testing Summary .......................... 4
4. Security and Telecommunications Testing Summary .......... 15
5. Volume Testing Summary .................................................... 15
6. Accessibility, Usability and Privacy ....................................... 16
7. Hardware Testing ................................................................. 16
IV. Compliance with State and Federal Laws and Regulations ............... 17
V. Conclusion .......................................................................................... 24
I. INTRODUCTION
1. Scope
This report presents the test results for all phases of the certification test of the
County of Los Angeles’ Voting Solutions for All People (VSAP) Tally 2.0. The
purpose of the testing is to test the compliance of the voting system with
California and federal laws, including the California Voting System Standards
(CVSS). Testing also uncovers other findings, which do not constitute non-
compliance, and those findings are reported to the County of Los Angeles to
address the issues procedurally. The procedures for mitigating any additional
findings are made to the documentation, specifically the County of Los Angeles’
VSAP 2.0 Use Procedures.
2. Summary of the Application
The County of Los Angeles submitted an application for the VSAP Tally 2.0
voting system on November 6, 2018. The system is comprised of the following
major components:
a. Tally 2.1.3.27
b. Ballot Marking Device (BMD) A0.2
c. FormatOS Version 0.19.0
d. BMD BASI Version 0.19.0
e. BMD BESI Version 0.19.0
f. BMD Manager (BMG) Version 0.19.0
g. VSAP Ballot Layout (VBL) 1.0-8ddf61d
h. Enterprise Signing Authority (ESA)
i. IBML - ImageTrac 6400
In addition to each of the aforementioned components, which includes the
executable code and the source code, the County of Los Angeles was required
to submit the following: (1) the technical documentation package (TDP); (2) all
the hardware and software components, including all peripheral devices needed
for all phases of testing; (3) and the VSAP Tally 2.0 Use Procedures.
1 | Pa ge
3. Contracting and Outsourcing
Upon receipt of a complete application, the Secretary of State released a
Request for Quote (RFQ) for assistance with testing of the VSAP 2.0 voting
system.
Through the formal California contracting process, the Secretary of State
awarded a contract to the Freeman Craft McGregor Group (FCMG). Atsec, a
sub-contractor of FCMG, performed the Software Testing (Source Code Review),
and hardware testing of the ballot marking devices was subcontracted by FCMG
to National Technical Systems (NTS) Laboratories.
II. SUMMARY OF THE SYSTEM
The VSAP Tally 2.0 consists of the following components:
• Tally 2.1.3.27 —Hardware and software that captures and processes
ballot images ensuring that votes on paper ballots are digitally represented
and counted, storing the images as Cast Vote Records (CVRs).
• Ballot Marking Device (BMD), Unit Ver. A0.2—The central component
of the voting system and the main interface for the voter. It includes a
touchscreen, an audio-tactile interface, a paper handler, a QR code
scanner, a dual-switch input, and an integrated ballot box. The BMD is
used by voters to generate, verify, and cast paper ballots.
• FormatOS Version 0.19.0 – Application used to wipe new BMD devices.
• BMD BASI Version 0.19.0 – Application software for the BMD.
• BMD BESI Version 0.19.0 – Application for election software for BMD.
• BMD Manager (BMG) Version 0.19.0 — Ballot marking device manager
application for managing BMDs including software, ballot configurations,
and post-election data.
• VSAP Ballot Layout (VBL) 1.0-8ddf61d—Defines ballot print formats for
BMD, Vote by Mail (VBM), Remote Accessible Vote by Mail (RAVBM) and
Uniformed Overseas Citizens Absentee Voting Act (UOCAVA) ballots.
VBL also generates data files and packages to configure the BMD, BMG,
ISB, and Tally.
• Enterprise Signing Authority (ESA)—A cryptographic sub-system
(hardware and software) that ensures components of the VSAP conform
to security standards and that the data passed to components is secure
and authenticated.
2 | Pa ge
• IBML - ImageTrac 6400 – High speed scanner used in conjunction with Tally
tabulation software.
III. TESTING INFORMATION AND RESULTS
1. Background
The Secretary of State staff in conjunction with the FCMG, oversaw all phases of
testing of the system, including Functional, Software Testing (Source Code
Review), Security and Telecommunications (Red Team Penetration Testing),
Volume, and Accessibility, Usability and Privacy Testing, and Hardware Testing.
2. Functional Testing Summary
System Configuration:
The system is self-contained on an air gapped network, per the CVSS
requirements. Secretary of State staff witnessed the build of the test environment
utilizing the county provided Use Procedures. The build was completed by staff
of the FCMG. The artifacts produced, will be kept, and distributed by the
Secretary of State. This version is solely for the use of Los Angeles County.
Functional Testing:
The first phase of Functional Testing consisted of following the Use Procedures
to import the following four (4) test elections into the environment:
Presidential Primary (2016 Election) – This election tested the limitations of
ballot styles that can be used within the system.
General Election (Los Angeles County)
Recall Election (2003 Election) – This election tested the capacity to list 135
candidates.
Fictional Election – A special election with two congressional districts and one
municipality.
Temporary workers hand marked each of the ballots, including some marginal
marks to test out stacking functionality. Each election was tabulated using the
IBML high speed scanner, and produced the results as expected.
A detailed report of the Functional Testing conducted on the system can be
found on our website.
3 | Pa ge
3. Software Testing (Source Code) Review Summary
The review was conducted by Atsec. Atsec evaluated the security and integrity of
the voting system by identifying any security vulnerabilities that could be
exploited to:
• Alter vote recording,
• Alter vote results,
• Alter critical data (such as audit logs), or
• Conduct a “denial of service” attack on the voting system.
Atsec’s review of the source code, uncovered twenty-six (26) findings, ranging
from no severity to low. Of the twenty-six, fourteen (14) of the findings required a
mitigation and/or response. The following table 3A: Source Code Findings,
details the findings and the responses provided by the county.
# Assessment County Response Severity
1 Non-compliance with “The Tally and VBL systems use open SSL as Low
voting system packaged and distributed by CentOS. The
requirements. The CVSS Cryptohelper library (written by the same team as
section 2.4.4.1 requires a Tally) abstracts the use of OpenSSL to make it
FIPS 140-2 validated safer to work with and ensure it is always put in
module. The doc.go file FIPS mode. The version of OpenSSL being used
and other documentation is “openssl-1.0.2k-16.el7_6.1.x86_64.rpm” as
states that CentOS found in the installer repo at
7.6.1810 is the Operating “rpms/yums/x86_64/7/updates/packages/openssl-
System in use. This is not 1.0.2k-16.el7_6.1.x86_64.rpm”
one of the Operating Tally and VBL use the Red Hat FIPS verified
Environments listed in OpenSSL package (openssl-1.0.2k-
CMVP certificate 1747 for 16.el7_6.1.x86_64.rpm as distributed by CentOS.
the OpenSSL module. CVSS only requires that the module is verified and
not that the cryptographic module is running on a
FIPS verified hardware configuration.”
2 Non-compliance with In reference to section 2.4.4.2 of the CVSS: Low
voting system “This is only a CVSS requirement when tabulating
requirements. DRE generated ballot images. Note that the
The crypto code requirement for the DRE recording ballots in a
documented in VSAP- randomized order is outlined in section 7.7.3 and
TDP-005_ System_ note that all of 7.7 is specific to DREs.
Security_ Specification
This section contains requirements for DREs with
section 9.3 is in historical
a Voter Verifiable Paper Audit Trail (VVPAT)
status for using AES and
component...
Triple-DES key wrapping,
Due to VSAP being a paper based system Tally is
the OpenSSL module is
not subject to this requirement.”
not documented. Not all of
the cryptographic In reference to section 7.6.1 of the CVSS:
requirements defined in “CVSS requires detection of transmission errors
the CVSS document and, when encryption is used, it must be NIST
4 | Pa ge
# Assessment County Response Severity
appear to be met. approved and at least 112 bits (“This should
include standard transmission error detection and
correction methods such as checksums or
message digest hashes”). All messages passed
over the network are transmitted over TCP/IP
which provides built in integrity checks.
Additionally, much of the data transferred is over
TLS with its own checksums. All images are
further signed on disk when ingested into Tally.
Nothing in this section requires encryption or MAC
usage in any particular part of the system, just that
the cryptography must be strong when used.”
In reference to section 9.6.7 of the CVSS:
“We are working with Smartmatic to provide an
updated TDP that aims to clarify and document
these questions better. Please let us know if that
does not adequately address these questions.”
3 Non-compliance with “These findings relate to the CMVP listings at Low
voting system NIST for this combination of hardware and
requirements. software. A discussion with the State is
The CVSS section 2.4.4.1 requested.”
requires FIPS 140-2
validated module. The use
of
BcryptPasswordEncoder
and
java.security.X509Certifica
te functions do not appear
to be FIPS 140-2 certified.
The crypto code is not
running in a a FIPS 140-2
approved environment.
4 Non-compliance with “These findings relate to the CMVP listings at Low
voting system NIST for this combination of hardware and
requirements. software. A discussion with the State is
The CVSS section 2.4.4.1 requested.”
requires FIPS 140-2
validated module. The use
of Bcrypt functions do not
appear to be FIPS 140-2
certified.
The crypto code is not
running in a a FIPS 140-2
approved environment.
5 Use of third-party code is All third party code is reviewed before Low
not in and of itself a implementation into the system. Will continue to (reduced
finding, but great care monitor potential threats/risks with third party from
must be taken to ensure software. Can provide review results of third party Medium
malicious functionality is code. due to
not introduced into code response)
5 | Pa ge
# Assessment County Response Severity
not under local control. All
changes should be
reviewed, no code should
be included in the system
automatically. The volume
of third-party code and the
variety of sources from
which it is obtained is the
finding because of the
increased possibility for
attack.
Risk may be considered
acceptable provided all
new code is reviewed and
all imported code is
verified at the time of
import. Any automatic
import of code from a third-
party repository (e.g.,
GitHub) without
confirmation that the
content is as expected
would allow for malicious
injection of functionality.
6 The initial state of the The word 'needed' in this context should be taken Low
BMG could be as 'used'.
unrecoverable or badly
Moreover, this script is used only once during
formed data could be
deployment, and the results obtained during the
imported because no
tests performed are successful.
errors are generated.
MySQL will instead of
failing on a bad insert,
simply convert the data
into a format that fits. In
other words: INSERT
IGNORE can lead to
incorrect data imported
into the database. Bugs
generated from it could be
potentially missed, and
therefore abused by a
malicious attacker.
See data should be
properly formatted to avoid
insertion failures, therefore
the use of INSERT
IGNORE is inappropriate.
7 MySQL allows for The results obtained with the current BMG version Low
adjusting sql_mode, such code against these settings are successful.
that group by restrictions Removing this setting may cause issues.
aren’t maintained, which
could lead to “random”
6 | Pa ge
# Assessment County Response Severity
results being obtained
from incorrect queries.
This vulnerability applies to
versions of MySQL prior to
5.7.5.
sql_mode should not be
altered, so that non-
deterministic queries, and
therefore unpredictable
values, are not returned to
BMG.
8 The higher potential “The number of errors that are being reported are Low
partially due to the repos being copied over
warnings are included in (reduced
several times. Based on the feedback there
an accompanying text file from
appears to be:
to this finding (i.e. same Medium
name but with a .txt ● 3 copies of the Tally source code (2 old and 1 due to
extension). These should current) response)
be reviewed by the
● 4 copies of the Auth source code (2 old and 2
development team to
current)
determine whether they
● 5 copies of the Logviewer source code (3 old
could represent any issue.
and 2 current)
● 3 copies of the Ballot Layout source code (2
old and 1 current)
This increases the apparent number of errors,
since the majority of the issues identified are
duplicated across each copy of the repo.
With regards to the issues called out, all paths
reviewed were inside /vendor. In Go, the vendor
path is used for external dependencies (e.g. third
party libraries) that were not authored by the
Tally/VBL/VSAP teams. All items listed below are
stock third party and occur in at least one of the
following repositories:
Tally
● OLD/TDA3.local/OLD/tally-core/tally-
core/vendor (appears to not be latest code)
● OLD/TDA3.local/tally-core/tally-core/vendor/
(appears to not be latest code)
● TallySource/tally-core/vendor/
Auth
● OLD/TDA3.local/auth-service/auth-
service/vendor (appears to not be latest code)
● OLD/TDA3.local/OLD/auth-service/auth-
service/vendor (appears to not be latest code)
● TallySource/auth-service/vendor/
● VBL_source_and_Keys/auth-service/vendor/
Log viewer
● OLD/TDA1.local/logviewer-service/logviewer-
service/vendor (appears to not be latest code)
7 | Pa ge
# Assessment County Response Severity
● OLD/TDA3.local/logviewer-service/logviewer-
service/vendor (appears to not be latest code)
● OLD/TDA3.local/OLD/logviewer-
service/logviewer-service/vendor (appears to
not be latest code)
● TallySource/logviewer-service/vendor/
● VBL_source_and_Keys/logviewer-
service/vendor/
Ballot Layout
● OLD/TDA1.local/ballot-layout/ballot-
layout/vendor/
● OLD/TDA1.local/ballot-layout/vendor/
● VBL_source_and_Keys/ballot-layout/vendor/
These entries are:
Warning: “exported method (or func) * returns
unexported type *, which can be annoying to
use”:
These items are test code:
Shopify/sarama/mockresponses.go:29:59:
Shopify/sarama/mockresponses.go:61:60:
Shopify/sarama/mockresponses.go:105:64:
Shopify/sarama/mockresponses.go:164:62:
Shopify/sarama/mockresponses.go:240:61:
Shopify/sarama/mockresponses.go:324:71:
Shopify/sarama/mockresponses.go:373:70:
Shopify/sarama/mockresponses.go:420:67:
Shopify/sarama/mockresponses.go:477:62:
Shopify/sarama/mockresponses.go:530:66:
Shopify/sarama/mockresponses.go:550:67:
Shopify/sarama/mockresponses.go:569:67:
Shopify/sarama/mockresponses.go:588:71:
Shopify/sarama/mockresponses.go:607:68:
Shopify/sarama/mockresponses.go:630:70:
Shopify/sarama/mockresponses.go:656:67:
Shopify/sarama/mockresponses.go:677:65:
Shopify/sarama/mockresponses.go:695:63:
Shopify/sarama/mockresponses.go:717:65:
stretchr/testify/mock/mock.go:620:32
testify/mock/mock.go:532:32
Production code written to allow for testing:
gocql/gocql/host_source.go:286:30:
gocql/gocql/host_source.go:299:28
hashicorp/go-sockaddr/ifaddrs.go:46:49
hashicorp/go-
sockaddr/route_info_bsd.go:17:22
hashicorp/go-sockaddr/sockaddrs.go:32:45
modern-go/reflect2/reflect2.go:136:27
k8s.io/apimachinery/pkg/util/strategicpatch/typ
es.go:48:50
k8s.io/apimachinery/pkg/util/strategicpatch/typ
es.go:111:51
8 | Pa ge
# Assessment County Response Severity
Although the linter is correct that this can be
annoying, this is done intentionally in test code
where a mock object is returned that implements
the same interface as the real object to allow for
better control and injection of test harnesses into
unit test code.
In production code this pattern allows unit tests to
simulate the state the code under test is running in
to better check code behavior.
Warning: “a blank import should only be in a
main or test package, or have a comment
justifying it”:
This error only occurs in support packages
officially published by the Go team (although it
occurs in several copies of the tally-core repo that
were scanned:
golang.org/x/crypto/openpgp/read.go:10:2
golang.org/x/crypto/openpgp/packet/public_ke
y.go:15:2
golang.org/x/crypto/ssh/common.go:15:2
The same warning: “a blank import should be
only in a main or test package, or have a
comment justifying it” does occur once in a
library that the ballot layout team has modified.
This code
(“bitbucket.org/vsap/pdf/image_obj.go:7:2”) occurs
three times in the scan results as the results seem
to include three copies of the VBL repo. Although
this is a library that we had to modify, this file
remains unchanged. When updating the library, it
was deemed safer to leave imports that we were
not impacting alone rather than trying to change
things that could have been done stylistically
better.”
9 The higher potential “In this item, like 18, it appears that several Low
warnings are included in repositories are mixed together. We are ignoring (reduced
an accompanying text file the “OLD/BMD_Code/”, as that is not our area to from
to this finding (i.e. same respond. We are also ignoring: Medium
name but with a .txt ● OLD/TDA1.local/ballot-layout/* due to
extension). These should response)
● OLD/TDA1.local/logviewer-service/*
be reviewed by the
● OLD/TDA1.local/vbl_deployment/*
development team to
● OLD/TDA3.local/OLD/auth-service/*
determine whether they
could represent any issue. ● OLD/TDA3.local/OLD/logviewer-service/*
● OLD/TDA3.local/OLD/tally-core/*
● OLD/TDA3.local/auth-service/*
● OLD/TDA3.local/logviewer-service/*
● OLD/TDA3.local/tally-core/*
These paths/repos seem to have been
superseded by:
● TallySource/auth-service/*
9 | Pa ge
# Assessment County Response Severity
● TallySource/logviewer-service/logviewer/*
● TallySource/tally-core/*
● VBL_source_and_Keys/auth-service/*
● VBL_source_and_Keys/ballot-layout/*
● VBL_source_and_Keys/logviewer-
service/*
Even here there is a significant amount of
duplication, but it brings the total number of
findings down to 91. Further review shows that
these are actually only 13 distinct issues. Twelve
are in Jquery in the file “jquery-3.2.1.min.js”
● 2:lint warning: useless comparison;
comparing identical expressions
● 2:lint warning: the else statement could be
matched with one of multiple if statements
(use curly braces to indicate intent)
● 2:lint warning: the else statement could be
matched with one of multiple if statements
(use curly braces to indicate intent)
● 3:lint warning: the else statement could be
matched with one of multiple if statements
(use curly braces to indicate intent)
● 3:lint warning: the else statement could be
matched with one of multiple if statements
(use curly braces to indicate intent)
● 3:lint warning: the else statement could be
matched with one of multiple if statements
(use curly braces to indicate intent)
● 3:lint warning: the else statement could be
matched with one of multiple if statements
(use curly braces to indicate intent)
● 3:lint warning: useless comparison;
comparing identical expressions
● 4:lint warning: the else statement could be
matched with one of multiple if statements
(use curly braces to indicate intent)
● 4:lint warning: the else statement could be
matched with one of multiple if statements
(use curly braces to indicate intent)
● 4:lint warning: the else statement could be
matched with one of multiple if statements
(use curly braces to indicate intent)
● 4:lint warning: unknown order of
operations for successive plus (e.g.
x+++y) or minus (e.g. x---y) signs
Jquery is a major project. While we have not
analyzed these findings code use cases, there
seem to be no CVEs related to them. Additionally,
10 | Pa ge
# Assessment County Response Severity
this is checking minified code - meaning that it has
been post processed to make it as small as
possible. It appears that most of these warnings
are stylistic to avoid confusion, as such, while
valid in code that would be read by humans, are
likely not relevant to minified source code as the
computer will not treat them as ambiguous or
unclear.
There was also one identified issue in bootstrap-
table.min.js (although it was identified multiple
times) that appears to be the same case as the
jQuery issues.
bootstrap-table.min.js:7:lint warning: the else
statement could be matched with one of
multiple if statements (use curly braces to
indicate intent)
Like the jQuery issues above, this is likely due to
scanning minified code.”
10 The system is air- CVSS speaks to the possibility that new, Low
gapped—that is, not unforeseen vulnerabilities in voting systems may
connected to the internet emerge during the system lifecycle. In several
or connected to any other places (9.6.d and 9.6.3.g as two examples) CVSS
system that is connected requires planning to respond to new threats. The
to the internet. county will fulfill the letter and spirit of these
Air gap systems include clauses by ensuring that their System Integrator
remains responsible for system maintenance.
• Ballot Marking Device
Manager (BMG)
• Ballot Marking Device
(BMD)
• VSAP Ballot Layout
(VBL)
• Tally
The following security
products are used to
facilitate the air-gapped
environment:
• Carbon Black
Protection: Provides
application control to
lock down critical
systems in order to
prevent unwanted
software changes and
malicious attacks.
• Cylance PROTECT:
Threat prevention
solution (anti-virus)
which utilizes
machine-learning,
allowing the software
to function in isolation
from the internet or
11 | Pa ge
# Assessment County Response Severity
cloud connection.
• HP Aruba ClearPass:
Tracks machine
(MAC) addresses of
all network cards on
the network and can
remove unauthorized
addresses.
• Net Fort
LANGuardian: Tracks
movement of all
software, users, and
actions on the
network.
• Snare System
Information and Event
Management (SIEM):
Records all computer
system and network
activities, which are
available for review in
the event of an attack
or issue.
• Thycotic Secret
Server: Manages all
administrative
privileged network
accounts and limits
users to standard
access, limiting
opportunities for
software changes.
Note: Unused hardware
ports (i.e. USB ports) are
protected by port locks
and/or tamper evident
seals with signaling
residue to reveal
modification and/or
removal. The serialized
tamper evident seals are
manually logged with an
operator signature, seal
number, location, date and
time. This is to prevent
removal of authorized
connections when the port
is in use and to prevent the
insertion of unauthorized
connections when the port
is not in use. This prevents
any infected USB flash
drive from crossing any air
gap.
12 | Pa ge
# Assessment County Response Severity
11 Programmatic setting of “In practice, this isn’t a significant risk as, although Low
permissions to highly open the operating system is multi-user, the machine
configuration, and source cluster is single tenant running only the Tally (or
files are not deleted after VBL) system and only administrators on the Tally
being copied to system should be authorized on the environment.
destinations on cluster
Mitigation
machines.
● The documentation will be updated to
Leaving a copy of the CA
instruct the installer user to delete all data
key in the temp folder of a
from temp once the install is finished.
multi-user operating
● A procedure has been added to restrict
system is an incorrect
file system permissions on these files
configuration of a CA or
PKI infrastructure. Industry
post-install.”
standard processes dictate
that the root CA is created
and stored on an air-
gapped system, and
intermediate CA’s used to
further certificate
generation on destination
machines. If this is the root
CA in particular, then this
is an inappropriate use
case. If nothing else, the
environment should be
cleaned to prevent the CA
from falling into the wrong
hands.
12 This configuration could “The user must be able to log in from a docker Low
allow someone to container on one of several (currently about 9)
systematically try different Kubernetes cluster machines. Moving forward, we
authentication can look at ways to limit this host list, but at
combinations until a valid present this would appear to require making some
one is found, leading to significant assumptions about the details of the
invalid voting data. production environment (such as IP addresses)
Unless it’s crucial that all that pose a challenge.
users can login from all Moving forward we will look for better options to
hosts, then the default lock this down. We may be able to implement a
template is too liberal in its manual procedure for more specific grants if this is
use and definitions of who deemed a high priority issue.”
can login from where.
While this does not “We reviewed open CVEs for Python 2.7 (the
13 Low
represent an actual version used in the BMD) and found none that are
vulnerability, it has the scored in the 8, 9, and 10 range. We also note
potential to cause one in that the VSAP BMD remains under contracted
the future. Python 2 will Warranty for two years, and optional Maintenance
not be supported or beyond that timeframe. Python 2 vulnerabilities
updated starting January that might be found by researchers in the future
1. If any security would be dangerous if the product is off support,
vulnerabilities are found meaning that no one is available to assess the
after that vulnerability and remediate it if deemed
date, not only could they necessary. CVSS speaks to the possibility that
13 | Pa ge
# Assessment County Response Severity
put the voting system at new, unforeseen vulnerabilities in COTS products
risk, they would most likely may emerge during the system lifecycle. In
not be fixed. Developers several places (9.6.d and 9.6.3.g as two
should already be in the examples) CVSS requires planning to respond to
process of migrating code new threats.
to Python 3. Please see At this late time in the Certification campaign, we
https://www.python.org/do
do not see the ability to move to Python 3 in the
c/sunset-python-2/ .
BMD software; however, we plan to fulfill the letter
and spirit of CVSS and will monitor for new
vulnerabilities in Python 2 during the Warranty
phase of VSAP lifecycle. Where deemed
necessary by Los Angeles County, the system
owner and operator, or the Secretary of State new
Python 2 vulnerabilities will be remediated under
the Warranty contract clauses.”
14 The potential problem with “We agree that this is not an emergent finding, but Low
this configuration is simply a future system version could see this
that the container is remediated.”
running effectively as root.
An attacker could use this
to reboot the system,
delete files, modify
passwords, etc.
The developer of the
voting systems is off the
hook for this setting; There
is a bug report filed at the
following URL, which is
attempting to deal with this
issue related to Calico:
https://github.com/projectc
alico/calico/issues/2000
That said, it should be
mentioned as a future
improvement for the voting
system, as this level of
access to a machine via
container is unnecessary
and dangerous.
A Source Code Review report, including the findings and vendor responses
and/or mitigations can be found on our website.
14 | Pa ge
4. Security and Telecommunications Testing (Red Team) Summary
Security and Telecommunications (Red Team Penetration) testing of the VSAP
2.0 system was conducted in November of 2019, by FCMG. The Security and
Telecommunications Testing resulted in four (4) findings requiring a response
and/or mitigation. Each is described in Table 4A: Security Findings:
Table 4A: Security Findings
Test Results County Mitigation/Response
Locks and Tamper Evident Seals – The The county will address the finding by
seals were removed without damage or updating processes and procedures.
evidence of tampering.
Unrestricted Access to Workstation The county will address the finding by
Cases – The stations were not secured updating processes and procedures.
with tamper-evident labels or locks.
Ability to Boot from USB – Capability was The county will apply port protectors.
not disabled on any of the systems
tested.
Lack of Fill Disk Encryption – No The county has additional security
component of the system has full disk safeguards in place to mitigate access to
encryption. the system at large.
A detailed report of the Security and Telecommunications Testing (Red Team
Penetration) can be found on or website.
5. Volume Testing Summary
The Volume Test simulates conditions in which the ballot marking devices would
be used on Election Day. Approximately fifty (50) BMD units were tested during
the volume test, with fourteen (14) temporary workers marking and casting one
hundred (100) ballots per device. Two (2) of the units were used to test the
capacity of the ballot box attached to the BMD units, by feeding an additional on
hundred fifty (150) ballots beyond the initial one hundred (100) ballots. Twenty-
nine (29) of the BMD units experienced ballot jams, approximately fifty-two (52),
which fell into one of four (4) classifications. Two (2) of the BMD devices
encountered and error best described as the screen turning all white and
subsequently, unable to recover until the units were restarted.
A detailed Volume Test report, including error logs can be found on our website.
15 | Pa ge
6. Accessibility, Usability and Privacy Testing Summary
The Accessibility, Usability and Privacy testing took place from September to
November of 2019. Functional Accessibility took place from October 3 to October
4, 2019, with approximately eighteen (18) volunteer testers participating. The
volunteers were from the Los Angeles County accessibility community. The BMD
devices used for this test were programmed with the November 8, 2016 General
Election. Each volunteer tester was asked to complete a voting session, using
the BMD. Upon completion of the session, all volunteer testers were asked to
participate in a post-test survey regarding their experience.
Voters consistently reported that they liked the new BMD. Most test voters felt
that they could independently vote, without assistance. However, a few voters did
note that there was some confusion between the audio ballot, and the text on the
screen. The two were not aligned in some instances. Further, some voters
reported long periods of silence, with the audio instructions, which led them to
believe the voting session was over. Finally, several test voters experienced
multiple paper jams and misfeeds.
A detailed Accessibility, Usability and Privacy Test Report, including the survey
results, can be found on our website.
7. Hardware Testing Summary
NTS conducted Environmental and Dynamics Testing of the ballot marking
devices. The first round of testing, a defective universal power supply (UPS)
device caused one of the test results to be Non-Compliant. During a second
round of testing, with a replacement UPS unit, the same test was completed
successfully. All other hardware tests of the ballot marking devices passed each
phase of the hardware testing.
A detailed Hardware Testing report can be found on our website.
16 | Pa ge
IV. COMPLIANCE WITH STATE AND FEDERAL LAWS
AND REGULATIONS
1. Elections Code Requirements
Six (6) sections of the California Elections Code, Sections 19101, 19203, 19204,
19204.5, 19205, and 19270, describe in detail the requirements any voting
system must meet in order to be approved for use in California elections. These
sections are described in detail and analyzed for compliance below.
a) §19101 (b) (1): The machine or device and its software shall be suitable
for the purpose for which it is intended.
− The system meets this requirement.
b) §19101 (b) (2): The system shall preserve the secrecy of the ballot.
− The system meets this requirement.
c) §19101 (b) (3): The system shall be safe from fraud or manipulation.
− The system meets this requirement.
d) §19101 (b) (4): The system shall be accessible to voters with disabilities
pursuant to section 19242 and applicable federal laws.
− The system meets this requirement.
e) §19101 (b) (5): The system shall be accessible to voters who require
assistance in a language other than English if the language is one in
which a ballot or ballot materials are required to be made available to
voters pursuant to Section 14201 and applicable federal laws.
− VSAP 2.0 supports all 14201 languages. The system is capable of
adding additional languages, to produce ballots or ballot materials,
and accessible audio files pursuant to Section 14201, utilizing system
functionality and outside translation.
f) §19203: The system shall use ballot paper that is of sufficient quality that
it maintains its integrity and readability throughout the retention period
specified in sections 1700 through 17306.
− The system meets this requirement.
g) §19204: The system shall not include procedures that allow a voter to
produce, and leave the polling place with, a copy or facsimile of the ballot
cast by that voter at that polling place.
− The system meets this requirement.
h) §19204.5: The Secretary of State shall not certify or conditionally approve
a voting system that cannot facilitate the conduct of a ballot level
comparison risk-limiting audit.
− The system meets this requirement.
17 | Pa ge
i) §19205 (a): No part of the voting system shall be connected to the internet
at any time.
− The system meets this requirement.
j) §19205 (b): No part of the voting system shall electronically receive or
transmit election data through an exterior communication network,
including the public telephone system, if the communication originates
from or terminates at a polling place, satellite location, or counting center.
− The system meets this requirement.
k) §19205 (c): No part of the voting system shall receive or transmit wireless
communications or wireless data transfers.
− The system meets this requirement.
l) §19270 (a): The Secretary of State shall not certify or conditionally
approve a direct recording electronic voting system unless the system
includes an accessible voter verified paper audit trail.
− The system meets this requirement.
2. Elections Code Review
1) §305.5(b): A paper cast vote record is a ballot only if the paper cast vote
record is generated on a voting device or machine that complies with
ballot layout requirements and is tabulated by a separate device from the
device that created the paper cast vote record.
− The system meets this requirement.
2) §13109.7(a): Notwithstanding Section 13109, for a period of three years
commencing with the date that the county elections official for the County
of Los Angeles declares that the voting system modernization project
underway in 2018 is complete and ready for operation, the county
elections official for the County of Los Angeles shall conduct elections
using the alternate ballot order described in Section 13109.8.
(b) The county elections official shall prepare a report regarding the effect
of using the alternate ballot order for elections conducted during the time
period described in subdivision (a). The report shall include, but not be
limited to, the following information:
(1) Statistics and information on the cost of transitioning to the use of the
alternate ballot order.
(2) The overall turnout of voters in the jurisdiction for each election
conducted using the alternate ballot order.
(3) For different contests listed on the ballot, including, but not limited to,
local offices and local ballot measures, state offices and state ballot
measures, and federal offices, the following information:
(A) The turnout of voters for each contest.
(B) The number of overvotes and undervotes for each contest.
(C) The dropoff rates for each contest.
18 | Pa ge
(4) Legislative recommendations.
(c) The report described in subdivision (b) shall, whenever possible,
compare an election conducted pursuant to this section and using the
alternate ballot order described in Section 13109.8 to similar elections
conducted using the ballot order described in Section 13109 in the same
jurisdiction or in a comparable jurisdiction.
(d) Three years after the declaration date described in subdivision (a), the
county elections official shall submit the report described in subdivision (b)
to the Secretary of State and to the Legislature in accordance with Section
9795 of the Government Code. The county elections official shall also post
a publicly accessible copy of the report on the Internet Web site of the
county elections official.
(e) Notwithstanding any other law, the county elections official may adjust
ballot instructions to the extent necessary to comply with this section.
(f) Immediately after making the declaration described in subdivision (a),
the county elections official shall post the declaration on his or her Internet
Web site and send the declaration to the Secretary of State, the Secretary
of the Senate, the Chief Clerk of the Assembly, and the Legislative
Counsel.
(g) This section shall remain in effect only until the first January 1 that
occurs at least four years after the declaration date described in
subdivision (a), and as of that date is repealed.
- The system meets this requirement.
3) §15360: During the official canvass of every election in which a voting
system is used, the official conducting the election shall conduct a public
manual tally of the ballots tabulated by those devices cast in one percent
of the precincts chosen at random by the elections official. If one percent
of the precincts should be less than one whole precinct, the tally shall be
conducted in one precinct chosen at random by the elections official.
In addition to the one percent count, the elections official shall, for each
race not included in the initial group of precincts, count one additional
precinct. The manual tally shall apply only to the race not previously
counted.
− The system fully supports this requirement.
4) §19300: A voting machine shall, except at a direct primary election or any
election at which a candidate for voter-nominated office is to appear on
the ballot, permit the voter to vote for all the candidates of one party or in
part for the candidates of one party and in part for the candidates of one or
more other parties.
− The system meets this requirement.
5) §19301: A voting machine shall provide in the general election for
grouping under the name of the office to be voted on, all the candidates
19 | Pa ge
for the office with the designation of the parties, if any, by which they were
respectively nominated.
The designation may be by usual or reasonable abbreviation of party
names.
− The system meets this requirement.
6) §19302: The labels on voting machines and the way in which candidates’
names are grouped shall conform as nearly as possible to the form of
ballot provided for in elections where voting machines are not used.
− The system meets this requirement.
7) §19303: If the voting machine is so constructed that a voter can cast a
vote in part for presidential electors of one party and in part for those of
one or more other parties or those not nominated by any party, it may also
be provided with: (a) one device for each party for voting for all the
presidential electors of that party by one operation, (b) a ballot label
therefore containing only the words “presidential electors” preceded by the
name of the party and followed by the names of its candidates for the
offices of President and Vice President, and (c) a registering device
therefore which shall register the vote cast for the electors when thus
voted collectively.
If a voting machine is so constructed that a voter can cast a vote in part for
delegates to a national party convention of one party and in part for those
of one or more other parties or those not nominated by any party, it may
be provided with one device for each party for voting by one operation for
each group of candidates to national conventions that may be voted for as
a group according to the law governing presidential primaries.
No straight party voting device shall be used except for delegates to a
national convention or for presidential electors.
− The system meets this requirement.
8) §19304: A write-in ballot shall be cast in its appropriate place on the
machine, or it shall be void and not counted.
− The system supports this requirement.
9) §19320: Before preparing a voting machine for any general election, the
elections official shall mail written notice to the chairperson of the county
central committee of at least two of the principal political parties, stating
the time and place where machines will be prepared. At the specified time,
one representative of each of the political parties shall be afforded an
opportunity to see that the machines are in proper condition for use in the
election.
The party representatives shall be sworn to perform faithfully their duties
but shall not interfere with the officials or assume any of their duties. When
a machine has been so examined by the representatives, it shall be
sealed with a numbered metal seal. The representatives shall certify to the
20 | Pa ge
number of the machines, whether all of the counters are set at zero (000),
and the number registered on the protective counter and on the seal.
− The system supports this requirement.
10) §19321: The elections official shall affix ballot labels to the machines to
correspond with the sample ballot for the election. He or she shall employ
competent persons to assist him or her in affixing the labels and in putting
the machines in order. Each machine shall be tested to ascertain whether
it is operating properly.
− The system supports this requirement.
11) §19322: When a voting machine has been properly prepared for an
election, it shall be locked against voting and sealed. After that initial
preparation, a member of the precinct board or some duly authorized
person, other than the one preparing the machines, shall inspect each
machine and submit a written report. The report shall note the following:
(1) Whether all of the registering counters are set at zero (000), (2)
whether the machine is arranged in all respects in good order for the
election, (3) whether the machine is locked, (4) the number on the
protective counter, (5) the number on the seal. The keys shall be
delivered to the election board together with a copy of the written report,
made on the proper blanks, stating that the machine is in every way
properly prepared for the election.
− The system supports this requirement.
12) §19340: Any member of a precinct board who has not previously
attended a training class in the use of the voting machines and the duties
of a board member shall be required to do so, unless appointed to fill an
emergency vacancy.
− The system does not adversely impact this requirement.
13) §19341: The precinct board shall consist of one inspector and two judges
who shall be appointed and compensated pursuant to the general election
laws. One additional inspector or judge shall be appointed for each
additional voting machine used in the polling place.
− The system does not adversely impact this requirement.
14) §19360: Before unsealing the envelope containing the keys and opening
the doors concealing the counters the precinct board shall determine that
the number on the seal on the machine and the number registered on the
protective counter correspond to the numbers on the envelope.
Each member of the precinct board shall then carefully examine the
counters to see that each registers zero (000). If the machine is provided
with embossing, printing, or photography devices that record the readings
of the counters the board shall, instead of opening the counter
compartment, cause a “before election proof sheet” to be produced and
determined by it that all counters register zero (000).
21 | Pa ge
If any discrepancy is found in the numbers registered on the counters or
the “before election proof sheet” the precinct board shall make, sign, and
post a written statement attesting to this fact. In filling out the statement of
return of votes cast, the precinct board shall subtract any number shown
on the counter from the number shown on the counter at the close of the
polls.
− The system supports this requirement.
15) §19361: The keys to the voting machines shall be delivered to the precinct
board no later than twelve hours before the opening of the polls. They
shall be in an envelope upon which is written the designation and location
of the election precinct, the number of the voting machine, the number on
the seal, and the number registered on the protective counter. The
precinct board member receiving the key shall sign a receipt.
The envelope shall not be opened until at least two members of the
precinct board are present to determine that the envelope has not been
opened.
At the close of the polls the keys shall be placed in the envelope supplied
by the official and the number of the machine, the number written on the
envelope.
− The system supports this requirement.
16) §19362: The exterior of the voting machine and every part of the polling
place shall be in plain view of the election precinct board and the poll
watchers.
Each machine shall be at least four feet from the poll clerk’s table.
− The system supports this requirement.
3. Review of Federal Statutes or Regulations.
a) The Voting Rights Act (VRA) of 1965, as amended (42 U.S.C. 1973),
requires all elections in certain covered jurisdictions to provide registration
and voting materials and oral assistance in the language of a qualified
language minority group in addition to English. Currently in California,
there are ten VRA languages (English, Spanish, Chinese, Hindi,
Japanese, Khmer, Korean, Tagalog, Thai, and Vietnamese) as prescribed
under the law.
− The system meets this requirement. The system’s paper ballots can
be easily printed in these languages, as well as any others. Further,
BMD can be programmed to display the ballot in any of these
languages on the touch screen interface and to provide audio
instruction in any of these languages.
b) The National Voter Registration Act of 1993 (42 U.S.C. 1973gg and 11
CFR 8) allows for the casting of provisional ballots through Fail-Safe
Voting procedures.
22 | Pa ge
− The system meets this requirement. Provisional ballots can easily be
cast with this system. The BMD only marks ballots (or verifies the
marking of a ballot), it has no impact on provisional voting.
c) The Voting Accessibility for the Elderly and Handicapped Act of 1984 (42
U.S.C. 1973ee through 1973ee-6) requires each political subdivision
conducting elections within each state to assure that all polling places for
federal elections are accessible to elderly and handicapped voters, except
in the case of an emergency as determined by the state’s chief election
officer or unless the state’s chief election officer: (1) determines, by
surveying all potential polling places, that no such place in the area is
accessible or can be made temporarily accessible, and (2) assures that
any handicapped voter assigned to an inaccessible polling place will, upon
advance request under established state procedures, either be assigned
to an accessible polling place or be provided an alternative means of
casting a ballot on election day.
− This system supports this requirement.
d) The Retention of Voting Documentation (42 U.S.C. 1974 through 1974e)
statute applies in all jurisdictions and to all elections in which a federal
candidate is on a ballot. It requires elections officials to preserve for twenty
two months all records and papers which came into their possession
relating to an application, registration, payment of a poll tax, or other act
requisite to voting. Note: The US Department of Justice considers this law
to cover all voter registration records, all poll lists and similar documents
reflecting the identity of voters casting ballots at the polls, all applications
for absentee ballots, all envelopes in which absentee ballots are returned
for tabulation, all documents containing oaths of voters, all documents
relating to challenges to voters or absentee ballots, all tally sheets and
canvass reports, all records reflecting the appointment of persons entitled
to act as poll officials or poll watchers, and all computer programs used to
tabulate votes electronically. In addition, it is the Department of Justice’s
view that the phrase “other act requisite to voting” requires the retention of
the ballots themselves, at least in those jurisdictions where a voter’s
electoral preference is manifested by marking a piece of paper or by
punching holes in a computer card.
− The system meets this requirement. All votes in this system are
recorded on paper ballots that can be easily retained.
4. Help America Vote Act (HAVA) Requirements
The Help America Vote Act (HAVA) §301(a) mandates several requirements for
voting systems, including:
23 | Pa ge
1) The ability to verify the vote choices on the ballot before that ballot is cast and
counted,
2) Notification to the voter of over-votes on a ballot,
3) Auditability with a permanent paper record of votes cast,
4) Accessibility for individuals with disabilities, including nonvisual accessibility
for the blind and visually impaired, in a manner that provides the same
opportunity for access and participation (including privacy and independence)
− This system supports these requirements in the following manner:
a) The paper ballots themselves lend themselves to visual inspection and
verification.
b) The BMD provides its users with a ballot review screen prior to printing
the ballot. Further, any voted ballot can be inserted into the unit for
review and verification.
c) The BMD prevents over-voting a contest.
d) Because all ballots in this system are paper based, there is a fully
auditable and permanent record of the election.
e) Deployment of the BMD in a precinct provides accessibility for persons
with disabilities at the polling place.
V. CONCLUSION
The VSAP Tally 2.0 voting system, in the configuration tested and documented
by the County of Los Angeles’ Use Procedures, meets all applicable California
and federal laws. The County of Los Angeles’ VSAP Tally 2.0 voting system is
compliant with all applicable California and federal laws.
24 | Pa ge