Na biblioteca de workshops para clientes SecRel de Snyk, temos um chamado Breaking AI. Este workshop aborda como assistentes generativos de IA, como copilot e codium, podem ajudar os desenvolvedores a escrever código com mais rapidez. A grande conclusão do workshop é que os assistentes de IA são como desenvolvedores juniores recém-saídos de seus campos de treinamento de codificação: super ansiosos e prestativos, mas - você realmente deseja verificar o código deles (sem sombra para desenvolvedores juniores - nós preciso deles, e eles são incríveis!). No workshop, mostramos como combinar assistentes de IA e Snyk oferece um superpoder: escrever código com rapidez e segurança.
Para citar um chef famoso, Snyk agora “aumentou o nível” com seu recurso Deep Code AI Fix. O Snyk Code sempre deu bons conselhos de correção quando encontra uma vulnerabilidade de segurança. Daria até três boas referências de outros projetos de código aberto com a mesma vulnerabilidade e mostraria como esses projetos corrigiram isso. Agora, graças aos dados cuidadosamente selecionados pela equipe de pesquisa de segurança de Snyk, um modelo híbrido de IA que combina o poder da IA generativa e simbólica, bem como modelos de aprendizado de máquina, Snyk agora pode corrigir automaticamente muitas vulnerabilidades de segurança comuns, diretamente do conforto do seu computador. IDE favorito.
Neste blog, demonstrarei como você pode aproveitar melhor as vantagens do Deep Code AI Fix (DCAIF) em um projeto de exemplo Java que usamos em nossos workshops. O código fonte pode ser encontrado aqui. NOTA: Este projeto é propositalmente vulnerável de várias maneiras e não é adequado para uso em nenhum ambiente de produção.
Se você já participou de uma conferência de tecnologia ou falou em uma, sabe que um dos aspectos mais desafiadores é criar e apresentar a programação.
O aplicativo de referência é uma versão terrível disso (NÃO sou um bom desenvolvedor front-end!), mas é útil para mostrar como o código pode funcionar tecnicamente e ser inseguro ao mesmo tempo.
É um aplicativo Spring Boot que usa o mecanismo de template Thymeleaf. Na inicialização, ele gera palestrantes aleatórios, títulos de palestras e dados de descrição de palestras usando a popular biblioteca faker. Todos os títulos e descrições das palestras vêm do texto do livro O Guia do Mochileiro das Galáxias. NOTA: Os títulos e descrições podem não ser 100% seguros para o trabalho. Você foi avisado!
Cada palestrante gerado para o evento também possui uma página dedicada onde você pode ver uma lista de suas palestras na conferência. Vamos nos concentrar nesta parte do aplicativo.
Para compilar e executar o aplicativo, execute o seguinte:
mvn clean install mvn spring-boot:run
Ao executar o aplicativo, além do banner usual do Spring Boot e outras saídas, você verá algo assim:
Access talks for heath.davis at: http://localhost:8081/talks?username=heath.davis Access talks for russell.bernier at: http://localhost:8081/talks?username=russell.bernier Access talks for kenyetta.jones at: http://localhost:8081/talks?username=kenyetta.jones Access talks for howard.bailey at: http://localhost:8081/talks?username=howard.bailey Access talks for buddy.jast at: http://localhost:8081/talks?username=buddy.jast Access talks for jeanice.kertzmann at: http://localhost:8081/talks?username=jeanice.kertzmann Access talks for deborah.hamill at: http://localhost:8081/talks?username=deborah.hamill Access talks for horacio.renner at: http://localhost:8081/talks?username=horacio.renner Access talks for winfred.schuster at: http://localhost:8081/talks?username=winfred.schuster Access talks for tommie.hane at: http://localhost:8081/talks?username=tommie.hane Access talks for micah at: http://localhost:8081/talks?username=micah
NOTA: Não será exatamente assim, pois os palestrantes e suas palestras são gerados aleatoriamente cada vez que você inicia o aplicativo.
Se você clicar ou copiar/colar um dos links, verá a página do palestrante com uma lista de suas palestras:
Dê uma olhada em TalkController.java. É assim que a página de um palestrante é renderizada. Você consegue identificar a vulnerabilidade?
Não queremos que você confie apenas nos seus olhos! Queremos que os desenvolvedores ajam rapidamente E escrevam código seguro.
Eu uso o IntelliJ Idea para escrever meus aplicativos Java. Eu também uso a extensão IDE do Snyk. A boa notícia é que existem extensões Snyk IDE para todos os IDEs populares, suportando uma ampla variedade de linguagens de programação.
Se quiser acompanhar e não tiver uma conta Snyk, você pode criar uma gratuitamente aqui.
Eu mencionei que este aplicativo tem muitas vulnerabilidades? Isso porque o usamos em nossos workshops. Aquele em que quero focar é aquele em TalkController.java:
Todas essas informações são muito úteis para resolver o problema. No entanto, observe um pequeno ícone de raio (⚡️) à esquerda da vulnerabilidade no nº 1. Isso indica que esta vulnerabilidade pode ser corrigida automaticamente.
Se você passar o mouse sobre o ondulado vermelho, verá a opção para Corrigir este problema:
Antes de analisarmos o resultado do Deep Code AI Fix, vamos ver o que o copiloto faria por nós.
Aqui está o prompt que dei ao copiloto na linha 42 e o código que ele injeta:
// guard against XSS username = username.replaceAll("", ">");
Isso pode funcionar contra ataques ingênuos, mas funcionará contra todos os tipos de ataques XSS? Não tenho tanta certeza. Na verdade, quando executo novamente a varredura Snyk, a vulnerabilidade XSS ainda está lá.
Vamos dar uma olhada na correção do Snyk:
String usernameStr = "" HtmlUtils.htmlEscape(username) "'s talks"; ================================================
Agora, isso eu gosto. Ele usa uma abordagem idiomática e esperada com uma biblioteca Spring Boot integrada: HtmlUtils. Estou confiante de que isso irá limpar completamente a entrada: nome de usuário. Uma nova varredura do Snyk mostra que a vulnerabilidade não existe mais.
Perfeito, de fato! A correção automática do Snyk não apenas resolveu a vulnerabilidade, mas também o fez de uma forma que corresponde à estrutura em uso - Spring Boot neste caso.
Nesta postagem, mostrei como o Deep Code AI Fix de Snyk vai além de apenas conselhos de correção e pode fazer uma correção em seu nome. Você também pode confirmar o benefício da correção verificando que a vulnerabilidade de segurança original não existe mais.
Na Snyk, adoramos os assistentes de IA, mas eles não são muito bons em segurança. Nossa pesquisa mostra que as IAs da Geração por aí tendem a gerar código inseguro na mesma proporção que os humanos – cerca de 40%. Isso faz sentido, já que soluções puras de Gen AI, como o Copilot, treinam seus modelos principalmente no código existente. A abordagem híbrida de Snyk, que inclui IA simbólica, Gen AI, aprendizado de máquina e treinamento com curadoria de nossa equipe de segurança, fornece aos resultados uma abordagem que prioriza a segurança.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3