codesentry 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +57 -16
  2. package/dist/index.js +1135 -127
  3. package/package.json +4 -4
package/README.md CHANGED
@@ -10,7 +10,7 @@ Semgrep CE para as linguagens suportadas por ele.
10
10
 
11
11
  - 🔎 **Dois motores num só comando** — regras próprias em TS/JS + Semgrep CE (OWASP Top 10) para dezenas de outras linguagens.
12
12
  - 📦 **Uma instalação, zero fricção** — `npm install -g codesentry` e pronto: sem Python, Docker, Semgrep ou conta em lugar nenhum.
13
- - 🔌 **100% offline depois de instalado** — nunca consulta a Semgrep Registry nem envia métricas.
13
+ - 🔌 **Análise de código offline** — nunca consulta a Semgrep Registry nem envia métricas; a auditoria de dependências, que usa serviços públicos, pode ser desativada com `--no-deps`.
14
14
  - 🪟🐧 **Windows e Linux nativamente** — sem WSL, sem container.
15
15
  - 📊 **Console, JSON ou Markdown** — saída pronta tanto para ler no terminal quanto para plugar em CI.
16
16
 
@@ -29,12 +29,15 @@ juntos e o resultado sai unificado em um único relatório:
29
29
  as linguagens que o Semgrep suporta (não só JS/TS), cobrindo os riscos
30
30
  do OWASP Top 10 de forma mais ampla que regras hand-rolled sozinhas
31
31
  conseguiriam.
32
- - **Auditoria de dependências** (`npm audit` + [OSV.dev](https://osv.dev))
32
+ - **Auditoria de dependências** (`npm audit` + [OSV.dev](https://osv.dev) +
33
+ [NVD](https://nvd.nist.gov)) —
33
34
  identifica vulnerabilidades conhecidas nas dependências reais do
34
- projeto (via `package-lock.json`), com a sugestão de correção vindo
35
- diretamente do banco consultado. Roda por padrão a partir desta versão
36
- e exige rede; use `--no-deps` para um scan 100% offline. Ver
37
- [ADR 0005](docs/adr/0005-osv-dependency-database.md).
35
+ projeto (via `package-lock.json`). O OSV identifica versões afetadas e
36
+ corrigidas; quando seus aliases contêm CVEs, o NVD enriquece o mesmo
37
+ finding com CVSS, CWE, referências e dados da CISA. Roda por padrão e
38
+ exige rede; use `--no-nvd` para manter npm + OSV sem enriquecimento ou
39
+ `--no-deps` para um scan 100% offline. Ver [ADR 0005](docs/adr/0005-osv-dependency-database.md)
40
+ e [ADR 0006](docs/adr/0006-nvd-enrichment.md).
38
41
 
39
42
  Cada achado no relatório mostra o arquivo, a linha, a severidade e qual
40
43
  motor encontrou o problema (prefixo `semgrep/` para achados do Semgrep).
@@ -147,6 +150,7 @@ codesentry scan . --json
147
150
  codesentry scan . --concurrency 4
148
151
  codesentry scan . --config ./rules/security.yml
149
152
  codesentry scan . --tests
153
+ codesentry scan . --no-nvd
150
154
  codesentry scan . --no-deps
151
155
  ```
152
156
 
@@ -156,17 +160,53 @@ consulta a Semgrep Registry, não envia métricas e não requer internet após a
156
160
  instalação.
157
161
 
158
162
  Por padrão, `scan` também roda a auditoria de dependências (`npm audit` +
159
- OSV.dev) e funde os achados no mesmo relatório — isso exige `npm` no `PATH`
160
- e acesso à rede. Use `--no-deps` para pular essa etapa e manter o scan
161
- 100% offline (CI sem egress, ambientes air-gapped). Ver
162
- [ADR 0005](docs/adr/0005-osv-dependency-database.md).
163
-
164
- O console mostra quantos pacotes o `npm audit` cobriu e quantos deles o
163
+ OSV.dev + NVD) e funde os achados no mesmo relatório — isso exige `npm` no
164
+ `PATH` e acesso à rede. O OSV é a fonte principal: o NVD é consultado somente
165
+ para aliases `CVE-` retornados pelo OSV e uma falha do NVD nunca remove o
166
+ finding. Use `--no-nvd` para desativar apenas o enriquecimento ou `--no-deps`
167
+ para pular toda a auditoria e manter o scan 100% offline (CI sem egress,
168
+ ambientes air-gapped).
169
+
170
+ O console mostra quantos pacotes do lockfile foram considerados e quantos o
165
171
  OSV.dev conseguiu verificar de fato (`OSV.dev: 360/363 verificados`, por
166
172
  exemplo — a diferença indica pacotes cuja consulta falhou, reportados
167
- também como aviso). No relatório Markdown gerado automaticamente (mais de
168
- 20 problemas), a lista completa de dependências verificadas no OSV.dev
169
- (`nome@versão`) aparece numa seção própria ao final do arquivo.
173
+ também como aviso). Quando houver CVEs, mostra ainda a cobertura NVD separando
174
+ registros enriquecidos, sem resultado, falhas e cache hits. No relatório
175
+ Markdown gerado automaticamente (mais de 20 problemas), a lista completa de
176
+ dependências verificadas no OSV.dev (`nome@versão`) aparece numa seção própria.
177
+
178
+ ### Chave opcional do NVD
179
+
180
+ A integração funciona sem autenticação. Para maior capacidade de consulta,
181
+ solicite gratuitamente uma chave no formulário oficial
182
+ [Request an API Key](https://nvd.nist.gov/developers/request-an-api-key),
183
+ confirme a solicitação recebida por e-mail e configure `NVD_API_KEY` no
184
+ ambiente antes de executar o CodeSentry.
185
+
186
+ Linux/macOS:
187
+
188
+ ```bash
189
+ export NVD_API_KEY="sua-chave"
190
+ codesentry scan .
191
+
192
+ # Ou somente para uma execução:
193
+ NVD_API_KEY="sua-chave" codesentry dependency-audit .
194
+ ```
195
+
196
+ PowerShell:
197
+
198
+ ```powershell
199
+ $env:NVD_API_KEY = "sua-chave"
200
+ codesentry scan .
201
+ ```
202
+
203
+ A chave é enviada apenas no header `apiKey`; não é adicionada à URL, ao cache,
204
+ a logs ou aos relatórios. O CodeSentry não carrega arquivos `.env`
205
+ automaticamente. Sem chave, as consultas são serializadas com intervalo
206
+ mínimo de 6,1 segundos; com chave, 610 ms. Respostas bem-sucedidas ficam em
207
+ cache por 24 horas e respostas sem resultado por 1 hora. O cache fica no
208
+ diretório de cache do usuário, nunca no projeto analisado. Timeout, rate limit
209
+ ou indisponibilidade do NVD aparecem como aviso e não interrompem o scan.
170
210
 
171
211
  ### Versões e atualização dos motores
172
212
 
@@ -244,7 +284,8 @@ codesentry xss ./src --json # possíveis XSS (innerHTML, document.write
244
284
  codesentry unsafe-sql ./src # SQL injection por concatenação
245
285
  codesentry command-injection ./src # child_process com entrada não sanitizada
246
286
  codesentry weak-hash-algorithm ./src # uso de MD5/SHA-1 para hashing sensível
247
- codesentry dependency-audit . # `npm audit` + OSV.dev nas dependências do projeto (sem --tests: não lê arquivos-fonte)
287
+ codesentry dependency-audit . # npm audit + OSV.dev + NVD (sem --tests: não lê arquivos-fonte)
288
+ codesentry dependency-audit . --no-nvd # mantém npm + OSV e desativa só o NVD
248
289
  ```
249
290
 
250
291
  Assim como em `scan`, `--tests` inclui arquivos de teste na análise (por