O Monstro Físico Embaixo da Cama de Abstrações
Em tempos de Aprendizagem de Máquina, Tudo como Serviço, Computação em Nuvem e Realidade Aumentada, entre outras maravilhas, é fácil perdermos de vista o fato de que essas tecnologias sofisticadas são apenas o cume de uma enorme montanha de abstrações construídas ao longo de quase dois séculos de ciência e engenharia. Como disse Arthur C. Clarke, naquela que ficou conhecida como a Terceira Lei de Clarke e que já virou clichê nerd (perdão por repeti-lo aqui), “qualquer tecnologia suficientemente avançada é indistinguível de mágica”.
O ponto chave aqui é que não estamos falando do processo de substituição de velhas abstrações por novas (também essencial e que ocorre em paralelo), mas do empilhamento de camadas de abstração de nível mais alto sobre aquelas de nível mais baixo para construção (ou explicação) de sistemas (e sistemas de sistemas) cada vez mais complexos. Assim, os fenômenos eletromagnéticos naturais são abstraídos nas equações de Maxwell, que são abstraídas em redes de elementos ideais (circuitos elétricos), que são abstraídas em portas lógicas e registradores, que são abstraídos em processadores e memórias, que por sua vez são abstraídos em linguagens de programação e sistemas operacionais e assim por diante até, finalmente, chegarmos em Google Cloud ML, Internet das Coisas e Pokemón Go. Abracadabra!
A capacidade de abstração é a ferramenta matadora de que nos dotou o processo evolucionário para compreender e manipular o mundo. O cérebro humano possui uma capacidade finita, apesar de enorme, de processamento de informações. O imenso poder da abstração consiste em nos permitir focar essa capacidade de processamento limitada nos poucos elementos que são essenciais a um determinado problema ou contexto e descartar os miríades de detalhes irrelevantes que, de outra forma, nos esmagariam cognitivamente. Para criar ou analisar um algoritmo de integração numérica eu não preciso saber como se comportam os transistores dentro do processador que vai executá-lo.
Acontece que o mundo físico não vai embora ao ser abstraído. Ele continua lá, embaixo da cama, à espreita. Abstrações só são válidas dentro de condições - assumindo premissas - bem definidas. Meu algoritmo de integração numérica vai funcionar desde que as operações primitivas das quais ele se utiliza, como a adição binária, sejam executadas corretamente pelos circuitos eletrônicos do processador. E os circuitos do processador funcionarão corretamente se não forem submetidos, por exemplo, a interferência eletromagnética excessiva. Ou se não houverem desvios significativos (em relação ao projetado) na geometria e na composição química dos artefatos que constituem os elementos de circuito na pastilha semicondutora. Esses desvios, quando ocorrem, são geralmente ocasionados por variações indesejadas no processo produtivo, que os fornecedores de chips semicondutores tentam, primeiramente, minimizar e, em última instância, detectar através de testes, antes de colocar os dispositivos no mercado. As premissas são como as cartas do castelo de abstrações: Basta que uma delas seja puxada para que toda a estrutura acima venha abaixo.
Há alguns meses, um fascinante exemplo de monstro físico embaixo da cama de abstrações voltando para nos assombrar, e puxando nosso pé virtual no meio da noite, nos foi dado por uma equipe de pesquisadores da Universidade de Michigan Ann Arbor. Eles conceberam - e implementaram - um ataque cibernético de elevação de privilégios de “engenhosidade demoníaca”, que explora a natureza física fundamentalmente analógica dos microprocessadores (a natureza é contínua, pelo menos acima do nível subatômico). O status demoníaco da obra foi concedido à mesma por Yonatan Zunger, Líder de Infraestrutura para o Google Assistant.
O novo ataque foi denominado de A2, alegadamente tanto uma homenagem à cidade de Ann Arbor, onde fica a Universidade, quanto uma alusão à natureza analógica do mesmo (Analog Attack). O A2 é o mais recente de uma linhagem de ataques conhecidos como Cavalos de Tróia de hardware (Hardware Trojans - HT), cuja principal característica, obviamente, é que eles se baseiam em modificações maliciosas do hardware - e não do software, como é o caso dos trojans comuns. E o princípio de operação dos HTs é exatamente esse: Não importa quão bem projetado é o seu software; em tempo de execução, e em um nível mais fundamental, ele não passa de cargas elétricas se deslocando e se acumulando por caminhos e em lugares específicos de uma pastilha semicondutora. E se esse processo físico não ocorre de acordo com as especificações assumidas pelas camadas de abstração superiores (as tais premissas) você está metaforicamente morto (ou literalmente, dependendo da aplicação).
Sabe o tal modo kernel, aquele em que, enquanto estiver ativo, qualquer software executando na CPU tem “poder absoluto”? Basicamente, ele não é mais do que um bit especial setado em um registrador específico. Ou seja, uma certa quantidade de carga elétrica acumulada em uma posição específica da pastilha semicondutora. Carga essa que poderia ser produzida até mesmo pelo impacto aleatório de partículas subatômicas oriundas do Espaço! Como nos filmes da Marvel e da DC, os raios cósmicos podem dar superpoderes a qualquer zé-ninguém ;-) Apesar do chiste, acredite, essa é uma preocupação real na indústria aeroespacial.
No caso dos trojans de hardware, não se trata de raios cósmicos, mas de alterações intencionais nas características de elementos do circuito original do chip ou da introdução de elementos estranhos ao design original, com o objetivo de alterar o funcionamento do circuito. Essas modificações são contrabandeadas por um agressor (um engenheiro do mal) para dentro do chip em alguma fase do ciclo de desenvolvimento do produto (design lógico, design físico, fabricação). Uma vez implantadas, ficam dormentes e podem, a depender do tipo de trojan, ser ativadas internamente por algum estado pré-definido (ex: o valor de um contador) ou externamente por algum sinal físico (ex: rádio ou indução eletromagnética).
Não vou aqui explicar em detalhes o funcionamento do A2. O artigo original, no momento em que escrevo, está disponível aqui. É uma leitura fascinante para todos aqueles que gostam de entender a fundo como as coisas funcionam. E a estória original publicada pela Wired faz um excelente trabalho de explicar a essência do ataque em termos não-técnicos, avaliar sua viabilidade fora dos laboratórios acadêmicos e as potenciais implicações para a segurança de sistemas. O ponto que me interessa no contexto deste artigo é a natureza analógica do mecanismo de ataque. O circuito malicioso proposto pelos pesquisadores, e validado empiricamente em um chip real, opera com base na maneira em que as cargas elétricas se comportam fisicamente dentro do chip e não na abstração conhecida como Eletrônica Digital, como é o caso de outros ataques por hardware. Não existe um contador lógico para disparar o ataque ao atingir um determinado valor numérico abstrato, mas sim um acúmulo gradual de carga em um par de capacitores espúrios através de correntes vazadas de outros elementos legítimos. Esse acúmulo só é induzido através da execução repetida de instruções específicas por um software agressor, o qual vai herdar o status de kernel code no momento em que a carga atingir o limiar projetado e provocar a transição do registrador. O ataque tem natureza digital no seu último estágio, a sobrescrita dos valores do registrador de segurança do processador, mas o gatilho é completamente analógico e viabilizado pelo afastamento temporário do sistema do comportamento ideal assumido pela abstração digital. Alguns poucos Volts no lugar errado e toda a sofisticada arquitetura de segurança do mais moderno sistema operacional vai pro saco. You are pwned.
Tanto a ameaça acidental exemplificada pelo caso da radiação cósmica quanto o ataque motivado e projetado do A2 constituem um lembrete pertinente dos limites dessa maravilhosa ferramenta cognitiva e conceitual que é a abstração. A moral da estória, já conhecida por todo bom engenheiro ou cientista, é que você deve entender bem os fundamentos dos seus modelos e as condições em que eles são válidos. Toda a ciência e engenharia - passada, presente ou futura - é feita essencialmente de aproximações dos fenômenos e sistemas reais. Escolha bem as suas de acordo com o problema a mão. E - ainda mais importante - saiba quando jogá-las fora e substituir por outras.