Skip to main content

Cartão do aplicativo: recursos de IA do GitHub para segurança e qualidade

Use com responsabilidade os recursos de segurança e qualidade de código do GitHub com tecnologia de IA, entendendo suas finalidades, capacidades e limitações.

O que é um Cartão de Aplicação?

GitHub’s application and platform cards are intended to help you understand how our AI technology works, the choices application owners can make that influence application performance and behavior, and the importance of considering the whole application, including the technology, the people, and the environment. Application cards are created for AI applications and platform cards are created for AI platform services. These resources can support the development or deployment of your own applications and can be shared with users or stakeholders impacted by them.

As part of its commitment to responsible AI, GitHub adheres to Microsoft's six core principles: fairness, reliability and safety, privacy and security, inclusiveness, transparency, and accountability. These principles are embedded in the Responsible AI Standard, which guides teams in designing, building, and testing AI applications. Application and Platform Cards play a key role in operationalizing these principles by offering transparency around capabilities, intended uses, and limitations. For further insight, readers are encouraged to explore Microsoft’s Responsible AI Transparency Report and Termos do GitHub.

1. Visão geral

A plataforma de segurança e qualidade do GitHub inclui vários recursos de IA que ajudam os desenvolvedores a encontrar e corrigir vulnerabilidades de segurança, detectar segredos vazados e melhorar a qualidade do código. Este cartão de aplicativo aborda as seguintes experiências:

  • Copilot Autofix para análise de código: gera automaticamente sugestões de correção para alertas do CodeQL em pull requests e no branch padrão.
  • Detecção de segredo genérico: usa um modelo para identificar segredos não estruturados no código-fonte que a correspondência determinística de padrões não pode encontrar.
  • Gerador de regex para padrões personalizados: Usa IA para gerar expressões regulares para padrões personalizados de detecção de segredos com base em descrições em linguagem natural.
  • Qualidade de código do GitHub: destaca problemas de qualidade de código e oferece sugestões de correção com tecnologia LLM em pull requests e no branch padrão.

Copilot Autofix é uma expansão da análise de código que fornece aos usuários recomendações direcionadas para ajudar a corrigir alertas da análise de código, evitando a criação de novas vulnerabilidades de segurança. As correções potenciais são geradas automaticamente por LLMs (grandes modelos de linguagem) usando dados da base de código e da análise de verificação de código. Copilot Autofix está disponível para a análise do CodeQL e não requer uma assinatura do GitHub Copilot.

Os usuários do code scanning já podem ver alertas de segurança em seus pull requests. No entanto, os desenvolvedores geralmente têm pouco treinamento em codificação segura, portanto, corrigir esses alertas requer um esforço substancial. Copilot Autofix reduz a barreira para adoção ao combinar informações sobre práticas recomendadas com detalhes da base de código e do alerta para sugerir uma possível correção. Em vez de começar com uma pesquisa de informações sobre a vulnerabilidade, o desenvolvedor começa com uma sugestão de código que demonstra uma possível solução para sua base de código. O desenvolvedor avalia a possível correção para determinar se é a melhor solução para sua base de código e garantir que ela mantenha o comportamento pretendido.

A detecção genérica de segredos da verificação de segredos é uma expansão da verificação de segredos com tecnologia de IA que identifica segredos não estruturados no código-fonte ou em outras áreas do GitHub e gera um alerta. Usuários do GitHub Secret Protection e do GitHub Advanced Security já podem receber alertas de varredura de segredos para padrões de parceiros ou personalizados encontrados em seu código-fonte, mas segredos não estruturados não são facilmente identificáveis. A detecção de segredos usa modelos para identificar esses segredos. Quando uma descoberta é detectada, um alerta é exibido na lista "Genérica" de alertas de verificação secreta (na guia Segurança do repositório, organização ou empresa), para que os mantenedores e gerentes de segurança possam examinar o alerta e, quando necessário, remover a credencial ou implementar uma correção. A detecção de segredo genérico não requer uma assinatura de GitHub Copilot.

O gerador de expressões regulares para padrões personalizados da detecção de segredos possibilita definir padrões personalizados de detecção de segredos sem precisar conhecer expressões regulares. Os usuários inserem uma descrição de linguagem natural do que desejam detectar, juntamente com cadeias de caracteres de exemplo opcionais, e o gerador produz até três expressões regulares candidatas. Esses padrões podem ser validados por meio do mecanismo de execução a seco antes de serem implantados como padrões personalizados. O gerador de expressão regular não requer uma assinatura de GitHub Copilot.

O GitHub Code Quality ajuda os usuários a melhorar a confiabilidade do código, a capacidade de manutenção e a saúde geral do projeto ao apresentar feedback acionável e oferecer correções automáticas para problemas identificados em pull requests e no branch padrão. Quando a Qualidade do Código está habilitada, dois tipos de análise são executados: as consultas de qualidade CodeQL identificam problemas com a manutenção, a confiabilidade ou o estilo de código e a análise alimentada por LLM fornece insights adicionais além do que os mecanismos determinísticos podem encontrar. Quando um problema de qualidade é identificado, o Copilot Autofix sugere uma correção relevante. Em solicitações de pull, os resultados são exibidos como comentários deixados pelo github-code-quality bot. Na ramificação padrão, as descobertas com tecnologia LLM são exibidas no painel Descobertas de IA, na aba Segurança e qualidade.

O principal idioma com suporte para os recursos de IA do GitHub Code Security é o inglês.

2. Termos-chave

A lista a seguir fornece um glossário dos principais termos relacionados aos recursos de IA do GitHub Code Security:

  • CodeQL: o mecanismo de análise de código semântico do GitHub para identificar vulnerabilidades de segurança no código-fonte.
  • Copilot Autofix: o recurso de GitHub alimentado por LLM que gera automaticamente sugestões de correção para alertas de verificação de código. Copilot Autofix está disponível para a análise do CodeQL e não exige uma assinatura do GitHub Copilot.
  • LLM (modelo de linguagem grande): um tipo de rede neural treinada em um grande corpo de dados de texto que pode gerar, analisar e transformar linguagem natural e código. Copilot Autofix usa um ou mais LLMs para processar alertas de análise de código e gerar sugestões de correção.
  • Detecção com IA para verificação de segredos: recursos com tecnologia de IA que ampliam a verificação de segredos, incluindo a detecção genérica de segredos. Não requer uma assinatura GitHub Copilot.
  • Detecção de segredo genérico: identificação de IA de segredos não estruturados (como senhas) que não são cobertos por padrões personalizados ou parceiros. A detecção de segredo genérico usa modelos para verificar cadeias de caracteres semelhantes a senha no código-fonte.
  • Padrão personalizado: uma expressão regular definida pelo usuário usada pela verificação secreta para detectar segredos que correspondem a um formato específico. O gerador de expressão regular de padrão personalizado ajuda a criar esses padrões a partir de descrições de linguagem natural.
  • SARIF: Formato de intercâmbio de resultados de análise estática — o formato padrão que o CodeQL usa para relatar descobertas de verificação de código, incluindo localizações de alerta e descrições.
  • GitHub Qualidade do Código: um recurso que apresenta problemas de qualidade de código e oferece correções alimentadas por LLM. A Qualidade do Código combina consultas de qualidade CodeQL com análises de LLM para identificar problemas de manutenção, confiabilidade e estilo.
  • Resultados de IA: o painel na aba Segurança e qualidade em que os resultados de Qualidade do Código com tecnologia de LLM para o branch padrão são exibidos.

3. Principais funcionalidades ou capacidades

Os principais recursos e capacidades descritos aqui mostram o que os recursos de IA do GitHub Code Security foram desenvolvidos para fazer e como funcionam nas tarefas compatíveis.

  • Sugestões automatizadas de correção para alertas de segurança: o Copilot Autofix gera automaticamente sugestões de alterações de código para alertas do CodeQL encontrados em pull requests e na ramificação padrão. Cada sugestão inclui a alteração de código proposta e uma explicação de linguagem natural da correção.
  • Tradução de alerta para correção: o Copilot Autofix traduz a descrição e a localização de um alerta de verificação de código em alterações acionáveis no código que podem resolver a vulnerabilidade de segurança subjacente. O sistema usa dados de alertas do CodeQL no formato SARIF, trechos de código contextuais e texto de ajuda da consulta para gerar correções relevantes.
  • Multi-language support: Copilot Autofix dá suporte à geração de correção para um subconjunto de consultas incluídas nos pacotes de consultas CodeQL padrão e estendidos por segurança para C#, C/C++, Go, Java/Kotlin, Swift, JavaScript/TypeScript, Python, Ruby e Rust. Para obter mais informações sobre esses conjuntos de consultas, consulte Conjuntos de consultas CodeQL.
  • Detecção de senhas com tecnologia de IA: a detecção genérica de segredos do Secret scanning analisa o conteúdo do repositório usando IA para identificar segredos não estruturados (como senhas) que a correspondência determinística de padrões não consegue encontrar. Os segredos detectados são exibidos como alertas na lista de alertas da verificação de segredos na guia Segurança e qualidade.
  • Geração de expressões regulares com tecnologia de IA: o gerador de expressões regulares da detecção de segredos usa uma descrição em linguagem natural do padrão que você deseja detectar, juntamente com sequências de caracteres de exemplo opcionais, e produz até três possíveis expressões regulares. Cada resultado inclui uma descrição de linguagem simples gerada por IA e você pode validar padrões por meio de uma execução seca antes da implantação.
  • Detecção de problemas de qualidade de código: o GitHub Code Quality executa consultas de qualidade do CodeQL no código alterado em pull requests e periodicamente na branch padrão inteira. Essas consultas identificam problemas de manutenção, confiabilidade e estilo.
  • Análise da qualidade do código com tecnologia LLM: após cada push para o ramo padrão, um LLM analisa os arquivos alterados recentemente em busca de problemas de qualidade além daqueles que mecanismos determinísticos conseguem detectar. As descobertas são exibidas no painel de descobertas de IA .
  • Sugestões automatizadas de correção para resultados de qualidade: Quando um problema de qualidade é detectado por qualquer um dos dois tipos de análise, o Copilot Autofix gera uma sugestão de correção. Em solicitações de pull, o github-code-quality bot posta um comentário com a alteração sugerida.

4. Utilizações pretendidas

Os recursos de IA do GitHub Code Security podem ser usados em diversos cenários em vários setores. Alguns exemplos de casos de utilização incluem:

  • Acelerando a correção de vulnerabilidades de segurança: Use o Copilot Autofix para gerar rapidamente sugestões de correção para alertas do CodeQL, reduzindo o tempo e o conhecimento especializado necessários para resolver problemas de segurança encontrados durante a análise de código.
  • Reduzindo a barreira para a codificação segura: o Copilot Autofix ajuda desenvolvedores com pouco treinamento em codificação segura. Em vez de pesquisar vulnerabilidades de forma independente, os desenvolvedores começam com uma sugestão de código que demonstra uma possível solução para sua base de código.
  • Simplificando a revisão de pull requests: quando a varredura de código encontra alertas em um pull request, o Copilot Autofix fornece sugestões de correção em linha, ajudando os desenvolvedores a resolver problemas de segurança antes da mesclagem do código.
  • Corrigindo alertas na branch padrão: o Copilot Autofix também pode gerar sugestões de correção para alertas existentes na branch padrão, ajudando as equipes a reduzir seu acúmulo de resultados de segurança.
  • Detectando senhas vazadas no código-fonte: use a detecção genérica de segredos para encontrar segredos não estruturados em repositórios que não são cobertos por padrões de verificação de segredos de parceiros e personalizados.
  • Triagem de credenciais com alertas contextuais: Quando uma senha é detectada, um alerta com contexto da detecção por IA é exibido na lista de alertas, permitindo que mantenedores e gerentes de segurança analisem a ocorrência e tomem as medidas necessárias.
  • Criando padrões personalizados de detecção de segredos sem conhecimento de expressões regulares: use o gerador de expressões regulares para definir padrões personalizados descrevendo o que você deseja detectar em linguagem natural, eliminando a necessidade de escrever expressões regulares manualmente.
  • Validando padrões gerados antes da implantação: depois de gerar expressões regulares, use o mecanismo de execução seca para testar padrões em seu repositório ou organização antes de implantá-los como padrões personalizados.
  • Identificando problemas de qualidade de código em todo um repositório: Use o GitHub Code Quality para identificar problemas de manutenibilidade, confiabilidade e estilo, para que desenvolvedores e administradores possam priorizar rapidamente as áreas de risco.
  • Acelerando a correção de problemas de qualidade do código: o Copilot Autofix sugere correções para problemas de qualidade, combinando informações sobre práticas recomendadas com detalhes da base de código para propor uma possível correção diretamente no pull request ou no painel de achados da IA.
  • Fornecendo feedback prático sobre pull requests: o bot github-code-quality publica comentários com correções sugeridas nos pull requests, ajudando os desenvolvedores a resolver problemas de qualidade antes da mesclagem.

5. Modelos e dados de preparação

O Copilot Autofix usa APIs internas do GitHub Copilot que fazem interface com os grandes modelos de linguagem, os quais produzem tanto correções de código sugeridas quanto texto explicativo para essas correções.

A detecção de segredo genérico usa modelos para verificar se há segredos não estruturados.

O gerador de expressão regular de padrão personalizado usa LLMs e a API GitHub Copilot para gerar expressões regulares que correspondem a descrições e exemplos fornecidos pelo usuário.

A análise com tecnologia de LLM do GitHub Code Quality usa os modelos de linguagem do Copilot para analisar arquivos alterados recentemente e identificar problemas de qualidade. O componente de consultas de qualidade CodeQL não usa uma LLM. Copilot Autofixo para descobertas de Qualidade de Código usa o mesmo pipeline LLM que Copilot Autofixo para verificação de código.

Para obter uma comparação dos modelos disponíveis para Copilot, consulte Comparação de modelos de IA. Para obter a lista completa de modelos com suporte, consulte Modelos de IA com suporte no GitHub Copilot. Para obter informações sobre onde os modelos estão hospedados, consulte Hospedagem de modelos para GitHub Copilot. Para saber mais sobre os dados usados para treinar os modelos de base por trás dos recursos de segurança e qualidade do GitHub, consulte Em quais dados o GitHub Copilot foi treinado? nas Perguntas frequentes do GitHub Copilot.

Os dados processados pelo Copilot Autofix não são utilizados para fins de treinamento de LLM. O uso desse recurso é regido pelos termos e condições existentes associados ao GitHub Advanced Security. Para obter mais informações, consulte Termos do GitHub para produtos e recursos adicionais na documentação Gratuita, Pro e Equipe.

6. Desempenho

Quando o Copilot Autofix está habilitado para um repositório, os alertas de verificação de código são processados por meio do fluxo a seguir:

  1. Processamento de entrada: Quando um alerta de análise de código é identificado, o GitHub reúne os dados relevantes em um prompt para o modelo de linguagem. Esses dados incluem:
    • Dados de alerta do CodeQL no formato SARIF
    • Código da versão atual da ramificação, incluindo pequenos trechos de código em torno de cada local de origem, local de destino e qualquer local mencionado na mensagem de alerta ou no caminho de fluxo
    • As primeiras ~10 linhas de cada arquivo envolvido em qualquer um desses locais
    • Texto de ajuda para a consulta CodeQL que identificou o problema
  2. Análise do modelo de linguagem: o prompt montado é enviado para o modelo de linguagem, que analisa o contexto de alerta, a estrutura de código e as informações de ajuda de consulta.
  3. Geração de resposta: o modelo gera uma correção potencial, incluindo a alteração de código proposta e um texto explicativo que descreve a correção.
  4. Formatação de saída: a sugestão é armazenada dentro do back-end de verificação de código e exibida como uma sugestão embutida na página de detalhes da solicitação de pull ou do alerta. Nenhuma interação do usuário é necessária além de habilitar a verificação de código na base de código e criar uma solicitação de pull.

Diferenças por experiência

A detecção de segredos por IA processa entradas e produz saídas da seguinte maneira:

  1. Processamento de entrada: a entrada é limitada a texto (normalmente código) que um usuário enviou para um repositório. O sistema fornece esse texto para o modelo, juntamente com um meta prompt solicitando que o modelo encontre segredos não estruturados no escopo da entrada. O usuário não interage diretamente com o modelo. Vários modelos podem ser usados para validar uma única descoberta.
  2. Análise de modelo: o modelo verifica cadeias de caracteres que se assemelham a segredos não estruturados, como senhas.
  3. Geração de resposta: o modelo verifica se as cadeias de caracteres identificadas incluídas na resposta realmente existem na entrada.
  4. Formatação de saída: as cadeias de caracteres detectadas são exibidas como alertas na página de alertas de verificação secreta em uma lista separada dos alertas de verificação de segredo regulares. Cada alerta observa que ele foi detectado usando IA. Para obter informações sobre como exibir alertas para segredos genéricos, consulte Exibindo e filtrando alertas do escaneamento de segredos.

O gerador regex de padrão personalizado processa a entrada e produz a saída da seguinte maneira:

  1. Processamento de entrada: os usuários inserem uma descrição de texto de linguagem natural do padrão que desejam detectar, juntamente com cadeias de caracteres de exemplo opcionais que devem ser correspondidas.
  2. Language model analysis: a descrição e os exemplos são enviados para a LLM por meio da API GitHub Copilot, que gera expressões regulares correspondentes à entrada.
  3. Geração de resposta: o modelo retorna até três expressões regulares candidatas. Cada resultado inclui uma descrição de linguagem simples gerada por IA. Alguns resultados podem ser bastante semelhantes, e alguns podem não corresponder a todas as instâncias do padrão pretendido.
  4. Formatação de saída: os resultados são exibidos no formulário de definição de padrão personalizado. Quando você clica em Usar resultado, a expressão e todos os exemplos são copiados para o formulário padrão personalizado principal, em que você pode executar uma execução seca para validar o padrão em seu repositório ou organização. Para obter mais informações, consulte Definir padrões personalizados para a verificação de segredo.

Análise de qualidade de código do GitHub com tecnologia LLM processa a entrada e produz a saída da seguinte maneira:

  1. Processamento de entrada: após cada push para o branch padrão, os arquivos alterados recentemente são combinados com outras informações contextuais relevantes para formar um prompt. O prompt é enviado para um modelo de linguagem Copilot.
  2. Análise do modelo de linguagem: o modelo de linguagem analisa o código para problemas de manutenção, confiabilidade e outros problemas de qualidade.
  3. Geração de resposta: o modelo gera uma resposta que pode incluir sugestões de linguagem natural e sugestões de código vinculadas a linhas específicas.
  4. Formatação de saída: As descobertas são exibidas no painel Descobertas de IA na guia Segurança e qualidade. Quando a Qualidade do Código oferece uma sugestão de código, ela é apresentada como uma alteração sugerida que pode ser aplicada com apenas alguns cliques.

Copilot Autofix para resultados de qualidade do código em pull requests:

  1. Processamento da entrada: as descobertas de qualidade de código da análise do CodeQL em um pull request são enviadas à LLM juntamente com o contexto do código circundante.
  2. Análise do modelo de linguagem: O LLM analisa o problema identificado e gera uma possível correção.
  3. Geração de resposta: se a LLM puder gerar uma correção, ela produzirá uma alteração de código sugerida.
  4. Formatação de saída: o github-code-quality bot posta um comentário na solicitação de pull com a alteração sugerida. Os usuários também podem solicitar a geração de correção automática para resultados na ramificação padrão.

7. Limitações

Entender as limitações dos recursos de IA do GitHub Code Security é crucial para determinar se esses recursos são usados dentro de limites seguros e eficazes. Embora incentivemos os clientes a aproveitar GitHub recursos de IA de Segurança de Código em suas soluções ou aplicativos inovadores, é importante observar que GitHub recursos de IA de Segurança de Código não foram projetados para todos os cenários possíveis. Incentivamos os usuários a se referirem a Termos do GitHub , bem como às seguintes considerações ao escolher um caso de uso:

  • Não determinismo: o Copilot Autofix usa um modelo de IA generativa que não é determinístico. Mesmo com o mesmo alerta e código, ele pode não produzir uma sugestão viável ou a sugestão pode variar entre as tentativas.
  • Complexidade e contexto do problema: Alguns alertas de segurança, como aqueles que exigem rastrear o fluxo de dados em uma base de código complexa com vários arquivos ou aqueles que representam falhas lógicas sutis, podem ser difíceis para o modelo resolver.
  • Tamanho do arquivo: se o código afetado estiver dentro de um arquivo ou repositório muito grande, o contexto fornecido para o LLM poderá ser truncado. Quando o contexto for limitado, o recurso não tentará uma correção.
  • Cobertura de linguagens e frameworks: Embora o Copilot Autofix ofereça suporte a uma lista crescente de linguagens e alertas do CodeQL, ele não abrange todos os tipos possíveis de alerta ou linguagem.
  • Capacidade operacional do LLM: a geração da correção está sujeita à capacidade operacional do LLM. Se nenhuma sugestão estiver disponível ou se uma correção sugerida falhar no teste interno, nenhuma sugestão será exibida.
  • Dados centrados em inglês: o sistema usa principalmente dados em inglês, incluindo os prompts, o código nos conjuntos de dados de treinamento do LLM e os casos de teste usados para avaliação interna. As sugestões podem ter uma taxa de êxito menor para código-fonte e comentários em outros idiomas.
  • Erros de sintaxe: o sistema pode sugerir correções que não são alterações de código sintaticamente corretas.
  • Erros de localização: o sistema pode sugerir correções em locais incorretos. Aceitar essa correção sem editar o local pode introduzir um erro de sintaxe.
  • Erros semânticos: o sistema pode sugerir correções que são sintaticamente válidas, mas que alteram a semântica do programa. O sistema não entende a intenção do programador.
  • Vulnerabilidades de segurança e correções enganosas: o sistema pode sugerir correções que não corrijam a vulnerabilidade subjacente ou introduzem novas vulnerabilidades.
  • Correções parciais: o sistema pode sugerir correções que apenas abordam parcialmente a vulnerabilidade de segurança ou apenas preservam parcialmente a funcionalidade de código pretendida.
  • Alterações de dependência: as correções sugeridas podem incluir adicionar ou atualizar dependências de software. O sistema não sabe quais versões de dependência têm suporte ou são seguras e pode sugerir dependências fabricadas publicadas em nomes estatisticamente prováveis. Sempre verifique as alterações de dependência antes de mesclar.

Limitações específicas da detecção de segredos com IA

  • Relatório incompleto: a detecção de segredo de IA pode perder instâncias de credenciais verificadas em um repositório. A detecção de IA para segredos melhorará ao longo do tempo. Você tem a responsabilidade final de garantir a segurança do seu código.
  • Código de teste: a detecção de segredos com IA pode não detectar segredos no código de teste. A verificação secreta ignora as detecções quando determinadas condições são atendidas, como:
    • O caminho do arquivo contém "test", "mock" ou "spec"
    • A extensão do arquivo é .cs, .go, .java, .js, .kt, .php, .py, .rb, .scala, .swift ou .ts.

Limitações específicas para o gerador regex de padrão personalizado

  • Cobertura de padrão incompleta: expressões regulares geradas podem não corresponder a todos os tokens pretendidos. A qualidade dos resultados depende da especificidade e da clareza da descrição de entrada.
  • Resultados inválidos ou inadequados: o gerador pode produzir expressões regulares inválidas ou inadequadas para o caso de uso pretendido.
  • Somente padrões estruturados: o gerador de expressão regular só é adequado para criar padrões para detectar formatos estruturados e previsíveis, não correspondência de texto de forma livre.
  • Desempenho centrado em inglês: o modelo foi treinado predominantemente em conteúdo em inglês. O desempenho pode ser menor ao fornecer prompts de entrada de idioma natural em idiomas diferentes do inglês.
  • Resultados semelhantes: algumas das expressões regulares retornadas podem ser bastante semelhantes umas às outras, reduzindo o número efetivo de padrões candidatos distintos.

Limitações específicas do GitHub Code Quality

  • Limitações compartilhadas com a revisão de código do Copilot: a análise baseada em LLM do Code Quality usa o mesmo modelo de linguagem subjacente e o mesmo mecanismo de análise da revisão de código do Copilot. Ele compartilha limitações semelhantes, incluindo detecção incompleta, falsos positivos, precisão nas sugestões de código e possíveis vieses. Para obter mais informações, consulte Cartão de aplicativo: GitHub Copilot Agents.
  • Correção automática por melhor esforço: o Copilot Autofix para resultados de Qualidade do Código funciona em regime de melhor esforço e não há garantia de que gere uma correção para cada resultado.
  • Revisão obrigatória: você deve sempre revisar as sugestões do Copilot Autofix e editar as alterações conforme necessário antes de aceitá-las.

8. Avaliações

As avaliações de desempenho e segurança avaliam se as aplicações de IA estão a funcionar de forma fiável e segura ao examinar fatores como a fundamentação, a relevância e a coerência, ao mesmo tempo que identificam os riscos de gerar conteúdo prejudicial. As avaliações a seguir foram realizadas com componentes de segurança já em vigor, que também são descritos em 9. Componentes de segurança e mitigações.

Avaliações de desempenho e qualidade

Os recursos de IA de segurança do GitHub são avaliados em suas superfícies compatíveis usando uma combinação de benchmarks padrão do setor (como o SWE-Bench) e conjuntos de avaliação desenvolvidos internamente. As tarefas de benchmark são originárias de repositórios públicos de software livre e cenários sintéticos; nenhuma consulta de usuário real ou código do cliente é usado sem permissão. Cada avaliação inclui várias execuções independentes para considerar o não determinismo nas saídas do modelo. As principais métricas incluem taxa de resolução (percentual de tarefas concluídas com êxito), eficiência do token, latência e confiabilidade de chamada de ferramenta. Os modelos são reavaliados quando as atualizações são feitas e monitoradas continuamente na produção por meio de taxas de erro, latência de resposta e padrões de uso agregados.

Métodos de avaliação de desempenho e qualidade

Novos modelos passam por um processo de avaliação em etapas antes da implantação em Segurança de Código, Qualidade do Código e Proteção secreta. As equipes de integração executam conjuntos de testes de benchmark específicos para sua área de atuação, testando o modelo em tarefas de programação representativas, como correções de bugs, geração de código e refatoração de vários arquivos. Os resultados são revisados em relação às linhas de base estabelecidas e aos modelos de produção existentes. Os modelos devem atingir ou superar o desempenho de referência em métricas-chave, como taxa de resolução, eficiência no uso de tokens e latência, antes de avançarem para a próxima etapa.

Avaliações de risco e segurança

A avaliação de potenciais riscos associados ao conteúdo gerado pela IA é essencial para salvaguardar os riscos de conteúdo com diferentes graus de gravidade. Isto inclui avaliar a predisposição de uma aplicação de IA para gerar conteúdo prejudicial ou testar vulnerabilidades para ataques de jailbreak. Para GitHub, realizamos avaliações de desempenho, incluindo aquelas adaptadas para fins de codificação de Microsoft Foundry:

  • Ódio e injustiça
  • Sexual
  • Violência
  • Automutilação
  • Material protegido
  • Desbloqueio
  • Vulnerabilidade de código

Dados de avaliação para qualidade e segurança

Os nossos dados de avaliação são personalizados para avaliar o desempenho da aplicação de IA em áreas-chave de segurança e qualidade, simulando cenários e riscos do mundo real. Começamos identificando aspectos de avaliação relevantes de preocupação com base em pesquisas multidisciplinares e na contribuição de especialistas. Essas questões são traduzidas em objetivos de avaliação direcionados e orientam a formulação das métricas de avaliação. Para segurança, criamos prompts adversários para elicitar respostas indesejáveis ou em casos extremos, os quais são avaliados por avaliadores assistidos por IA treinados para verificar a conformidade com os padrões do GitHub. Em qualidade, criamos prompts com base em rubricas relevantes para cenários como a avaliação de aplicações e agentes de geração aumentada por recuperação (RAG). Os conjuntos de dados são coletados de diversas fontes, incluindo conjuntos de dados sintéticos e públicos para simular cenários de usuários reais. Usando os conjuntos de dados coletados, ambas as avaliações passam por refinamento iterativo e alinhamento humano para melhorar a eficácia e a confiabilidade da métrica. Essa metodologia forma a base de avaliações repetíveis e rigorosas que refletem como os clientes usam avaliações para criar uma IA melhor.

Avaliações personalizadas

GitHub usa uma estrutura de testes automatizada para monitorar continuamente a qualidade das sugestões do Copilot Autofix. O agente de teste inclui um conjunto de mais de 2.300 alertas de um conjunto diversificado de repositórios públicos no qual o código destacado tem cobertura de teste. As sugestões para esses alertas são testadas para determinar o quanto um desenvolvedor precisaria editá-los antes de emiti-los na base de código. Para muitos dos alertas de teste, as sugestões geradas pelo LLM podem ser aplicadas como estão para corrigir o alerta, continuando a passar com êxito em todos os testes de CI existentes.

GitHub testa a eficácia das sugestões mesclando todas as alterações sugeridas, não editadas, antes de executar a verificação de código e os testes de unidade do repositório no código resultante:

  1. O alerta de verificação de código foi corrigido pela sugestão?
  2. A correção introduziu novos alertas de verificação de código?
  3. A correção introduziu erros de sintaxe que a verificação de código pode detectar?
  4. A correção alterou a saída de algum dos testes do repositório?

Além disso, o GitHub faz verificações por amostragem em muitas sugestões bem-sucedidas e confirma se elas corrigem o alerta sem introduzir novos problemas. Quando uma ou mais dessas verificações falham, a triagem manual mostrou que, em muitos casos, a correção proposta estava quase correta, mas precisava de algumas pequenas modificações que um usuário pudesse identificar e executar manualmente.

O sistema também é submetido a testes de estresse para identificar possíveis danos (red teaming), e um sistema de filtragem aplicado ao LLM ajuda a evitar que sugestões potencialmente prejudiciais sejam exibidas aos usuários.

A detecção de segredos por IA foi submetida ao red teaming de IA Responsável, e o GitHub continua a monitorar a eficácia e a segurança do recurso com o passar do tempo.

Os resultados personalizados do gerador regex padrão são validados por meio do mecanismo de execução a seco, que permite que os usuários testem padrões gerados em seu repositório ou organização antes de implantá-los como padrões personalizados. Essa etapa de validação interna ajuda a garantir que as expressões regulares geradas sejam executadas conforme o esperado antes de serem usadas na produção.

A análise baseada em LLM do GitHub Code Quality compartilha a estrutura de avaliação da revisão de código do Copilot. As sugestões de correção automática do Copilot para resultados de Qualidade do Código seguem a mesma estrutura de teste do Copilot Autofix para varredura de código.

9. Componentes de segurança e mitigações

  • Human-in-the-loop review: Copilot Autofix apresenta todas as sugestões como alterações de código propostas que exigem revisão e aceitação explícitas do desenvolvedor antes de serem aplicadas. Os desenvolvedores devem avaliar cada sugestão e verificar se ela mantém o comportamento pretendido da base de código.
  • Filtragem de conteúdo: um sistema de filtragem na LLM detecta e impede que sugestões potencialmente prejudiciais sejam exibidas aos usuários. O sistema é submetido a testes de estresse por meio de exercícios de red teaming para identificar possíveis vulnerabilidades.
  • Teste de qualidade interno: as sugestões que falham no teste interno não são exibidas aos usuários. A geração de correção só é mostrada quando o sistema tem confiança suficiente na qualidade da sugestão.
  • Opt-in/opt-out controls: Copilot Autofixo é permitido por padrão e habilitado para cada repositório usando o CodeQL, mas os administradores podem desabilitar Copilot Autofixo nos níveis corporativo, organizacional e repositório. Para obter mais informações, consulte Desabilitar a correção automática do Copilot para alertas de segurança de verificação de código.
  • Sem treinamento com dados do cliente: os dados processados pelo Copilot Autofix não são usados para treinar LLMs. O uso desse recurso é regido pelos termos e condições existentes associados ao GitHub Advanced Security.
  • False positive feedback loop: Quando os usuários fecham um alerta de detecção de segredo genérico e marcam o motivo como "Falso positivo", GitHub usa o volume falso positivo para melhorar o modelo. GitHub não tem acesso aos literais secretos em si.
  • Validação de execução a seco para padrões gerados: expressões regulares geradas do gerador regex de padrão personalizado devem passar por uma etapa de validação de execução seca antes da implantação. Os usuários importam explicitamente um resultado para o formulário de padrão personalizado e testam-no em seu repositório ou organização, garantindo que os padrões sejam executados conforme o esperado antes de serem usados na produção.
  • Ação explícita do usuário necessária: o gerador regex não implanta padrões automaticamente. Os usuários devem clicar em Usar resultado para copiar uma expressão gerada no formulário de padrão personalizado e, em seguida, salvar e habilitar manualmente o padrão.
  • Mecanismo de feedback para qualidade do código: os usuários podem fornecer feedback sobre as sugestões de qualidade do código usando os botões de polegar para cima e polegar para baixo nos comentários do bot github-code-quality, ajudando o GitHub a melhorar a qualidade das sugestões.
  • Disponibilidade restrita à versão prévia: o GitHub Code Quality está disponível em versão prévia, permitindo que as organizações avaliem o recurso antes de uma adoção mais ampla.

10. Práticas recomendadas para implantar e adotar recursos de IA do GitHub para segurança de código

A IA responsável é um compromisso compartilhado entre GitHub e seus clientes. Embora GitHub crie aplicativos de IA com segurança, imparcialidade e transparência no núcleo, os clientes desempenham um papel fundamental na implantação e no uso dessas tecnologias de forma responsável dentro de seus próprios contextos. Para apoiar esta parceria, oferecemos as seguintes melhores práticas para implementadores e utilizadores finais para ajudar os clientes a implementar a IA responsável de forma eficaz.

  • Exercise cuidado e avaliar resultados ao usar recursos de IA de Segurança GitHub para decisões conseqüentes ou em domínios confidenciais: As decisões conseqüentes são aquelas que podem ter um impacto legal ou significativo no acesso de uma pessoa à educação, emprego, plataformas financeiras, benefícios governamentais, saúde, moradia, seguro, plataformas legais, ou que podem resultar em danos físicos, psicológicos ou financeiros. Domínios confidenciais, como plataformas financeiras, saúde e moradia, exigem cuidados específicos devido ao potencial de impacto desproporcional em diferentes grupos de pessoas. Ao utilizar a IA para decisões nestas áreas, certifique-se de que os intervenientes afetados conseguem compreender como as decisões são tomadas, tomar decisões de recurso e atualizar quaisquer dados de entrada relevantes.
  • Avalie as considerações legais e regulatórias: Os clientes precisam avaliar possíveis obrigações legais e regulatórias específicas ao usar quaisquer plataformas e soluções de IA, que podem não ser apropriadas para uso em todos os setores ou cenários. Além disso, as plataformas ou soluções de IA não são projetadas e podem não ser usadas de maneiras proibidas em termos de serviço aplicáveis e códigos de conduta relevantes.
  • Sempre examine as sugestões antes de aceitar: avalie a alteração de código proposta para garantir que ela corrija corretamente a vulnerabilidade de segurança sem alterar o comportamento pretendido do código. Ter uma boa cobertura de teste ajuda a verificar se uma correção não altera o comportamento da base de código.
  • Verifique se os testes de CI são aprovados: depois de confirmar uma correção sugerida ou uma correção modificada, sempre verifique se o CI (teste de integração contínua) para a base de código continua a ser aprovado e se o alerta é mostrado como resolvido antes de mesclar sua solicitação de pull.
  • Examine as alterações de dependência com cuidado: se uma correção sugerida incluir alterações nas dependências, verifique se as dependências adicionadas ou atualizadas são seguras, compatíveis e mantêm o comportamento pretendido da base de código. Use soluções de gerenciamento de dependência, como a API e a ação de revisão de dependência, para avaliar as alterações. Para obter mais informações, consulte Análise de dependência.
  • Trate adequadamente os alertas de falso positivo: como a detecção de segredos por IA pode gerar mais falsos positivos do que a detecção de padrões de parceiros, revise a precisão de cada alerta. Quando você verificar que um alerta é um falso positivo, feche o alerta e marque o motivo como "Falso positivo" na interface do usuário do GitHub. Esses comentários ajudam a melhorar o modelo.
  • Valide padrões regex gerados com uma execução seca: ao usar o gerador regex padrão personalizado, sempre execute uma execução seca entre repositórios representativos antes de implantar um padrão gerado em toda a organização.
  • Seja específico com descrições: para melhorar a qualidade das expressões regulares geradas, seja o mais específico possível com suas descrições de linguagem natural e inclua diversas cadeias de caracteres de exemplo que representam os padrões que você deseja detectar.
  • Examine todos os padrões gerados: examine cuidadosamente cada uma das expressões regulares geradas, incluindo as descrições de linguagem simples geradas por IA, e considere modificar os resultados para atender melhor às suas necessidades. Você permanece sendo o responsável final por quaisquer padrões personalizados que decida usar.
  • Examine as conclusões de Qualidade do Código antes de aplicar correções: sempre verifique a precisão e a aplicabilidade das descobertas de Qualidade de Código e sugestões de autofixo em sua base de código antes de aceitá-las.
  • Forneça comentários sobre sugestões de Qualidade do Código: use os botões para cima e para baixo nos github-code-quality comentários do bot para ajudar a melhorar a ferramenta e resolver quaisquer preocupações ou limitações.
  • Exercite a supervisão humana quando apropriado: a supervisão humana é uma proteção importante ao interagir com aplicativos de IA. Embora melhoremos continuamente nossos aplicativos de IA, a IA ainda pode cometer erros. As saídas geradas podem ser imprecisas, incompletas, tendenciosas, desalinhadas ou irrelevantes para os objetivos pretendidos. Isto pode acontecer devido a várias razões, como ambiguidade nas entradas ou limitações dos modelos subjacentes. Dessa forma, os usuários devem examinar as respostas geradas por GitHub recursos de IA de Segurança de Código e verificar se correspondem às suas expectativas e requisitos.
  • Esteja ciente do risco de dependência excessiva: A dependência excessiva da IA ocorre quando os usuários aceitam saídas de IA incorretas ou incompletas, principalmente porque erros em saídas de IA podem ser difíceis de detectar. Para o utilizador final, a sobre-confiança pode resultar numa diminuição da produtividade, perda de confiança, abandono de aplicações, perda financeira, danos psicológicos, danos físicos, entre outros. (por exemplo, um médico aceita uma saída de IA incorreta).
  • Tenha cuidado ao criar IA agente em domínios confidenciais: Os usuários devem ter cuidado ao projetar e/ou implantar aplicativos de IA agente em domínios confidenciais em que as ações do agente são irreversíveis ou altamente conseqüentes. Precauções adicionais também devem ser tomadas ao criar IA agente autônoma, conforme descrito mais adiante no Termos do GitHub.
  • Habilite os testes de CI em pull requests: verifique se os testes de integração contínua estão implementados antes de habilitar o Copilot Autofix, para que os requisitos funcionais sejam verificados após os desenvolvedores aplicarem as correções.
  • Use soluções de gerenciamento de dependências: habilite a revisão de dependências em pull requests para identificar alterações potencialmente arriscadas nas dependências introduzidas por sugestões do Autofix.
  • Analise as métricas da visão geral de segurança: use o painel de visão geral de segurança da sua organização para ver o número total de sugestões do Copilot Autofix geradas em pull requests abertas e fechadas em um determinado período. Para obter mais informações, consulte Exibir insights de segurança.
  • Avalie o volume de falsos positivos na detecção de segredos: avalie o volume de falsos positivos e estabeleça processos de triagem para a lista de alertas.
  • Monitore o volume e a qualidade das sugestões de Qualidade de Código: avalie o volume e a qualidade das sugestões de Qualidade de Código e ative ou desative o recurso conforme apropriado para sua organização.

11. Saiba mais sobre os recursos de IA do GitHub Security

Para obter orientações adicionais sobre o uso responsável de recursos de IA de segurança GitHub, recomendamos revisar a seguinte documentação:

Saiba mais sobre IA responsável