codesentry 0.1.10 → 0.2.1

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 +58 -3
  2. package/dist/index.js +932 -208
  3. package/package.json +7 -4
package/README.md CHANGED
@@ -16,7 +16,7 @@ Semgrep CE para as linguagens suportadas por ele.
16
16
 
17
17
  ## O que o CodeSentry faz
18
18
 
19
- Rodando `codesentry scan` num projeto, dois motores de análise trabalham
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,12 @@ 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
+ 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).
32
38
 
33
39
  Cada achado no relatório mostra o arquivo, a linha, a severidade e qual
34
40
  motor encontrou o problema (prefixo `semgrep/` para achados do Semgrep).
@@ -140,6 +146,8 @@ codesentry scan ./src
140
146
  codesentry scan . --json
141
147
  codesentry scan . --concurrency 4
142
148
  codesentry scan . --config ./rules/security.yml
149
+ codesentry scan . --tests
150
+ codesentry scan . --no-deps
143
151
  ```
144
152
 
145
153
  O Semgrep CE embutido é executado automaticamente depois das regras nativas,
@@ -147,12 +155,55 @@ usando um snapshot local do ruleset OWASP e `--metrics=off`. O comando não
147
155
  consulta a Semgrep Registry, não envia métricas e não requer internet após a
148
156
  instalação.
149
157
 
158
+ 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
165
+ OSV.dev conseguiu verificar de fato (`OSV.dev: 360/363 verificados`, por
166
+ 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.
170
+
171
+ ### Versões e atualização dos motores
172
+
173
+ Use `codesentry version --engines` para auditar exatamente os componentes
174
+ embutidos na sua instalação. O comando não executa o Semgrep nem acessa a
175
+ rede; ele mostra a versão do CodeSentry, a versão do Semgrep CE e Python do
176
+ runtime da plataforma, e a proveniência do snapshot `p/owasp-top-ten`
177
+ (origem, data de captura, revisão upstream quando disponível e SHA-256).
178
+
179
+ ```bash
180
+ codesentry version --engines
181
+ codesentry version --engines --json
182
+ ```
183
+
184
+ O snapshot do ruleset é identificado pela versão do pacote publicada junto ao
185
+ CodeSentry e pelo SHA-256 do seu conteúdo. A Semgrep Registry não fornece
186
+ necessariamente um commit estável para um ruleset público; nesse caso, o hash
187
+ é o identificador imutável que permite comparar o conteúdo auditado.
188
+
189
+ **Política de atualização:** revisamos semanalmente novas versões do Semgrep
190
+ e alterações no `p/owasp-top-ten`; atualizações regulares são publicadas em
191
+ até 30 dias. Correções upstream classificadas como críticas ou que afetem a
192
+ integridade da análise têm prioridade para uma release em até 48 horas. Toda
193
+ release que atualizar um motor ou ruleset registra as versões e hashes nos
194
+ artefatos publicados.
195
+
150
196
  `--concurrency <n>` limita o processamento paralelo do scanner nativo; use
151
197
  apenas inteiros positivos. Sem valor, o limite é ajustado para a máquina
152
198
  (`min(8, availableParallelism())`). Não há `--config` remoto: atualizações de
153
199
  Semgrep e das regras OWASP chegam em novas releases do CodeSentry. Quando
154
200
  necessário, `--config` aceita exclusivamente um arquivo YAML local.
155
201
 
202
+ Por padrão, arquivos de teste não são analisados: nenhum diretório chamado
203
+ `tests`, `test` ou `__tests__` (em qualquer profundidade) e nenhum arquivo
204
+ com sufixo `.spec.*`/`.test.*` (em qualquer lugar, mesmo fora dessas pastas)
205
+ entra no scan. Use `--tests` para incluí-los.
206
+
156
207
  Em macOS, ARM e plataformas sem runtime publicado, o comando interrompe
157
208
  explicitamente em vez de declarar uma análise parcial como completa.
158
209
 
@@ -181,7 +232,7 @@ o scan completo (e sem o Semgrep, que só roda como parte de `scan`). Todos
181
232
  seguem o mesmo formato:
182
233
 
183
234
  ```bash
184
- codesentry <comando> [path] [--json]
235
+ codesentry <comando> [path] [--json] [--tests]
185
236
  ```
186
237
 
187
238
  Alguns exemplos:
@@ -193,9 +244,13 @@ codesentry xss ./src --json # possíveis XSS (innerHTML, document.write
193
244
  codesentry unsafe-sql ./src # SQL injection por concatenação
194
245
  codesentry command-injection ./src # child_process com entrada não sanitizada
195
246
  codesentry weak-hash-algorithm ./src # uso de MD5/SHA-1 para hashing sensível
196
- codesentry dependency-audit . # `npm audit` das dependências do projeto
247
+ codesentry dependency-audit . # `npm audit` + OSV.dev nas dependências do projeto (sem --tests: não lê arquivos-fonte)
197
248
  ```
198
249
 
250
+ Assim como em `scan`, `--tests` inclui arquivos de teste na análise (por
251
+ padrão são ignorados) — exceto em `dependency-audit`, que nunca lê
252
+ arquivos-fonte e por isso não tem essa flag.
253
+
199
254
  A lista completa (30+ comandos, um por regra) sai de `codesentry help` —
200
255
  mantê-la sempre em sincronia aqui manualmente não seria viável.
201
256