Vulnerabilidade no USB (BadUSB)

por | out 30, 2014 | Dicas de Segurança | 0 Comentários

O BadUSB é um ataque capaz de executar código malicioso em um computador, a partir de um dispositivo USB infectado.

O Ataque

O BadUSB é um ataque que tem como objetivo executar código malicioso hospedado no firmware de um dispositivo USB. Normalmente estamos acostumados com ataques provenientes do Mass Storage de dispositivos como pendrives ou HDs externos. Como o BadUSB está hospedado no firmware, o ataque dispensa a utilização de um Mass Storage e qualquer dispositivo está vulnerável, até mesmo teclado, mouse, webcam, impressora.

Alvo do ataque: computador hospedeiro
Quando um dispositivo USB é conectado a um computador, o sistema operacional do computador se comunica com o dispositivo. Essa comunicação ocorre para que o SO possa verificar qual driver vai utilizar para a comunicação, entre outras operações.

O dispositivo USB com código malicioso pode executar comandos no computador, seja ele Windows ou Linux. Na conferência Black Hat, os pesquisadores demonstraram um dispositivo que capturava a senha do usuário na lockscreen, dessa forma o código malicioso podia executar comandos com “sudo” (escalada de privilégio). No ataque, os pesquisadores montaram um dispositivo Ethernet virtual, enviando as senhas do usuário pela rede. Como é um ataque de escalada de privilégio, existem muitas possibilidades de ataque.

Uma forma interessante de atacar é com a simulação de teclado a partir de qualquer dispositivo. O dispositivo é reconhecido normalmente pelo computador, mas em algum momento outro dispositivo USB é simulado como um teclado e digita comandos no computador hospedeiro.

Alvo do ataque: dispositivo USB
A outra ponta do ataque é a inserção de malwares em dispositivos USB que estão livres de malware. Um computador que já está infectado com o malware pode modificar o firmware de um dispositivo USB.

Fatores que dificultam o ataque

Quando um dispositivo infectado é inserido em um computador, existem poucas formas de se proteger. Quando falamos do caminho inverso, que é a contaminação de dispositivos USB a partir de um computador infectado, existem formas de tornar o ataque mais difícil de ser executado:

  • Impedir a atualização de firmware: um dispositivo que tem a atualização de firmware bloqueada se torna difícil de ser atacado. O firmware instalado pelo fabricante ficará protegido se o adversário não conseguir alterar esse firmware.
  • Detalhes do funcionamento do dispositivo: digamos que um adversário conseguiu modificar o firmware de um teclado USB. O ataque terá uma eficiência menor se o adversário não souber que é um teclado e não inserir um firmware compatível para aquele dispositivo, ou seja, que faça o dispositivo continuar funcionando como teclado.
  • Obscuridade do firmware: o fabricante de um dispositivo implementa o firmware de forma que só ele conhece seu funcionamento. O obscurecimento do firmware é um processo natural e não exige que o fabricante o faça de propósito. Porém, um adversário motivado poderá descobrir como o firmware funciona e essa dificuldade será superada.
  • Motivação do adversário: qualquer um dos ataques ao USB são complexos e exigem uma carga de dedicação elevada do adversário. Portanto, os ataques só podem ser executados por adversários motivados.

Solução

Infelizmente, não existe solução única para o problema. O BadUSB é uma falha no esquema de atualização de firmware de alguns dispositivos USB, e exige a atuação de seu fabricante para sanar o problema. Provavelmente a solução só virá em uma nova geração de dispositivos e circuitos integrados com mecanismos seguros de atualização de firmware. No entanto, existem formas de se reduzir a chance de seralvo do ataque.

As possíveis soluções e suas limitações:

  • Whitelist de dispositivos: dispositivos USB nem sempre tem um números erial único.
  • Bloquear USB: apesar de resolver o problema, o bloqueio total do USB traz sérios problemas de usabilidade e é improvável que o mercado utilize esse caminho como solução para o problema.
  • Procurar por malware em firmware de dispositivos: o firmware de um dispositivo só pode ser lido se ele prover essa funcionalidade. Um dispositivo infectado não irá prover a análise do firmware, ou irá esconder o malware.
  • Assinatura de código de firmware (para update): a atualização de firmware custom não é mais possível. Só será possível atualizar para firmware do fabricante (ou seja, firmware assinado).
  • Desabilitar update de firmware: será necessário confiar no firmware de fábrica, que nunca poderá ser modificado.

Outras questões
Os pesquisadores que descobriram a falha não divulgaram o código, mostrando como a vulnerabilidade pode ser explorada. Eles alegam que apenas adversários com uma motivação grande poderão executar o ataque, e não gostariam que qualquer um pudesse executá-lo.

Um outro grupo de pesquisadores escreveu um código com o ataque e divulgou esse código em uma plataforma aberta (GitHub). Esse grupo não concorda com a ideia de esconder o código e divulgou para forçar os fabricantes a trabalharem mais rápido na resolução do problema.

https://srlabs.de/badusb/
https://www.blackhat.com/us-14/briefings.html#badusb-on-accessories-that-turn-evil
https://www.youtube.com/watch?v=nuruzFqMgIw
https://srlabs.de/blog/wp-content/uploads/2014/07/SRLabs-BadUSB-BlackHat-v1.pdf
https://github.com/adamcaudill/Psychson

Vitor de Paulo

Vitor de Paulo

Hardware Technical Leader

Engenheiro eletricista pela Unicamp. Desenvolvedor de hardware para segurança da informação.

Conrado Gouvêa

Conrado Gouvêa

Desenvolvedor de soluções criptográficas.

Doutor em Ciência da Computação pela Unicamp na implementação eficiente de criptografia.

Andre "Dexter" Bereza

Andre "Dexter" Bereza

Technical Manager

Mestre em Ciência da Computação pela UFSC. Arquiteto de soluções de segurança da informação.

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

CONTACT US

CONTACT US


Av. Romeu Tórtima, 554
Barão Geraldo - Campinas-SP - Brasil
CEP 13084-791

fale.conosco@kryptus.com
Tel/Fax +55 (19) 3112 5000

© 2018 - Kryptus | Shaping Trusted Bonds - All rights reserved. - Developed by DDID