Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
sast-rules — Repository di regole Semgrep curate per GitLab SAST, che fornisce pattern di analisi statica per rilevare vulnerabilità di sicurezza in diversi linguaggi di programmazione con integrazione CI/CD. | Kitploit
Strumenti/GitLabGitLab/gitlab-org/security-products/sast-rules
Analisi Statica del Codice (SAST)Analisi delle VulnerabilitàAnalisi del CodiceDevSecOpsApprendimento e Formazione
GitLabgitlab-org/security-products/sast-rules

sast-rules

Repository di regole Semgrep curate per GitLab SAST, che fornisce pattern di analisi statica per rilevare vulnerabilità di sicurezza in diversi linguaggi di programmazione con integrazione CI/CD.

Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
29466 giorni faRevisionato da Kitploit

Regole Semgrep

Questo è il repository centrale delle regole Semgrep che ospita le regole Semgrep per l'analizzatore Semgrep di GitLab.

Il repository è strutturato come segue:

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
│   └── ...
└── ...

La struttura sopra segue il modello:

root@kitploit:~
rules/<licenza>/<linguaggio>/<classe_regola>/rule-<nome_regola>\.(yml|<estensione>)

dove:

  1. <licenza> è la licenza di tutte le regole sottostanti
  2. <linguaggio> il linguaggio di programmazione target
  3. <classe_regola> un nome descrittivo per la classe di regole sottostanti
  4. <nome_regola> un nome descrittivo per la regola effettiva
  5. <estensione> l'estensione file usuale per <linguaggio>

Le regole più vecchie seguono il modello <linguaggio>/<classe_regola>/rule-..., mentre quello più recente sopra dovrebbe essere preferito quando possibile.

La directory mappings include la configurazione del rule-pack.

Makefile

Il Makefile definisce alcuni target utili quando si lavora sulle regole:

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

Linee guida per la formattazione

Le regole contenute in questo repository devono rispettare il seguente formato:

  • Usare " per le stringhe, altrimenti il blocco letterale YAML |
  • Nessun collasso di elementi array
  • lunghezza massima riga/larghezza testo: 100 caratteri
  • indentazione: 2 spazi
  • ogni regola deve avere un corrispondente caso di test
  • se fornita, sezione commenti all'inizio del file della regola
  • ogni file YAML inizia con ---

Mappings

La directory mappings in questo repository contiene file di configurazione YAML che mappano gli ID degli analizzatori nativi (es. Bandit, Brakeman, ecc.) alle corrispondenti regole Semgrep.

L'intenzione dei file di mapping è, prima di tutto, separare le informazioni specifiche dell'analizzatore dalle regole effettive e, in secondo luogo, fornire un modo non intrusivo per generare rule-pack o set di regole (attraverso confini di linguaggio o analizzatore) per scopi diversi.

I file di mapping si trovano sotto la directory mappings/ dove il nome del file si riferisce al rulepack e/o all'analizzatore rappresentato dall'insieme di regole utilizzate nel rispettivo file. Se si desidera che le regole siano incluse nel ruleset standard di GitLab e la regola non rientra in uno dei rule-pack (o analizzatori) già disponibili nella directory mappings/, è possibile aggiungere i propri mapping al file mappings/gitlab_<licenza>_<linguaggio>.yml dove <licenza> è una licenza adeguata dettata dalla fonte da cui proviene la regola e <linguaggio> è un segnaposto del linguaggio a cui la regola si riferisce.

Se si desidera integrare una nuova regola sviluppata da zero, è possibile aggiungere un mapping corrispondente al file mappings/gitlab_ee_<linguaggio>.yml. Nel determinare quale licenza applicare a una particolare regola che si sta mappando, fare riferimento a questa guida interna.

I mapping vengono utilizzati anche per assemblare automaticamente i rule-pack. Lo snippet seguente illustra un esempio con file di mapping per l'analizzatore bandit. La sezione native_id include alcune informazioni sull'ID dell'analizzatore nativo, ovvero meta-informazioni che l'analizzatore originale (in questo caso bandit) allega al risultato che produce. I mapping effettivi delle regole sono definiti nella sezione mappings. Ogni mapping mappa un ID di regola dell'analizzatore nativo (nell'esempio sotto B301) a un insieme di file semgrep in questo repository che assomigliano, o sono idealmente de facto equivalenti, a quella particolare regola nativa.

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"
  # ...

L'anatomia di un file di mapping è spiegata più in dettaglio di seguito.

  1. id viene utilizzato per generare identificatori di regole semgrep stabili e univoci nel rule-pack semgrep che corrisponde a un file di mapping.
  2. primary_id aiuta a generare identificatori primari di vulnerabilità stabili che vengono allegati alle vulnerabilità man mano che vengono generate dall'analizzatore Semgrep di GitLab (in gl-sast-report.json) per scopi di deduplicazione.
  3. native_id è la voce che assomiglia esattamente alla struttura dell'identificatore di vulnerabilità così come sarebbe generato dall'analizzatore nativo. Questo verrà aggiunto al gl-sast-report.json prodotto dall'analizzatore Semgrep di GitLab e reso disponibile nel Report di Vulnerabilità.
  4. mappings include l'ID dell'analizzatore nativo (nel caso sopra B301 che si riferisce a una delle regole dell'analizzatore python bandit). L'array rules punta ai file nel repository a cui questa regola si riferisce. In altre parole, la logica di B301 è implementata nei quattro file elencati nello snippet sopra.

Utilizziamo due diversi tipi di identificatori id e primary_id per supportare lo split delle regole: più regole semgrep (id) possono essere mappate a una singola regola dell'analizzatore nativo (primary_id).

Fonti dati

Le regole e i casi di test in questo repository provengono in parte dalle fonti elencate di seguito:

  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

I dettagli sono elencati nelle intestazioni di tutti i file di regole e test, inclusi le informazioni sulla licenza e l'attribuzione corretta.

Contribuire

Se conosci un pattern che non è presente in questo repo o miglioramenti che potrebbero essere applicati alle regole in questo repository, puoi contribuire aprendo un issue, o anche inviare un miglioramento ai file delle regole/casi di test in questo repository.

Versionamento

Applichiamo il seguente schema di versionamento semantico a questo repository:

  1. incremento di versione patch: per regole aggiornate/corrette/aggiunte.
  2. incremento di versione minor: modifiche allo schema YAML retrocompatibili (ad esempio, aggiunta/rimozione di campi opzionali).
  3. incremento di versione major: modifiche allo schema YAML non retrocompatibili (ad esempio, aggiunta/rimozione di campi obbligatori)

Processo di rilascio delle regole SAST

Le nuove versioni delle regole SAST devono essere incorporate nell'analizzatore semgrep per avere effetto. Per richiedere un nuovo rilascio di semgrep, crea un issue di rilascio utilizzando le istruzioni nel modello di issue di rilascio SAST.

Crediti

Ringraziamo molto i seguenti autori per i loro preziosi contributi.

AutoreMR/Issue
@masakura!99, !107
@niklas.volcz!183
@pieter39!668
Scarica lo strumento