Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
sast-rules — Repositório de regras Semgrep selecionado para SAST do GitLab, fornecendo padrões de análise estática para detectar vulnerabilidades de segurança em várias linguagens de programação com integração CI/CD. | Kitploit
Ferramentas/GitLabGitLab/gitlab-org/security-products/sast-rules
Análise Estática de Código (SAST)Análise de VulnerabilidadesAnálise de CódigoDevSecOpsAprendizado e Educação
GitLabgitlab-org/security-products/sast-rules

sast-rules

Repositório de regras Semgrep selecionado para SAST do GitLab, fornecendo padrões de análise estática para detectar vulnerabilidades de segurança em várias linguagens de programação com integração CI/CD.

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório
2946há 6 diasRevisado pelo Kitploit

Regras do Semgrep

Este é o repositório central de regras do Semgrep que hospeda as regras do Semgrep para o analisador semgrep do GitLab.

O repositório está estruturado da seguinte forma:

root@kitploit:~
.
├── mappings
│   ├── find_sec_bugs.yml
│   ├── eslint.yml
│   └── ...
├── rules
│   ├── lpgl
│   │   ├── java
│   │   │   ├── webview
│   │   │   │   ├── rule-ignore_ssl_certificate_error.yml
│   │   │   │   ├── rule-ignore_ssl_certificate_error.java
│   │   │   │   └── ...
│   │   │   └── ...
│   │   ├── python
│   │   │   └── ...
│   │   └── ...
│   ├── lpgl-cc
│   │   ├── java
│   │   │   └── ...
│   │   └── ...
│   └── ...
├── c
│   ├── buffer
│   │   ├── rule-strcpy.yml
│   │   ├── test-strcpy.c
│   │   ├── rule-memcpy.yml
│   │   └── test-memcpy.c
│   └── ...
└── javascript
│   └── ...
└── ...

A estrutura acima segue o padrão:

root@kitploit:~
rules/<license>/<language>/<ruleclass>/rule-<rulename>\.(yml|<ext>)

onde:

  1. <license> é a licença de todas as regras abaixo
  2. <language> a linguagem de programação alvo
  3. <ruleclass> um nome descritivo para a classe de regras abaixo
  4. <rulename> um nome descritivo para a regra em si
  5. <ext> a extensão de arquivo usual para <language>

Regras mais antigas seguem o padrão <language>/<ruleclass>/rule-..., e o padrão mais novo acima deve ser preferido sempre que possível.

O diretório mappings inclui a configuração do pacote de regras.

Makefile

O Makefile define alguns alvos que são úteis ao trabalhar com regras:

root@kitploit:~
$ make help
TARGETS:
  test                  test all rules with Semgrep
  watch                 watch for file changes and auto-run affected tests
  help                  prints this message

Diretrizes de formatação

As regras contidas neste repositório devem aderir ao seguinte formato:

  • Use " para strings, caso contrário, o bloco literal YAML |
  • Sem colapso de elementos de array
  • comprimento máximo de linha/largura do texto: 100 caracteres
  • indentação: 2 espaços
  • toda regra deve ter um caso de teste correspondente
  • se fornecido, seção de comentários no topo do arquivo de regra
  • todo arquivo YAML começa com ---

Mapeamentos

O diretório de mapeamentos neste repositório contém arquivos de configuração YAML que mapeiam ids de analisadores nativos (por exemplo, Bandit, Brakeman, etc.) para as regras Semgrep correspondentes.

A intenção dos arquivos de mapeamento é, antes de tudo, separar informações específicas do analisador das regras reais e, em segundo lugar, fornecer uma maneira não intrusiva de gerar pacotes de regras ou conjuntos de regras (através dos limites de linguagem ou analisador) para diferentes propósitos.

Os arquivos de mapeamento estão localizados no diretório mappings/, onde o nome do arquivo se refere ao pacote de regras e/ou analisador que é representado pelo conjunto de regras usado no respectivo arquivo. Se você deseja que as regras sejam incluídas no conjunto de regras padrão do GitLab e a regra não se encaixa em um dos pacotes de regras (ou analisadores) já disponíveis no diretório mappings/, você pode adicionar seus mapeamentos ao arquivo mappings/gitlab_<license>_<language>.yml onde <license> é uma licença adequada ditada pela fonte da qual a regra é originada e <language> é um espaço reservado para a linguagem à qual a regra se refere.

Se você deseja integrar uma nova regra que foi desenvolvida do zero, pode adicionar um mapeamento correspondente ao arquivo mappings/gitlab_ee_<language>.yml. Ao determinar qual licença deve ser aplicada a uma regra específica que você está mapeando, consulte esta orientação interna.

Os mapeamentos também são usados para montar automaticamente pacotes de regras. O trecho abaixo ilustra um exemplo com arquivos de mapeamento para o analisador bandit. A seção native_id inclui algumas informações sobre o id do analisador nativo, ou seja, meta-informação que o analisador original (neste caso bandit) anexa ao achado que produz. Os mapeamentos de regras reais são definidos na seção mappings. Cada mapeamento mapeia um id de regra do analisador nativo (no exemplo abaixo B301) para um conjunto de arquivos semgrep neste repositório que se assemelham ou são idealmente de fato equivalentes a essa regra nativa específica.

root@kitploit:~
bandit:
  native_id:
    type: "bandit_test_id"
    name: "Bandit Test ID: $ID"
    value: "$ID"
  mappings:
  - id: "B301"
    rules:
    - path: "python/deserialization/rule-pickle"
      primary_id: "bandit.B301-1"
      id: "bandit.B301-1"
    - path: "python/deserialization/rule-cpickle"
      primary_id: "bandit.B301-2"
      id: "bandit.B301-2"
    - path: "python/deserialization/rule-dill"
      primary_id: "bandit.B301-3"
      id: "bandit.B301-3"
    - path: "python/deserialization/rule-shelve"
      primary_id: "bandit.B301-4"
      id: "bandit.B301-4"
  # ...

A anatomia de um arquivo de mapeamento é explicada em mais detalhes abaixo.

  1. id é usado para gerar identificadores de regra semgrep estáveis e únicos no pacote de regras semgrep que corresponde a um arquivo de mapeamento.
  2. primary_id ajuda a gerar identificadores primários de vulnerabilidade estáveis que são anexados às vulnerabilidades conforme são geradas pelo analisador Semgrep do GitLab (no gl-sast-report.json) para fins de deduplicação.
  3. native_id é a entrada que se assemelha exatamente à estrutura do identificador de vulnerabilidade como seria gerado pelo analisador nativo. Isso será adicionado ao gl-sast-report.json produzido pelo analisador Semgrep do GitLab e disponibilizado no Relatório de Vulnerabilidade.
  4. mappings inclui o id do analisador nativo (no caso acima B301 que se refere a uma das regras do analisador python bandit). O array rules aponta para arquivos no repositório aos quais esta regra se refere. Em outras palavras, a lógica de B301 é implementada nos quatro arquivos listados no trecho acima.

Usamos dois tipos diferentes de identificadores id e primary_id para suportar a divisão de regras: várias regras semgrep (id) podem ser mapeadas para uma única regra do analisador nativo (primary_id).

Fontes de dados

As regras e casos de teste neste repositório são parcialmente originados das fontes listadas abaixo:

  1. https://github.com/returntocorp/semgrep-rules
  2. https://github.com/PyCQA/bandit
  3. https://github.com/nodesecurity/eslint-plugin-security
  4. https://github.com/jsx-eslint/eslint-plugin-react
  5. https://github.com/david-a-wheeler/flawfinder/blob/master/flawfinder.py

Os detalhes estão listados nos cabeçalhos de todos os arquivos de regra e teste, incluindo as informações de licenciamento e a devida atribuição.

Contribuindo

Se você conhece um padrão que não está presente neste repositório ou refinamentos que poderiam ser aplicados às regras neste repositório, você pode contribuir abrindo uma issue, ou até mesmo submeter uma melhoria para os arquivos de regra/casos de teste neste repositório.

Versionamento

Aplicamos o seguinte esquema de versionamento semântico a este repositório:

  1. incremento de versão patch: para regras atualizadas/corrigidas/adicionadas.
  2. incremento de versão minor: mudanças de esquema YAML compatíveis com versões anteriores (por exemplo, adicionar/remover campos opcionais).
  3. incremento de versão major: mudanças de esquema YAML não compatíveis com versões anteriores (por exemplo, adicionar/remover campos obrigatórios)

Processo de liberação de regras SAST

Novas versões de regras SAST devem ser incorporadas ao analisador semgrep para entrar em vigor. Para solicitar uma nova versão do semgrep, crie uma issue de release usando as instruções no modelo de issue de release SAST.

Créditos

Gostaríamos de agradecer muito aos seguintes autores por suas valiosas contribuições.

AutorMRs/Issues
@masakura!99, !107
@niklas.volcz!183
@pieter39!668
Baixar ferramenta