Thursday, October 9, 2014

ProgramacaoBR - Serious flaws discovered in Brazil’s voting machines


ENGLISH
PORTUGUÊS
ProgramacaoBR
ProgramacaoBR
Serious flaws discovered in Brazil’s voting machines
Sérias falhas descobertas nas máquinas de votação do Brasil
[September 2014]
[Setembro de 2014]
Now, for the meat ‘n potatoes of a Brazilian digital stew: A feijoada of security holes.
Agora, para a carne e as batatas do cozido digital do Brasil: Uma feijoada de falhas de segurança.
At just a few days from Brazil’s general elections, major security flaws have been publicized in the much hyped voting machines. Latin America’s largest democracy is set to vote on machines whose source code is crawling with bad practices and security holes. Worse: the voting process is also fraught with flaws in the reproduction of secure media and in the lack of transparency regarding certain components of the voting system(good ‘ol security through obscurity).
A apenas poucos dias das eleições gerais no Brasil, sérias falhas de segurança foram tornadas amplamente conhecidas acerca das muito alardeadas máquinas de votação. A maior democracia da América do Sul provavelmente votará por meio de máquinas cujo código fonte está eivado de más práticas e falhas de segurança. Pior: o processo de votação também está repleto de falhas na reprodução de meios seguros e na falta de transparência no tocante a certos componentes do sistema de votação (a famigerada segurança por meio da obscuridade).
The details I am publishing here were provided by research staff at the University of Brasilia (UnB) – please see the links at the beginning of this post. The professionals behind the research of security in voting processes at UnB have been critics of Brazil’s rush to adopt the modern voting process without due diligence. There are serious and pertinent questions about the overall security and correctness of the voting process.
Os detalhes que estou publicando aqui foram fornecidos por equipe de pesquisa da Universidade de Brasília (UnB) – por favor veja os links no início desta afixação. Os profissionais responsáveis pela pesquisa de segurança da UnB têm sido críticos em relação ao açodamento do Brasil em adotar processos modernos de votação sem a devida diligência. Há perguntas sérias e pertinentes acerca da segurança geral e da correção do processo de votação.
I’d like to focus on the voting machine’s software as the hardware is black box and not auditable by the general public. BTW, Brazilian voting machines are built by Diebold, an old acquaintance of anyone interested in electronic voting in America and abroad.
Gostaria de focar o software da máquina de votação, visto que o hardware é caixa preta e não auditável pelo público em geral. As BTW, máquinas brasileiras de votação, são fabricadas pela Diebold, velha conhecida de qualquer pessoa interessada em votação eletrônica nos Estados Unidos e no exterior.
Here’s a short quote to set your expectations for what comes next. According to professor Diego Aranha, of Unicamp: “Any of my students can write better code than what we found there.“. Then unknown in the political world, professor Diego Aranha was designated by his former professors at the University of Brasilia to go audit the security of the voting machines at TSE.
Eis aqui curta citação para que vocês tenham ideia do que esperar venha acontecer. De acordo com o professor Diego Aranha, da Unicamp: “Qualquer de meus alunos pode escrever código melhor do que o que encontramos aqui.“ À época desconhecido no mundo político, o professor Diego Aranha foi designado por seus ex-professores da Universidade de Brasília para auditar a segurança das máquinas de votação no TSE.
What happened next became the most infamous episode in Brazil’s national electronic voting history. Based on previous research from UnB, Dr. Aranha had been given a good idea of what to look for during his audit of the voting machine source code. Goold old “grep” revealed several code smells which later led to an unbelievable discovery – but let’s not get ahead of ourselves.
O que aconteceu em seguida tornou-se o mais infamante episódio da história da votação eletrônica nacional do Brasil. Com base em pesquisa prévia da UnB, ao Dr. Aranha havia sido dada boa ideia acerca do que procurar durante sua auditoria do código fonte da máquina de votação. O velho comando “grep” [Unix] revelou diversos sintomas suspeitos de código que mais tarde levaram a inacreditável descoberta - mas não antecipemos por ora.
First, a brief look at how TSE(Tribunal Superior Eleitoral), Brazil’s elections governing body, attempts to guarantee the integrity of the voting machine software. Note that TSE is part of the Judiciary Branch, not the Executive. So they’re not directly under the command of the President of Brazil.
Primeiro, breve olhar a como o TSE (Tribunal Superior Eleitoral), órgão brasileiro de gestão das eleições, tenta garantir a integridade do software da máquina de votação. Notemos que o TSE é parte do Poder Judiciário, não do Executivo. Portanto, não está diretamente sob comando do Presidente do Brasil.
1) Source code and hardware are designed by Brazil’s intelligence agency ABIN (Executive Branch), TSE(Judiciary) and other high security government entities. Hardware is outsourced to Diebold, software is developed in-house(and some of it is outsourced to a company named Modulo).
1) O código fonte e o hardware são projetados pelo órgão de inteligência do Brasil ABIN (Poder Executivo), pelo TSE (Judiciário) e por outras entidades de alta segurança do governo. O hardware é terceirizado para a Diebold, o software é desenvolvido internamente (e parte dele é terceirizado para uma empresa chamada Módulo).
2) During some periods of the development process, a select few people are allowed to smoke-test and audit the source code. This procedure is heavily guarded. In short, if you sit at a terminal to audit code, you’ll have a government agent looking behind your shoulders at all times. The code audit is by no means a free and relaxed procedure. Quite the contrary.
2) Durante alguns períodos do processo de desenvolvimento, poucas pessoas selecionadas ganham permissão para testes preliminares e auditagem do código fonte. Esse procedimento é fortemente vigiado. Em suma, se você se sentar a terminal para auditar código, terá agente do governo olhando por trás de seus ombros o tempo todo. A auditoria de código de modo algum é procedimento livre e descontraído. Muito pelo contrário.
3) Right near the elections the software is cryptographically signed and loaded into the voting machines. The machines are sealed and distributed all over Brazil by the Army and other high security institutions. Only 3 entities are allowed to witness the sealing and loading of machines: Brazil’s Lawyer Board(OAB), any political parties with proper registration at TSE and Brazil’s Attorney General’s office(Ministério Público Federal). ONLY these three categories are given the honor to witness this procedure. We’ll have more to say about this in a minute.
3) Bem perto das eleições o software é criptograficamente assinado e carregado nas máquinas de votação. As máquinas são lacradas e distribuídas por todo o Brasil pelo Exército e outras instituições de alta segurança. Apenas 3 entidades têm permissão para testemunhar o lacre e a carga das máquinas: a Ordem dos Advogados do Brasil (OAB), quaisquer partidos políticos com registro adequado no TSE e o gabinete do Procurador Geral do Brasil (Ministério Público Federal). APENAS a essas três categorias é dada a honra de testemunhar esse procedimento. Teremos mais a dizer a respeito em um minuto.
THAT is the preliminary process: software development(not audited), audit(very restricted) and loading of the software to the machines for distribution (lawyers and their passion for C++).
ESSE é o processo preliminar: desenvolvimento de software (não auditado), auditoria (muito restrita) e carga do software nas máquinas para distribuição (advogados e a paixão deles por C++).
There are COUNTLESS details of how this processs actually works. And as expected, several security flaws have been discovered in this process – not just the software – but in the overall human handling of the process. If you’ve ever heard of Kevin Mitnick and what he has to say about security, then you know the human aspect is the weak link. It’s not different with Brazil’s voting machines. The flaws with the general processes are exposed in a document sent by Dr. Maria Aparecida Cortiz which you can view here.
Há INCONTÁVEIS detalhes acerca de como esse processo realmente funciona. E, como esperado, diversas falhas de segurança têm sido descobertas nesse processo - não apenas no software - mas na manipulação humana do processo. Se você já tiver ouvido falar de Kevin Mitnick e do que ele tem a dizer acerca de segurança, sabe que os aspectos humanos são o elo fraco. Não é diferente no tocante às máquinas de votação do Brasil. As falhas dos processos gerais estão expostas em documento enviado pela Dra. Maria Aparecida Cortiz que você pode ver aqui.
Back to the subject at hand.
Voltemos ao assunto.
Security Flaws Detected in September 2014 – One month before the elections.
Falhas de Segurança Detectadas em Setembro de 2014 - Um mês antes das eleições.
Here are the security flaws detected in September 2014 – literally days before the polls open.
Eis aqui as falhas de segurança detectadas em setembro de 2014 – literalmente dias antes de os locais de votação abrirem.
Only TWO political parties sent observers to the sealing of the machines. Communist Party of Brazil (PCdoB) and PDT, a traditional labour party. The Communist representative was not a technician or trained in computer science. The PDT representative made the impressive revelations you can read below in “The 2014 Revelations”. Of relevance here is the fact that in a democracy of ~200 million citizens, only TWO minority political parties sent anyone to oversee this important technical procedure.
Apenas DOIS partidos políticos enviaram observadores para o lacre das máquinas. O Partido Comunista do Brasil (PCdoB) e o PDT, partido trabalhista tradicional. O representante comunista não era técnico ou treinado em ciência da computação. O representante do PDT fez as impressionantes revelações que você poderá ler abaixo em “As Revelações de 2014”. De relevância aqui o fato de que em uma democracia de cerca de 200 milhões de cidadãos, apenas DOIS partidos políticos minoritários mandaram alguém para supervisar aquele importante procedimento técnico.
The flaws found by Dr. Aranha in 2012 are still there, in different parts of the code. srand(time(null)) is still used to seed the PRNG’s spread throughout the code. A simple ‘grep’ finds instances of this. It has been demonstrated how this can be used to generate infinite copies of the distribution media.
As falhas encontradas pelo Dr. Aranha em 2012 ainda estão lá, em diferentes partes do código. srand(time(null)) ainda está sendo usado para disseminar o PRNG - gerador de números pseudoaleatórios - pelo código. Um simples ‘grep’ encontra instâncias disso. Já foi mostrado como isso pode ser usado para gerar cópias infinitas da mídia de distribuição.
The master password to disable biometric checking is 555555. Auditors were surprised to find this hard coded into a C++ header file.
A senha mestra para desabilitar a verificação biométrica é 555555. Os auditores ficaram surpresos com descobrir essa senha inserida de modo 'duro' [não facilmente alterável] num arquivo header C++.
The password used in several hashing/signature procedures is 123456. No I am not making this up.
A senha usada em diversos procedimentos de hashing/assinatura é 123456. Não, não estou inventando.
There is a program within the source code called programainserator.cpp which has no other code pointing at it. It’s a console utility that exists within Brazilian voting machines. We may only guess what “programa inserator” does. Is it a portmanteau of inserir / alterador?
Há um programa dentro do código fonte chamado programainserator.cpp que não tem outro código apontando para ele. É um utilitário de console que existe dentro das máquinas de votação do Brasi. Só podemos tentar adivinhar o que o “programa inserator” faz. Será junção de inserir / alterador?
A lawyer who is researching the system subpoenaed TSE and received logs of the installation of some software which reveals that version 1.9.0 of a utility was rejected by the machine’s loader. It required version 1.9.3 instead. The logs show several attempts of installation. After a few days the installation of version 1.9.0 succeeds. How is this possible? There would be no possible patching or alterations made to the voting machine’s core operating system at this point.
Advogado que está pesquisando o sistema intimou o TSE e recebeu logs da instalação de algum software que revela que a versão 1.9.0 de um utilitário foi rejeitada pelo carregador da máquina. Ela exigiu, em seu lugar, a versão 1.9.3. Os logs mostram diversas tentativas de instalação. Depois de alguns dias a instalação da versão 1.9.0 é bem-sucedida. Como explicar isso? Àquela altura, seria impossível haver patching [remendos] ou alterações do sistema operacional central da máquina de votação.
Now a short flashback as to why some of these revelations are even graver than they seem at first sight.
Agora curta rememoração acerca de por que algumas dessas revelações são ainda mais graves do que pareçam à primeira vista.
Dr. Aranha’s 2012 Discovery
A descoberta do Dr. Aranha em 2012
In March of 2012 then 30 year old professor Aranha published an unbelievable report: he had revealed the identities of every voter in a voting machine and he had injected any votes he wanted into the machine.
Em março de 2012 o professor Aranha, então com 30 anos de idade, publicou relatório inacreditável: ele havia revelado as identidades de todos os eleitores de uma máquina de votação e havia injetado os votos que quisera na máquina.
Basically Dr. Aranha and his students bust the Brazilian voting machine’s model wide open and exposed the guts of a hastily implemented system. (Not surprisingly, the terrible source code found in the voting machines is still the logic powering the elections of Latin America’s 200 million strong democracy and one of the world’s top 10 economies.)
Basicamente o Dr. Aranha e seus alunos evisceraram o modelo da máquina de votação brasileira e expuseram as entranhas de um sistema açodadamente implementado. (Não surpreendentemente, o lamentável código fonte encontrado nas máquinas de votação continua presente na lógica que preside as eleições daquela democracia de 200 milhões de habitantes da América Latina, uma das 10 maiores economias do mundo.)
As security researchers know: something’s only secure if breaking the security costs more than what is being secured. In Brazil’s case, it’s a several trillion dollar economy being secured by srand(time(null)).
Como sabem pesquisadores de segurança: algo é seguro apenas se violar a segurança custar mais do que aquilo que é protegido. No caso do Brasil, trata-se de uma economia de diversos triliões de dólares protegida por srand(time(null)).
It’d be comical, if it weren’t potentially tragic.
Seria cômico, se não fosse potencialmente trágico.
The 2014 Revelations
As Revelações de 2014
Fast forward to 2014 and you have only two minority political parties which sent observers to the sealing of Brazil’s voting machines: Communist Party of Brazil (PCdoB) and PDT, a traditional labour party. The other entities present were Brazil’s Lawyer Board(OAB) and Attorney’s General’s representatives(MPF = Ministério Público Federal).
Avance para 2014 e você tem apenas dois partidos políticos minoritários que enviaram observadores para o lacre das máquinas de votação do Brasil: o Partido Comunista do Brasil (PCdoB) e PDT, partido trabalhista tradicional. As outras entidades presentes foram a Ordem dos Advogados do Brasil (OAB) e representantes da Procuradoria Geral (MPF = Ministério Público Federal).
All lawyers wearing fancy suits, smiling, exchanging niceties and …overseeing C++ code cryptographic signature and deployment. This can’t go wrong, can it…
Todos os advogados vestindo ternos caros, sorrindo, trocando amabilidades e …supervisando assinatura criptográfica e o espraiamento do código C++. Isso não pode dar errado, pode?...
PDT is a traditionally center/leftist labour party in Brazil. One of the main figures of PDT was Lionel Brizola, a polarizing political figure in recent Brazilian history. Brizola was the only person to govern Rio de Janeiro and also Rio Grande do Sul, two completely different Brazilian states. He captivated both the mainly German, Italian and European origins of the south and the Portuguese and Afro-descendent Rio de Janeiro, both rich and poor, intellectuals and illiterates alike. He fought the military junta(1964-1985) ideologically, but was never a communist (only in the military’s eyes) and probably never handled a gun in his life. His wife was the sister of President João Goulart, the guy the military junta deposed on March 31 1964. Pretty interesting figure, as you can probably tell. The political party he left behind after he died in 2004 is equally eclectic. Not rightist, mainly leftist but with a non-radical “centerist” tradition, kinda like yingyang for Brazilian politics if you will.
O PDT é partido trabalhista tradicionalmente centrista/esquerdista no Brasil. Uma das principais figuras do PDT foi Leonel Brizola, figura política polarizadora da história brasileira recente. Brizola foi a única pessoa a governar o Rio de Janeiro e também o Rio Grande do Sul, dois estados brasileiros completamente diferentes. Ele cativou tanto as origens principalmente alemãs, italianas e europeias do sul quanto o português e afrodescendente Rio de Janeiro, tanto ricos quanto pobres, intelectuais e analfabetos igualmente. Combateu ideologicamente a junta militar (1964-1985), mas nunca foi comunista (exceto aos olhos dos militares) e provavelmente nunca pegou em arma de fogo na vida. Sua mulher era irmã do Presidente João Goulart, o sujeito que a junta militar depôs em 31 de março de 1964. Figura bastante interessante, como você pode provavelmente imaginar. O partido político que ele deixou atrás de si depois de morrer em 2004 é igualmente eclético. Não direitista, principalmente esquerdista mas com tradição não radical  “centrista,” algo do tipo ying yang na política brasileira, se quiserem.
Back to our story, PDT sent a skilled programmer to oversee the sealing process. And good ‘ol ‘grep’ revealed some of the same stuff Dr. Aranha found two years earlier. UnB’s professor responsible for sending him to TSE recently said to me: “my only concern was they’d take away grep this time around”. They didn’t.
De volta a nosso assunto, o PDT enviou programador perito para supervisar o processo de lacre. E o bom velho ‘grep’ revelou parte das mesmas coisas que o Dr. Aranha havia encontrado dois anos antes. O professor da UnB responsável por enviá-lo ao TSE disse-me recentemente: “minha única preocupação era a de que eles tirassem o grep desta vez.” Não tiraram.
The Audit Process
O Processo de Auditoria
The auditing computer terminals are set up by the government. You are not allowed to take anything away, nor are you allowed to take anything into the room. The set of tools available to code auditors is very restricted (a dumbed down chroot’ed linux shell) and you’ll have a government technocrat breathing down your shoulders at all times. How PDT’s coder was able to find what he found is a long story on its own, but suffice to say he had several screens open and he’d quickly switch among them. Basically, he was able to pull a Homer Simpson vs. Mr Burns and look like he was working on something else entirely. (While Homer just wants to look like he’s working at all.)
O computador auditor é preparado pelo governo. Você não tem permissão para levar nada, nem é permitido a você trazer qualquer coisa para o recinto. O conjunto de ferramentas disponíveis para os auditores de código é muito restrito (um shell Linux bem depenado), e você terá um tecnocrata do governo respirando em seu ombro o tempo todo. Como o codificador do PDT conseguiu encontrar o que encontrou é em si longa história, mas basta dizer que ele teve diversas telas abertas e rapidamente foi passando de uma para a outra. Basicamente, ele conseguiu puxar um Homer Simpson vs. Mr Burns e parecer estar trabalhando em algo inteiramente diferente. (Embora Homer só queira parecer estar trabalhando.)
The coders sign an NDA whereby they can’t reveal anything to the public without previously notifying TSE. Basically, TSE’s intent is not at all Orwellian. The basic idea is that of a zero-day exploit being reported to the OEM before it hits the mainstream, so they get a chance to fix things a priori. They don’t want a major flaw publicized without them being able to publish some justification or announce a patch.
Os codificadores assinam um NDA [acordo de não revelação] segundo o qual eles não podem revelar nada ao público sem previamente notificarem o TSE. Basicamente, a intenção do TSE não é de forma alguma orwelliana. A ideia básica é a de um exploit dia zero ser informado ao OEM [fabricante do equipamento original] antes de chegar ao público em geral, de modo que eles tenham uma chance de consertar as coisas a priori. Eles não querem que uma falha de grandes proporções seja divulgada publicamente sem poderem publicar alguma justificativa ou anunciar um patch [remendo].
[By the way, to this day, I've never heard of them patching anything on the voting machines. According to the official marketing, the machines are 100% perfect.]
[Aliás, até hoje nunca ouvi acerca deles remendarem qualquer coisa nas máquinas de votação. De acordo com o marketing oficial, as máquinas são 100% perfeitas.]
“With a little help from my”…lawyers
“Com pequena ajuda de meus”…advogados
A lawyer from São Paulo, Dr. Maria Aparecida R. Cortiz, has been taking the lead in exposing the flaws found by the coders. Following TSE’s rules, the coders notify TSE and, Dr Cortiz simultaneously files subpoenas for more information about the newfound flaws. They’ve been working in this manner for the past few months and the findings reported by Dr. Dourado, on the links at the beginning of this post, are a result of his coordination with her and the techs who have been investigating the code.
Advogada de São Paulo, Dra. Maria Aparecida R. Cortiz, vem assumindo a liderança na exposição das falhas encontradas pelos codificadores. Observando as regras do TSE, os codificadores notificam o TSE e a Dra. Cortiz simultaneamente dá entrada em intimações para mais informação acerca das falhas recém-encontradas. Eles estão trabalhando desta maneira há alguns meses e as descobertas divulgadas pelo Dr. Dourado, nos links ao início desta afixação, são resultado de sua coordenação com ela e os técnicos que têm estado a investigar o código. 
Conclusion
Conclusão
TSE’s voting system really sped up Brazil’s elections. There is no going back to the old and also fraud-prone method of counting paper ballots. But the present system requires major upgrades to reach the level of security that is currently marketed by the government.
O sistema de votação do TSE realmente tornou mais rápidas as eleições no Brasil. Não há retorno ao antigo e também tendente a fraudes método de contar cédulas de papel. O sistema presente, contudo, requer aperfeiçoamentos de grandes proporções para atingir o nível de segurança atualmente marqueteado pelo governo.
In my opinion,
Em minha opinião,
The entire source code should be open and available to anyone via Github. Security by obscurity means no security.
O código fonte inteiro deveria ser aberto e tornado disponível para qualquer pessoa via Github. Segurança por meio da obscuridade significa nenhuma segurança.
Passwords should be external to the source code and only loaded in during the sealing process or at the activation of the machine at the voting booth.
As senhas deveriam ser externas ao código fonte e só carregadas durante o processo de lacre ou quando da ativação da máquina na cabine de votação.
The auditing process should be open to any qualified technicians who sign up. Lawyers aren’t exactly fans of C++.
O processo de auditoria deveria ser aberto a quaisquer técnicos qualificados que se comprometessem. Os advogados não são exatamente entusiastas de C++.
The entire process needs to be less politicized and become more technical.
O processo inteiro precisa ser menos político e tornar-se mais técnico.
I hope the new revelations help improve the quality of Brazil’s vibrant elections. The people should have complete trust of the elections process, they should be absolutely confident that the elected officials have been placed in power by a fair, open and transparent voting system.
Espero que as novas revelações ajudem a melhorar a qualidade das vibrantes eleições do Brasil. As pessoas deveriam ter confiança completa no processo eleitoral, deveriam estar absolutamente confiantes em que as autoridades eleitas tenham sido guindadas ao poder por meio de sistema equânime, aberto e transparente.

No comments:

Post a Comment