News

C-to-Rust orientado por LLM. Não apenas uma boa ideia, um gênio ansioso para escapar

Opinião A ferrugem muda mundos. O minério de ferro que mineramos para alimentar a era industrial começou como átomos de ferro dissolvidos nos oceanos há dois bilhões de anos. Então a fotossíntese aconteceu, despejando oxigênio que enferrujou aquele ferro da água para os minerais sólidos que achamos tão úteis hoje. O mesmo está acontecendo com a linguagem de programação Rust, pois ela se torna o mecanismo de escolha para transformar código C pré-histórico em material seguro e de alto desempenho, adequado para o futuro.

Uma das entidades modernas que desempenha o papel de lodo borbulhante antigo é a DARPA, a Defense Advanced Research Projects Agency, a agência americana que se preocupa com o futuro da tecnologia guerreira. Ela sabe tão bem quanto qualquer um o quão falível o software pode prejudicar a doçura marcial. Ela quer muito limpar o código C. Para esse fim, ela tem propôs usar o aprendizado de máquina para analisar o material e distribuí-lo em baldes de Rust.

O pensamento é sólido. Ferramentas de modelo de linguagem grande (LLM) de propósito geral como ChatGPT e Gemini fazem um trabalho surpreendentemente bom como estão, então uma ferramenta especializada treinada e ajustada para esta tarefa é uma área atraente para investigar. Ainda não há um entendimento real da tendência dos LLMs de alucinar, mas isso não é exatamente desconhecido em desenvolvedores humanos e todos lidam com isso. Como diz o velho ditado: Berkeley nos deu Unix e ácido, e isso não é coincidência.

Mais sobriamente, assumindo que a tecnologia funciona, há uma classe de problemas com os quais ela não será capaz de lidar: e se o código-fonte não estiver disponível? Você não pode sonhar que em uma viagem de silício. A boa notícia é que não há necessidade de fazer isso. Descompilação é um processo de pegar um binário executável e reconstruir uma versão do código-fonte que pode ser examinada, editada e recompilada. É um processo forense bastante intensivo; o código compilado geralmente é despojado de rótulos, nomes e comentários legíveis por humanos. É preciso muita experiência e tempo para fazer engenharia reversa deles de volta ao código descompilado bruto. Não é um problema tão grande para uma ferramenta analítica que não se importa muito com o nome das coisas, mas em quais padrões elas se enquadram.

As coisas são facilitadas pela maneira como os compiladores produzem código compilado. Eles constroem sua saída a partir de blocos padrão de maneiras padrão, carne e bebida para um modelo treinado em grandes quantidades de dados com essas coisas em comum. É no mínimo intrigante pensar em uma ferramenta C-to-Rust com um front-end de descompilação. É ainda mais divertido quando você pensa que a mesma ideia funcionará para código escrito em qualquer linguagem, com o treinamento certo. A equivalência da máquina de Turing não é apenas uma boa ideia, é a lei.

Não vamos parar por aí. Vamos adicionar outra tecnologia madura e disseminada – Just In Time ou JIT. É o que transforma o JavaScript que seu navegador consome na versão binária executável que seu processador executa, e é similarmente parte das camadas de emulação e tradução do conjunto de instruções. Normalmente, os desenvolvedores executam o processo de compilação em seus computadores e distribuem o executável: o JIT move isso para sua própria máquina. Adicionar isso a um Rustifier descompilador cria um amplificador de segurança que não depende de ninguém mais decidir fazer o trabalho. Não importa o quão proprietário, antigo ou obscuro o código seja, isso o abrirá, o reconstruirá com mais segurança e permitirá que você continue com as coisas.

Há razões para pensar que isso nunca será praticável, razões para pensar que poderia, e duas boas perguntas sem resposta se isso funcionar. Os argumentos óbvios contra tentar isso são confiabilidade e recursos: pode-se confiar em um LLM com código crítico de segurança quando não sabemos como ele funciona e, neste caso de uso, não entenderemos os resultados, sejam eles bons ou ruins? Os motivos para otimismo aqui são o escopo restrito do problema e a especificidade dos dados de treinamento.

Os recursos são instáveis. A descompilação e a recompilação podem levar até sistemas poderosos à poeira. Existem muitas, muitas técnicas arquitetônicas e de implementação para acelerar isso: o JIT passou de melaço inutilizável para invisivelmente rápido. Além disso, se há uma coisa que não falta no mundo, são mecanismos aceleradores de IA. Ninguém sabe o quão bem os descompiladores controlados por LLM funcionarão. Não é nenhuma surpresa, dada a importância da descompilação para a análise de ameaças, que as pessoas estão começando a entender isso.

O que deixa apenas duas perguntas realmente boas. É legal e onde isso termina? A questão legal é como a questão em andamento e ainda não decidida de se o IP em dados de treinamento se estende à saída de um LMM. A Big Tech diz que não. Mas isso é muito mais picante, pois é em parte uma máquina para transformar código fechado em código aberto. A Big Tech não vai gostar disso. A Big Tech pode não ser capaz de fazer nada sobre isso, no entanto. Ei, mano, ouvimos que você gosta de disrupção.

A última e melhor pergunta é para onde isso leva? Automatizar e democratizar a criação e aplicação de patches de segurança é legal o suficiente por si só. O que a tecnologia subjacente está fazendo, no entanto, é simultaneamente transformar tudo em código aberto enquanto remove a única barreira enorme para o verdadeiro potencial do código aberto. O FOSS concede a todos o poder de mudar o software para se comportar como alguém quer e precisa, sem depender de decisões que outras pessoas tomam. Isso só funciona se você for um programador habilidoso que entende conjuntos de ferramentas. Não há muitos desses.

Esta ferramenta ainda imaginária, construída a partir de componentes muito reais, muda tudo isso. Um robô que pode envolver um LLM em torno do código para desfazê-lo, reescrevê-lo e reconstruí-lo pode fazer muitas alterações a pedido de um usuário não qualificado. Livre-se de opções indesejadas e altere o comportamento. Isso pode ser tão simples quanto fazer os menus parecerem e funcionarem como você gosta, ou tão interessante quanto remover a capacidade de um pacote de enviar dados de volta para um terceiro. Ou… é difícil prever as consequências de uma concessão tão grande de poderes para pessoas comuns.

Como um experimento mental, é uma maravilha. Como uma meta atingível por meio de tecnologias existentes e ao alcance, é um divisor de águas que reescreve o relacionamento entre pessoas e máquinas – e as empresas que buscam controlar ambas. Quando dizemos disrupção, mano, é isso mesmo que queremos dizer. ®

Source

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button