O núcleo de alguns processadores Intel executam um micro sistema operacional completo chamado MINIX e ele está cheio de falhas de segurança. Entenda melhor essa história!
| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. Mais detalhes clicando aqui.
1. Introdução
Antes de iniciarmos nossa postagem, devo avisá-los de que as informações aqui contidas exigem a pré-leitura desta publicação anterior de nosso site. Nela, tratei melhor a história do UNIX® e como dele surgiram sistemas como Linux e BSD. De tal maneira, abordei o papel do MINIX, sua origem e sua inspiração.
Pois bem, resumidamente o MINIX foi o sistema operacional desenvolvido por Tanembaum como uma versão gratuita e alternativa ao UNIX® para estudantes e desenvolvedores.
Logo do MINIX 3, desenvolvido por Andrew Tanembaum e ainda em atividade!
O sistema operacional é voltado a estudantes que querem conhecer melhor como é um sistema UNIX® sem lidar com as complexidades de algum sistema baseado no BSD. Além disso, o MINIX é usado para compilar o kernel Linux. Nas palavras de Torvalds “o Linux compila bem o kernel Linux, mas o MINIX compila melhor!”
E aparentemente a Intel desenvolveu e instalou cópias do MINIX no núcleo de alguns de seus processadores! Agora, vamos aos fatos.
2. Mecanismo de Gerenciamento
Matthew Garrett, conhecido desenvolvedor de segurança que trabalha para o Google, explicou que “os chipsets da Intel há alguns anos incluem um Mecanismo de Gerenciamento (ME): um pequeno microprocessador que roda independentemente da CPU principal e do sistema operacional do computador. Pedaços de software rodam no ME, variando de código a lidar com DRM de mídia até a implementação de um TPM. A AMT (Active Management Technology) é outro software rodando no ME. Em maio de 2017, descobrimos que a AMT tinha uma grande falha de segurança , que estava lá há nove anos.”
“Corrigir isso requer uma atualização de firmware do sistema, a fim de fornecer um novo firmware ME (incluindo uma cópia atualizada do código AMT)”, escreveu Garrett. “Muitas das máquinas afetadas não estão mais recebendo atualizações de firmware de seus fabricantes, e provavelmente nunca conseguirão consertar”, disse ele. “Qualquer um que habilitar o AMT em um desses dispositivos estará vulnerável.”
- Pense rápido! Quantos de vocês atualizaram o firmware do seu PC ou servidor? Certo. Poucos de vocês. Isso é ruim. Não é todo processador, mas se você ou o seu fornecedor de hardware “ativou explicitamente o AMT” na BIOS, sua máquina ainda estará vulnerável a ataques. E isso vale aos processadores Intel com sistema AMT!
A Electronic Frontier Foundation (EFF) então pediu que a Intel forneça uma maneira para os usuários desabilitarem o ME. Mas Minnich descobriu que o que está acontecendo dentro do chip é ainda mais preocupante. Em uma apresentação na Embedded Linux Conference Europe, ele relatou que os sistemas que usam chips Intel com AMT estão executando o MINIX.
Uma CPU Intel, curiosamente um componente de funcionamento de um computador, possui em seu interior um sistema operacional completo!
Conforme mencionado no começo da publicação, aqui entra seu conhecimento prévio sobre o MINIX!
- Então, o que o MINIX está fazendo nos chips da Intel? Muito.
Esses processadores estão executando uma variação de código fechada do MINIX 3, originalmente de código aberto. Não sabemos exatamente qual versão ou como ela foi modificada, já que não temos o código-fonte. Nós sabemos que com ele lá:
- Nem o Linux nem qualquer outro sistema operacional tem o controle final sobre esse micro-sistema nas plataformas x86. O que pode ser feito é uma alteração indireta, modificando os parâmetros de acesso dele ou com alterações causadas pela gravação de firmwares modificadas. Ou seja, qualquer ajuste é feito de forma passiva.
- Entre o sistema operacional e o hardware há pelo menos 2 kernels e meio – sendo eles o MINIX e o Firmware UEFI.
Estes são proprietários e (talvez não surpreendentemente) fáceis de explorar falhas! - E as explorações podem persistir, ou seja, serem escritas para a FLASH da placa mãe e você não pode consertar isso facilmente.
Além disso, graças ao trabalho de Minnich e seus colegas pesquisadores, descobrimos que o MINIX está rodando em três núcleos x86 separados em chips modernos da Intel. Lá dentro, o MINIX possui como funções:
- Pilhas de rede TCP/IP 4 e 6
- Sistemas de arquivos
- Drivers (disco, rede, USB, mouse)
- Servidores Web
Imagine só, que absurdo, um sistema operacional completo que, além de existir no coração dos processadores, ainda possui um servidor web e drivers básicos de redes TCP/IP rodando nativamente? Qualquer dado seu poderia, em tese, ser enviado pela internet sem seu consentimento.
O MINIX também tem acesso às suas senhas. Ele também pode refazer a imagem do firmware do seu computador, mesmo se estiver desligado.
Deixe-me repetir isso: Se o seu computador estiver “desligado”, mas ainda estiver conectado, o MINIX ainda poderá alterar as configurações fundamentais do seu computador!
E, para tornar tudo ainda mais divertido, “pode implementar código de auto-modificação que pode persistir em ciclos de energia”. Portanto, se uma exploração de vulnerabilidade acontecer aqui, mesmo se você desconectar seu servidor em uma última tentativa desesperada de salvá-lo, o ataque ainda estará aguardando por você quando você ligá-lo novamente.
Como? O MINIX pode fazer tudo isso porque é executado em um nível fundamentalmente inferior da máquina, no coração do núcleo da CPU.
2.1 Anéis!
Computadores baseados em x86 executam seu software em diferentes níveis de privilégios ou “aneis”, equivalente ao esquema de runlevels do Linux. Seus programas são executados no anel três e eles têm menos acesso ao hardware.
“Meu precioooooso!”
Quanto menor o número do anel do software, mais acesso ele tem ao hardware:
- Anéis dois e um não tendem a ser usados.
- Os sistemas operacionais são executados no anel zero.
- Os sistemas hypervisor bare metal, como o Xen ou mesmo o QEMU + KVM, são executados no anel -1.
- A UEFI (Unified Extensible Firmware Interface) é executada no anel -2.
- MINIX? Ele roda no anel -3.
Você não pode vê-lo. Você não pode controlá-lo. Está apenas zumbindo lá, executando no seu computador.
O resultado, de acordo com Minnich, é que “há grandes buracos, gigantescos pelos quais as pessoas podem explorar as falhas de segurança existentes”. Ele continuou: “Você não está com medo? Se você ainda não está com medo, talvez eu não tenha deixado claro, porque com certeza eu estou com medo”.
3. O quanto afeta?
3.1 Prós: Segurança Reforçada
Em defesa da Intel, ela tem seu ponto: O MINIX no nucleo dos processadores possui uma utilidade bastante simples e eficaz: Sistema anti-roubo. Notebooks enterprise da Lenovo, como os da linha ThinkPad, possuem na BIOS o suporte nativo a sistemas anti-roubo. Não apenas o hardware é criptografado com chips dedicados como o TPM, impedindo o boot por periféricos como pendrives e/ou acesso aos dados do usuário, também há o sistema de rastreio online da localização do notebook.
Pense na seguinte situação: O ladrão remove o HDD, não pluga qualquer pendrive, o computador está “morto”. Basta conectar um cabo de rede e o de energia/bateria e pronto! O notebook vai executar o MINIX, se conectar á web e enviar os dados que ele possuir naquele instante para servidores da Lenovo – ou terceiros, responsáveis pelo sistema anti-furto. Com telemetria + triangulação por IP local, não será difícil achar a localização aproximada do notebook. – Os dados da sua localização podem ser facilmente vistos em ipleak.net. Perceba que, tal método só é ineficiente se o ladrão que o roubar tome o cuidado de utilizar proxy/VPN/TOR para usa-lo o tempo todo indefinidamente!
3.2 Contras: Desnecessário?
Enquanto notebooks da Lenovo possuem o recurso e podem fazer uso do mesmo, pra quê todos os demais componentes da Intel em outros computadores e marcas precisam desse sistema? Otimização? Desempenho? Telemetria?
Nesse ponto não há provas de que o MINIX ajudaria o desempenho da máquina, uma vez que os chips AMD não possuem tal componente e funcionam com melhor otimização, dependendo do modelo.
3.3 Solução?
Qual é a solução? Bem, não é “migrar para CPU’s AMD”, uma vez que os chips da AMD não tinham esse tipo de código misterioso escondido, mas até mesmo os mais recentes processadores Ryzen não estão totalmente abertos. Eles incluem o processo de segurança da plataforma AMD e essa também é uma misteriosa caixa preta.
O que Minnich gostaria de ver acontecer é a Intel lançar seu código fechado do MINIX e usar um firmware baseado em Linux de código aberto. Isso seria muito mais seguro. O software atual é protegido apenas por “segurança por obscuridade”: É seguro porque ninguém sabe o que tem dentro. – Lembra algo mais? Como o modus operandi do Windows?
Mudar para o Linux no coração dos Intel’s também permitiria que os servidores inicializassem muito mais rápido. De acordo com Minnich, inicializar um servidor Open Compute Project (OCP) leva oito minutos graças aos drivers primitivos do MINIX – lembre-se, o MINIX data de 1980. – Com o Linux, levaria menos de 17 segundos para chegar a um prompt do shell. Isso é uma aceleração de 32 vezes. Há um bloqueio de desempenho por software aqui.
Não há razão para não fazer essas melhorias. Minnich observou: “Há provavelmente mais de 30 milhões de Chromebooks e, quando seu Chromebook recebe um novo BIOS, uma nova imagem do Linux é mostrada para o firmware e não sabemos de nenhum problema a respeito disso”.
Especificamente, Minnich propõe que a Intel e AMD façam:
- Tornar o firmware menos capaz de causar danos
- Torne suas ações mais visíveis, públicas
- Remova tantos os componentes de tempo de execução
- Em particular, retire seu servidor web e a pilha de redes TCP/IP
- Remova a pilha IP UEFI e outros drivers
- Remova a capacidade de auto-refluxo ME/UEFI
- Deixe o Linux gerenciar atualizações na memória Flash
Sobre isso, o novo firmware do Linux teria um espaço de usuário escrito em Go. Os usuários trabalhariam com este shell Linux usando comandos familiares. Isso daria a eles uma visão clara do que estava acontecendo com a CPU e outros componentes do sistema.
Ao mesmo tempo, como o UEFI é tão fácil de hackear, ele quer que a “UEFI ROM seja reduzida á suas partes mais básicas”.
4. Como saber se sou afetado?
A presença do Intel Management Engine se faz nos seguintes processadores da empresa:
- Todas as gerações de Intel® Core™ i3, i5, i7 e i9
- Intel® Xeon® Processor E3-1200 v5 & v6
- Intel® Xeon® Processor Scalable
- Intel® Xeon® Processor W
- Intel® Pentium® Processor G Series
- Intel® Atom® C3000 Processor
- Apollo Lake Intel® Atom Processor E3900 series
- Apollo Lake Intel® Pentium™
- Celeron™ G, N and J series Processors
Mas será mesmo que sou afetado?
Na época que a Intel anunciou a correção da falha INTEL-SA-00086, ela também trouxe uma ferramenta escrita em Python para quem quiser verificar o status do sistema.
A ferramenta, disponível para Linux e Windows, pode ser baixada clicando aqui.
Se escolheu a versão para Linux, extraia-a para uma pasta e execute o arquivo intel_sa00086.py como root:
$ sudo python intel_sa00086.py
O resultado será semelhante a este:
A ferramenta pode te apontar que você está livre da ameaça da falha INTEL-SA-00086; mas confirma que o Intel Management Engine está presente e ativo na base do seu processador.
Outro modo de confirmar isso, é verificando a presença do device me* na pasta /dev.
Normalmente denominado /dev/mei0, esse device é o acesso ao Intel Management Engine feito pelo kernel Linux.
5. Solução Alternativa?
Os pesquisadores da Positive Technologies relataram a descoberta de um modo não documentado (para desativar parcialmente o ME) e o fato de estar conectado ao programa High Assurance Platform (HAP).
A Positive Technologies avisa as pessoas, entretanto, que seguir os passos abaixo podem danificar o seu PC!
Se você quiser seguir os passos de qualquer maneira, os pesquisadores colocam o utilitário necessário no GitHub, que pode ser acessado aqui. Uma vez que o software é descompactado, você pode iniciar o processo ou desligar o ME 11 com outra ferramenta que a equipe fornece, chamada ME Cleaner, disponível aqui. Avisando, claro, é que você não pode desligar completamente o ME. O ME faz parte do processo de inicialização da CPU e é necessário para o processo de boot do computador.
Nas palavras da Positive Technologies: “O fato decepcionante é que, nos computadores modernos, é impossível desativar completamente o ME. Isso se deve principalmente ao fato de que essa tecnologia é responsável pela inicialização, pelo gerenciamento de energia e pelo boot do processador principal. Outra complicação está no fato de que alguns dados são codificados dentro do chip PCH funcionando como o southbridge em placas-mãe modernas.”
A Intel fornece aos fabricantes de placas-mãe uma ferramenta para que eles possam programar algumas funcionalidades limitadas para o ME, incluindo uma ferramenta de imagem Flash (FIT) e uma ferramenta de programação Flash (FPT). Embora não sejam fornecidos aos usuários finais, eles estão disponíveis gratuitamente na Internet.
O post completo dos pesquisadores da Positive Technologies é muito técnico e, em essência, a possibilidade de desativar parcialmente o ME só veio á tona porque a equipe descobriu que há um interruptor oculto no código do firmware para o ME. Esse interruptor, quando definido como “1”, desligará o ME depois que o computador for inicializado e os componentes ME na sequência de inicialização não serão mais necessários. O bit é chamado de “reserve_hap” e é descrito no código como “High Assurance Platform” (HAP) habilitado, relataram ao site BleepingComputer .
O bit foi supostamente adicionado a pedido da Agencia Nacional de Segurança dos Estados Unidos (NSA) para PCs rodando em ambientes altamente seguros. A Intel confirmou o kill switch para o ME, dizendo aos pesquisadores: “Em resposta a solicitações de clientes com requisitos especializados, algumas vezes exploramos a modificação ou desativação de certos recursos. Nesse caso, as modificações foram feitas a pedido dos fabricantes de equipamentos em suporte de avaliação de seu cliente do programa ‘High Assurance Platform’ do governo dos EUA. Essas modificações passaram por um ciclo de validação limitado e não são uma configuração oficialmente suportada.”
Graças á NSA, o “kill switch” do ME existe – mesmo que parcialmente – e o código de desativação do mesmo está agora público para qualquer um que quiser se aventurar a remover o ME.
Ou seja, com muito custo consegue-se desativar a execução do Intel ME; porém desativá-lo completamente é impossível e aqui os detalhes sórdidos: Caso você cometa algum erro durante a tentativa de remover o ME, você poderá invalidar o funcionamento do seu processador. Isso porque se o boot ROM do ME (armazenado na Flash SPI do processador) não encontrar uma assinatura válida da Intel, o sistema desligará automaticamente após 30 segundos. Isso é uma medida protetiva contra qualquer possibilidade de “pirataria” na fabricação dos processadores. Porém isso impede que o ME seja totalmente removido.
6. Análise Opinativa
Sejamos sensatos: É complicado explorar uma falha onde nem mesmo os usuários possuem acesso direto. A possibilidade remota existe, caso alguém com conhecimento suficiente pra manipular os dados de uma firmware infectando-a, tirando proveito das falhas do processador. Tecnicamente se isso acontecer, a máquina está condenada até que se consiga gravar uma nova firmware – e nem todos os computadores terão esse suporte, nem para serem infectados, nem para serem corrigidos. É um beco sem saída.
É curioso ver que um sistema baseado em UNIX obscuro como o MINIX, graças à Intel colocando-o em vários núcleos em seus chips, possa ser o sistema operacional mais amplamente usado no mundo. Mas não é possível executar servidores e PCs modernos exclusivamente com ele, descartando essa curiosa afirmação.
7. Conclusão
Quem é afetado?
Todo mundo que usa CPU Intel com execução ativa do ME conforme descrito acima.
Isso tudo que foi sugerido, vai funcionar?
Ainda é cedo, avisou Minnich, e você pode brickar seu computador tentando fazer isso.
“Mas tanto para segurança quanto para desempenho, isso deveria ser feito por todos que usam Intel”, finaliza.
As recentes correções para mitigar as falhas Spectre e Meltdown, ou mesmo as correções para o INTEL-SA-00086 são apenas a ponta do iceberg no aspecto das falhas existentes nos núcleos MINIX executando nos processadores da empresa. Apesar da reconhecida segurança do MINIX por ser baseado em UNIX, as falhas existentes não são corrigidas em partes por negligência da Intel, em partes por negligência dos usuários que não atualizam suas firmwares/BIOS.
#UrbanCompassPony
Fontes:
ZDNet
CSOOnline
HotHardware
Hackaday
Autodidata, me aprofundei em sistemas operacionais baseados em UNIX®, principalmente Linux. Também procuro trazer assuntos correlacionados direta ou indiretamente, como automação, robótica e embarcados.
Seus artigos técnicos são muito bons.
Obrigado <3
Boa noite gostaria da sua permissão para repostar esse artigo no blog : http://www.tuxsupport.tk/ dando claro os devidos e merecidos créditos pela excelente postagem.
Dando os devidos créditos pode publicar qualquer artigo do site 😉
Primeiramente, agradeço pelo artigo! Está muito interessante!
Você poderia dar mais informações na parte que fala sobre o uso da linguagem Go?
Pretendo fazer um artigo dedicado á linguagem Go 😉
Mais um post surpreendente. Obrigado pela informação!
Agora é torcer para que os “assembleiros” velhos de guerra não explorem essa falha, e também para que sejam lançadas as correções para TODOS os processadores que executam o MINIX, o que creio que nunca ocorrerá.
Olá.
No texto, é informado que os níveis de que os níveis de privilégio vão até o -3. Como sou bastante leigo, resolvi ler um pouco mais sobre os anéis de privilégio. O primeiro texto que li, deixo o link abaixo, diz que são somente 4 anéis, indo de 0 a 3. Poderia esclarecer melhor este ponto ou recomendar algum texto que explique melhor? Obrigado pela atenção
https://www.ibm.com/developerworks/community/blogs/fd26864d-cb41-49cf-b719-d89c6b072893/entry/kernel_mode_user_mode_privil_C3_A9gios_e_prote_C3_A7_C3_A3o?lang=en
Realmente a nível prático só existem os aneis de 0 a 3. O contexto de se dizer “anel -1 até -3” é porque são códigos que executam em camadas ainda mais profundas do nível de hardware, camadas essas que nem mesmo o kernel possui acesso. Mas é apenas um “contexto”, não sendo algo de fato aplicável. Do ponto de vista real, o nível -1 é assim conhecido por ser a base de um Hypervisor (KVM) ou seja, ele é um ponto mais profundo de acesso do que o próprio kernel, enquanto que o -2 seria a BIOS (tudo que ela possui roda abaixo do hypervisor, sendo que ela pode ser modificada com .bin’s específicos); E o -3 seria onde ficam os softwares do Intel ME, local onde nada nem ninguem tem acesso – você apenas pode mudar a maneira como o que está lá interage com seu sistema, desabilitando por exemplo a execução do Intel ME depois que o sistema inicia, mas é impossível bloqueá-lo definitivamente.
Fonte: https://security.stackexchange.com/questions/129098/what-is-protection-ring-1