Observatório de segurança de versões · v0.7.2
Saiba o que a postura de segurança da sua instância Git realmente diz.
O VersionSec revisa uma instância Gitea ou Forgejo que você possui ou está expressamente autorizado a avaliar. Ele apenas lê; nunca altera nada. A revisão de configuração e a do runner rodam totalmente offline, sem nenhuma requisição de rede.
- somente leitura
- um alvo autorizado
- determinístico
- Gitea e Forgejo
- MD / JSON / SARIF
Apache-2.0 - sem conta, sem painel hospedado, sem telemetria.
$ versionsec scan \
--url https://git.example.com \
--authorized --product gitea \
--format md,json,sarif
FG-VER PASS 1.27.3 confirmed
FG-CVE-27771 PASS fixed in this version
FG-ANON WARN anonymous API reachable
FG-REG PASS OCI root requires auth
FG-SIGNIN WARN repo browser is public
# 22 stable IDs · md + json + sarif written
- versão atual
- v0.7.2
- verificações
- 22 IDs estáveis
- testes
- 433 aprovados
- proveniência
- atestação assinada
- licença
- Apache-2.0
Perguntas de postura normalmente respondidas de memória
A maioria das instâncias auto-hospedadas é configurada uma vez e depois considerada segura indefinidamente. O VersionSec transforma quatro perguntas recorrentes em evidências que você pode guardar, comparar e entregar a um auditor.
A versão em execução está realmente afetada?
A postura de versão é avaliada contra avisos nomeados; uma versão desconhecida é relatada como desconhecida, nunca silenciosamente como aprovada.
O que um visitante anônimo alcança?
Um conjunto limitado de caminhos permitidos é consultado apenas com GET, e o status exatamente observado é o que é relatado.
A configuração corresponde ao que acreditamos?
Um snapshot de configuração anonimizado é revisado totalmente offline, sem tocar na instância.
O que um job de CI pode fazer com o host?
Modo privilegiado, socket do Docker, montagens do host, modo de rede e tempo de vida das credenciais são avaliados a partir de um snapshot declarado.
Quatro modos de revisão, um relatório determinístico
Cada modo produz a mesma estrutura de relatório, mantendo os resultados comparáveis ao longo do tempo.
Avaliação ao vivo
Um alvo por execução, apenas requisições GET contra uma lista fechada de caminhos. Sem escrita, sem mudança de estado, sem descoberta de outros hosts.
- FG-VER
- FG-ANON
- FG-HTTP
- FG-REG
- FG-SIGNIN
Postura de versão frente a avisos
Avisos nomeados avaliados contra a versão confirmada pelo operador: afetada, corrigida ou desconhecida, dito explicitamente.
- FG-CVE-27771
- FG-CVE-78433
- FG-FJ-TEMPLATE-20260910
Revisão de configuração offline
Revisa um snapshot anonimizado fornecido por você. Zero requisições de rede, também adequada onde um scan ao vivo não é permitido.
- FG-CONFIG-REGISTRATION
- FG-CONFIG-SIGNIN
- FG-CONFIG-PRIVACY
- FG-CONFIG-MFA
Revisão offline do runner do Actions
Revisa um snapshot de runner declarado contra um schema fechado. A severidade decorre da confiança declarada, não apenas da versão.
- FG-RUNNER-PRIVILEGED
- FG-RUNNER-DOCKER
- FG-RUNNER-VOLUMES
- FG-RUNNER-NETWORK
Versões qualificadas, não suporte irrestrito
Gitea e Forgejo têm provedores separados, com verificações próprias. Estas são exatamente as versões testadas - não uma promessa para todas as versões das duas linhas.
Outras versões costumam funcionar, mas não são apresentadas como verificadas.
Como uma execução acontece
Declarar o alvo
Você indica uma instância e seu produto, e confirma que está autorizado a avaliá-la.
Coleta limitada
Apenas caminhos permitidos são consultados, com GET. Os modos offline leem um arquivo e não enviam nada.
Avaliação determinística
Cada verificação retorna PASS, FAIL, WARN, NOT_APPLICABLE ou UNKNOWN. Falta de evidência nunca é PASS.
Relatório e exportação
Markdown para pessoas, JSON para pipelines, SARIF 2.1.0 para análise de código. IDs estáveis.
Evidências e proveniência
Os artefatos publicados são os que a CI construiu. A proveniência se verifica com um único comando, e uma cópia adulterada é recusada.
$ gh attestation verify \
versionsec-0.7.2-py3-none-any.whl \
--repo gexiro-global/versionsec
# wheel sha256
ea7d40357d808ed490113a62b6dae7fe
4af7e655b61c687c77689b4041828f5d
# sdist sha256
fcbacb335a17d43436c819507fdb968a
12ff0754644ea6ee7e0e73fc5221b79d
Proveniência de build assinada
Ambos os artefatos carregam uma atestação Sigstore gerada pela CI do projeto.
Hashes publicados
Os SHA-256 do wheel e do sdist acompanham a release e coincidem com os objetos atestados.
Testes do contrato de release
Cada comando documentado é executado como um subprocesso real.
Identificadores estáveis
IDs de achados e de schema não mudam entre releases por motivo de marca.
Formatos de saída
Markdown
Relatório legível com a tabela completa de achados, para pessoas e para tickets.
JSON
Documento estável legível por máquina, com identificador de schema versionado.
SARIF 2.1.0
Formato padrão de troca de análise estática, para painéis e CI.
VersionSec antes se chamava ForgeGuard
As releases até a 0.6.0 inclusive foram publicadas como ForgeGuard e continuam disponíveis e inalteradas. A partir da 0.7.0 o nome canônico é VersionSec.
Quem já usava não perde nada: o comando forgeguard e import forgeguard continuam funcionando por uma camada de compatibilidade que aponta para a mesma implementação, e FORGEGUARD_TOKEN continua sendo lido.
Por que os identificadores FG-* permanecem
IDs de achados como FG-VER e de schema como forgeguard.assessment.v1 são identidade de contrato, não marca. Renomeá-los quebraria pipelines de relatórios, listas de exceções e baselines SARIF existentes.
Errata da 0.7.0
Na 0.7.0 faltava a opção de versão: versionsec --version terminava com erro de opção desconhecida. O scan e as revisões não eram afetados. A 0.7.1 corrige isso e substitui a 0.7.0.
Instalação
$ python -m pip install versionsec==0.7.2
$ versionsec --version
VersionSec 0.7.2
# existing ForgeGuard users
$ python -m pip install forgeguard==0.7.2
$ versionsec providers
$ versionsec checks
$ versionsec config review --snapshot snap.json
$ versionsec runner review --snapshot runner.json
O que o VersionSec não faz
O uso é limitado a uma instância que você possui ou está expressamente autorizado a avaliar. A base legal continua sendo responsabilidade do operador.
Perguntas que realmente aparecem
Gitea e Forgejo têm o mesmo suporte?
Precisa de acesso à rede?
Precisa de token de administrador?
Ele altera algo na minha instância?
E se uma verificação não puder ser avaliada?
Uma versão fora da lista não é suportada?
Já uso ForgeGuard. O que quebra?
Qual é a licença?
Contato
Sobre a ferramenta, integração ou uma revisão de hardening delimitada. Escolha o assunto.