codesentry 0.1.11 → 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.
- package/README.md +89 -3
- package/dist/index.js +1688 -162
- package/package.json +7 -4
package/README.md
CHANGED
|
@@ -10,13 +10,13 @@ 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
|
-
- 🔌 **
|
|
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
|
|
|
17
17
|
## O que o CodeSentry faz
|
|
18
18
|
|
|
19
|
-
Rodando `codesentry scan` num projeto,
|
|
19
|
+
Rodando `codesentry scan` num projeto, três motores de análise trabalham
|
|
20
20
|
juntos e o resultado sai unificado em um único relatório:
|
|
21
21
|
|
|
22
22
|
- **Motor nativo** — regras próprias em TypeScript, sem dependências
|
|
@@ -29,6 +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) +
|
|
33
|
+
[NVD](https://nvd.nist.gov)) —
|
|
34
|
+
identifica vulnerabilidades conhecidas nas dependências reais do
|
|
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).
|
|
32
41
|
|
|
33
42
|
Cada achado no relatório mostra o arquivo, a linha, a severidade e qual
|
|
34
43
|
motor encontrou o problema (prefixo `semgrep/` para achados do Semgrep).
|
|
@@ -141,6 +150,8 @@ codesentry scan . --json
|
|
|
141
150
|
codesentry scan . --concurrency 4
|
|
142
151
|
codesentry scan . --config ./rules/security.yml
|
|
143
152
|
codesentry scan . --tests
|
|
153
|
+
codesentry scan . --no-nvd
|
|
154
|
+
codesentry scan . --no-deps
|
|
144
155
|
```
|
|
145
156
|
|
|
146
157
|
O Semgrep CE embutido é executado automaticamente depois das regras nativas,
|
|
@@ -148,6 +159,80 @@ usando um snapshot local do ruleset OWASP e `--metrics=off`. O comando não
|
|
|
148
159
|
consulta a Semgrep Registry, não envia métricas e não requer internet após a
|
|
149
160
|
instalação.
|
|
150
161
|
|
|
162
|
+
Por padrão, `scan` também roda a auditoria de dependências (`npm audit` +
|
|
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
|
|
171
|
+
OSV.dev conseguiu verificar de fato (`OSV.dev: 360/363 verificados`, por
|
|
172
|
+
exemplo — a diferença indica pacotes cuja consulta falhou, reportados
|
|
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.
|
|
210
|
+
|
|
211
|
+
### Versões e atualização dos motores
|
|
212
|
+
|
|
213
|
+
Use `codesentry version --engines` para auditar exatamente os componentes
|
|
214
|
+
embutidos na sua instalação. O comando não executa o Semgrep nem acessa a
|
|
215
|
+
rede; ele mostra a versão do CodeSentry, a versão do Semgrep CE e Python do
|
|
216
|
+
runtime da plataforma, e a proveniência do snapshot `p/owasp-top-ten`
|
|
217
|
+
(origem, data de captura, revisão upstream quando disponível e SHA-256).
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
codesentry version --engines
|
|
221
|
+
codesentry version --engines --json
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
O snapshot do ruleset é identificado pela versão do pacote publicada junto ao
|
|
225
|
+
CodeSentry e pelo SHA-256 do seu conteúdo. A Semgrep Registry não fornece
|
|
226
|
+
necessariamente um commit estável para um ruleset público; nesse caso, o hash
|
|
227
|
+
é o identificador imutável que permite comparar o conteúdo auditado.
|
|
228
|
+
|
|
229
|
+
**Política de atualização:** revisamos semanalmente novas versões do Semgrep
|
|
230
|
+
e alterações no `p/owasp-top-ten`; atualizações regulares são publicadas em
|
|
231
|
+
até 30 dias. Correções upstream classificadas como críticas ou que afetem a
|
|
232
|
+
integridade da análise têm prioridade para uma release em até 48 horas. Toda
|
|
233
|
+
release que atualizar um motor ou ruleset registra as versões e hashes nos
|
|
234
|
+
artefatos publicados.
|
|
235
|
+
|
|
151
236
|
`--concurrency <n>` limita o processamento paralelo do scanner nativo; use
|
|
152
237
|
apenas inteiros positivos. Sem valor, o limite é ajustado para a máquina
|
|
153
238
|
(`min(8, availableParallelism())`). Não há `--config` remoto: atualizações de
|
|
@@ -199,7 +284,8 @@ codesentry xss ./src --json # possíveis XSS (innerHTML, document.write
|
|
|
199
284
|
codesentry unsafe-sql ./src # SQL injection por concatenação
|
|
200
285
|
codesentry command-injection ./src # child_process com entrada não sanitizada
|
|
201
286
|
codesentry weak-hash-algorithm ./src # uso de MD5/SHA-1 para hashing sensível
|
|
202
|
-
codesentry dependency-audit . #
|
|
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
|
|
203
289
|
```
|
|
204
290
|
|
|
205
291
|
Assim como em `scan`, `--tests` inclui arquivos de teste na análise (por
|