[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
How the UM Fight Song killed the DC electronic ballot return system
- To: Mary Eberle <m.eberle@xxxxxxxxxxxx>, Margit Johansson <margitjo@xxxxxxxxx>, Angie Layton <angielayton@xxxxxxxx>, Marilyn R Marks <marilyn@xxxxxxxxxxxxxxx>, joseph richey <richey80304@xxxxxxxxx>, Harvie Branscomb <harvie@xxxxxxxxxxxxx>, Kathryn Wallace <kcanges@xxxxxxxxx>, Stith Bennett <stith@xxxxxxxxxxx>, Geof Cahoon <gcahoon@xxxxxxxxx>, Ralph Shnelvar <ralphs@xxxxxxxxx>, Joe Pezzillo <jpezzillo@xxxxxxxxx>, Neal McBurnett <neal@xxxxxxxxxxxxxxxxx>, Paul Walmsley <paul@xxxxxxxxxxx>, Colorado Voter Group <ColoradoVoter@xxxxxxxxxxxxxxxx>, Sunny Maynard <dinophile@xxxxxxxxx>, Tom Morris <Tmmco1@xxxxxxx>, Jon Ehrlich <jbehrlich@xxxxxxxxx>, Laurie Bretz <laurieannb@xxxxxxx>, Catherine Lo <ctlo@xxxxxxx>, Dan Leftwich <jdlwcec@xxxxxxxxx>, Dan Martin <dan@xxxxxxxxxxx>, Deb Adams <debsueadams@xxxxxxxxxxx>, Larry Steven Bowlds <Larry.Bowlds@xxxxxxxxxxxx>, Peter or Alison Richards <aprichards@xxxxxxxx>, Barbara Dungey <barbara.b.dungey@xxxxxxxxx>, Catherine Jarrett <citizensforjarrett@xxxxxxx>, Yvonne Iden <Vonderosa@xxxxxxxxx>, Al Kolwicz <alkolwicz@xxxxxxxxx>, "AM760.net" <webmaster@xxxxxxxxx>, "betsy.puls" <betsy.puls@xxxxxxxxx>, carlelawrence <CarlELawrence@xxxxxxxxx>, CFVI Attendees <attendees@xxxxxxx>, Citizens for Verifiable Voting <cvv-discuss@xxxxxxxxxxxxxxxxx>, Colorado Secretary of State <Public.Secretary@xxxxxxxxxxxxxxx>, Congressman Mark Udall <co02@xxxxxxxxxxxxxx>, council@xxxxxxxxxxxxx, crew@xxxxxxxxxxxxxxxxxx, csjacobs <csjacobs@xxxxxxxxxxxx>, Dan Culberson <danculberson@xxxxxxxx>, "Democrats.com" <activist@xxxxxxxxxxxxx>, Hillary Hall <hhall@xxxxxxxxxxxxxxxxx>, info@xxxxxxxxxxxxxxxxxxxx, James <james@xxxxxxxxxxx>, Jared Polis <jared@xxxxxxxxxxxxxx>, Judd Choate <Judd.Choate@xxxxxxxxxxxxxxx>, Ken Gordon <ken@xxxxxxxxxxxxx>, Lou Puls <lou.puls@xxxxxxxxx>, Margaret Samuelsen <MSAMUELSEN@xxxxxxx>, Mariko Kageyama <aspeciosus@xxxxxxxxx>, Max Puls <madmax303@xxxxxxxxxxx>, Michael Bennet <moveon-help@xxxxxxxxxxxxxxx>, Newsroom Denver_Post <newsroom@xxxxxxxxxxxxxx>, newsroom@xxxxxxxxxxxxxxx, openforum@xxxxxxxxxxxxxx, Paul Tiger <paul.tiger@xxxxxxxxxxxxx>, Representative Claire Levy <claire.levy.house@xxxxxxxxxxx>, "Restore the Republic!" <rtr@xxxxxxxxxxxxxxxxxxxxxx>, Senator Rollie Heath <rollie.heath.senate@xxxxxxxxxxx>, Sigrid Sommerfeldt <sommerfeldt@xxxxxxxxxxxxx>, Stuart Puls <stu.puls@xxxxxxxxx>, "Thom Hartmann's Newsletters" <adhd@xxxxxxxxxxxxxxxxxxxx>
- Subject: How the UM Fight Song killed the DC electronic ballot return system
- From: Lou Puls <lou.puls@xxxxxxxxx>
- Date: Sat, 9 Oct 2010 18:39:57 -0600
- Delivered-to: mailing list cvv-discuss@xxxxxxxxxxxxxxxxx
- Delivered-to: moderator for cvv-discuss@xxxxxxxxxxxxxxxxx
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:received:from:date :message-id:subject:to:content-type; bh=IeVMOouXCCLAsKN6BoIj+ZjVgGjv5dqHTTd8FAZZv9I=; b=Xblah8md93OZrme3DxIaXWe19rtFDrrGPvwIYf3A9/NhWyt/4NjBs+8F+bfadn3+5L wHgsXS4tmJ1/eDZQpV4ytz8IOLTVS/Zn7mvmhTPyY8MT/hO7imoHwBv5bYjmXLeWr7eo T1ZbrR64ry3mTQ1Po2yalJmGkqFZk/A2/4lT4=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:from:date:message-id:subject:to:content-type; b=nonyA5Fjf+yasYDm4GiT15miS5DUE3UOQwPM4+kJwCDkoV1cAjY6oQiAt1t4TyToUK UStC9oo/wpdp1fvvxZ2ijnPKjI2gw3WscZVj+RAt2VWAdvgsaXAfx86tlnAr0K0zqAhy PDk2rNEyBGU3ncCOy53rkpvD0abb7B2Wnx1v0=
- List-help: <mailto:cvv-discuss-help@coloradovoter.net>
- List-post: <mailto:cvv-discuss@coloradovoter.net>
- List-subscribe: <mailto:cvv-discuss-subscribe@coloradovoter.net>
- List-unsubscribe: <mailto:cvv-discuss-unsubscribe@coloradovoter.net>
- Mailing-list: contact cvv-discuss-help@xxxxxxxxxxxxxxxxx; run by ezmlm
To all concerned about verifiable, trustworthy elections:
As noticed by Voter Action [www.VoterAction.org], a computer science group at the University of Michigan has succeeded in HACKING (White-Hat-legally) into the District of Columbia testbed website for "Internet Voting" and revealing the brittleness and full vulnerability of the concept of trying to use unprotected, unencrypted transmission of ballots over such an open system.
The DC site was (its electronic ballot return component has been cancelled for the current election) a dedicated, somewhat secured website -- any attempt to use an even more vulnerable email ballot return system (such as used by the State of Colorado) is irresponsible to the extreme -- whatever its well-intentioned purpose to simplify overseas voting.
In the demonstration link in the UM blog posting below, YOU TOO can hack into the site, cast your poisoned ballot and PLAY the audio of the UM Fight Song!
By J. Alex Halderman October 5th, 2010 at 9:07 pm
The District of
Columbia is conducting a pilot project to allow overseas and
military voters to download and return absentee ballots over the Internet.
Before opening the system to real voters, D.C. has been holding a test period in
which they've invited the public to evaluate the system's security and
usability.
This is exactly the kind of open, public testing that many of us in the
e-voting security community — including me — have been encouraging vendors and
municipalities to conduct. So I was glad to participate, even though the test
was launched with only three days' notice. I assembled a team from the
University of Michigan, including my PhD students, Eric Wustrow and Scott Wolchok, and
Dawn Isabel, a member of the University of Michigan technical staff.
Within 36 hours of the system going live, our team had found and exploited a
vulnerability that gave us almost total control of the server software,
including the ability to change votes and reveal voters’ secret ballots. In this
post, I’ll describe what we did, how we did it, and what it means for Internet
voting.
D.C.'s pilot system
The D.C. system is built around an open source server-side
application developed in partnership with the TrustTheVote
project. Under the hood, it looks like a typical web application. It's
written using the popular Ruby on Rails framework and runs on top of the Apache
web server and MySQL database.
Absentee overseas voters receive a physical letter in the mail instructing
them to visit a D.C. web site, http://www.dcboee.us/DVM/, and log in with
a unique 16-character PIN. The system gives voters two options: they can
download a PDF ballot and return it by mail, or they can download a PDF ballot,
fill it out electronically, and then upload the completed ballot as a PDF file
to the server. The server encrypts uploaded ballots and saves them in encrypted
form, and, after the election, officials transfer them to a non-networked PC,
where they decrypt and print them. The printed ballots are counted using the
same procedures used for mail-in paper ballots.
A small vulnerability, big consequences
We found a vulnerability in the way the system processes uploaded ballots. We
confirmed the problem using our own test installation of the web application,
and found that we could gain the same access privileges as the server
application program itself, including read and write access to the encrypted
ballots and database.
The problem, which geeks classify as a
“shell-injection vulnerability,” has to do with the ballot
upload procedure. When a voter follows the instructions and uploads a
completed ballot as a PDF file, the server saves it as a temporary file and
encrypts it using a command-line tool called GnuPG. Internally,
the server executes the command gpg with the name of this temporary
file as a parameter: gpg
[…]
/tmp/stream,28957,0.pdf
.
We realized that although the server replaces the filename with an
automatically generated name (“stream,28957,0” in this example), it keeps whatever
file extension the voter provided. Instead of a file ending in “.pdf,” we could
upload a file with a name that ended in almost any string we wanted, and this
string would become part of the command the server executed. By formatting the
string in a particular way, we could cause the server to execute commands on our
behalf. For example, the filename “ballot.$(sleep 10)pdf” would
cause the server to pause for ten seconds (executing the “sleep 10” command) before responding. In
effect, this vulnerability allowed us to remotely log in to the server as a
privileged user.
Our demonstration attacks
D.C. launched the public testbed server on Tuesday,
September 28. On Wednesday afternoon, we began to exploit the problem we found
to demonstrate a number of attacks:
- We collected crucial secret data stored on the server, including
the database username and password as well as the public key used to encrypt the
ballots.
- We modified all the ballots that had already been cast to
contain write-in votes for candidates we
selected. (Although the system encrypts voted ballots, we simply discarded
the encrypted files and replaced them with different ones that we encrypted
using the same key.) We also rigged the system to replace future votes in the
same way.
- We installed a back door that let us view any ballots that
voters cast after our attack. This modification recorded the votes, in
unencrypted form, together with the names of the voters who cast them, violating
ballot secrecy.
- To show that we had control of the server, we left a “calling
card” on the system's confirmation screen, which voters see after voting. After
15 seconds, the page plays the University of Michigan fight song. Here's a
demonstration.
Stealthiness wasn't our main objective, and our
demonstration had a much greater footprint inside the system than a real attack
would need. Nevertheless, we did not immediately announce what we had done,
because we wanted to give the administrators an opportunity to exercise their
intrusion detection and recovery processes — an essential part of any online
voting system. Our attack remained active for two business days, until Friday
afternoon, when D.C. officials took down the testbed
server after several testers pointed out the fight song.
Based on this experience and other results from the public tests, the D.C.
Board of Elections and Ethics has announced that they will not proceed with a
live deployment of electronic ballot return at this time, though they plan to
continue to develop the system. Voters will still be able to download and print
ballots to return by mail, which seems a lot less risky.
D.C. officials brought the testbed server back up
today (Tuesday) with the electronic ballot return mechanism disabled. The public
test period will continue until Friday, October 8.
What this means for Internet voting
The specific vulnerability that we exploited is simple to fix, but it will be
vastly more difficult to make the system secure. We've found a number of other
problems in the system, and everything we've seen suggests that the design is
brittle: one small mistake can completely compromise its security. I
described above how a small error in file-extension handling left the system
open to exploitation. If this particular problem had not existed, I'm confident
that we would have found another way to attack the system.
None of this will come as a surprise to Internet security experts, who are
familiar with the many kinds of attacks that major web sites suffer from on a
daily basis. It may someday be possible to build a secure method for submitting
ballots over the Internet, but in the meantime, such systems should be presumed
to be vulnerable based on the limitations of today's security
technology.
We plan to write more about the problems we found and their implications for
Internet voting in a forthcoming paper.
—
Professor J. Alex Halderman is a computer scientist at the University of Michigan.
= = = = =
Lou Puls
Museion Research
Westcliffe CO
--
Tea Party Motto --
Government FOR the people who hate government,
Government BY the people who hate to govern,
Government OF the people who hate to vote.
~after Wiley, Non Sequitur