
Detecte e corrija configurações incorretas e riscos de segurança em todos os seus ativos do GitHub e GitLab
Fortaleça a postura de segurança do seu gerenciamento de código-fonte!
Detecte e corrija más configurações, problemas de segurança e conformidade em todos os seus ativos do GitHub e GitLab com facilidade 🔥
por Legit Security.
A Legit Security é uma solução de gerenciamento de postura de segurança de aplicações (ASPM) e segurança da cadeia de suprimentos de software.
Para mais informações, confira a tabela de comparação
A instalação é possível de várias formas:
brew install legitify
Você pode baixar a versão mais recente do legitify em https://github.com/Legit-Labs/legitify/releases. Cada arquivo contém:
A partir do código-fonte com os seguintes passos:
git clone [email protected]:Legit-Labs/legitify.git
go run main.go analyze ...
gh extension install legit-labs/gh-legitify
gh legitify
Você pode executar o legitify como parte de um processo de CI com as Ações Personalizadas do GitHub do legitify:
name: Legitify Analyze
on:
workflow_dispatch:
schedule:
- cron: '0 11 * * 1-5'
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- name: Legitify Action
uses: Legit-Labs/legitify@main
with:
github_token: ${{ secrets.PAT_FOR_LEGITIFY }}
ignore-policies: |
non_admins_can_create_public_repositories
requires_status_checks
Confira o arquivo de ação para parâmetros adicionais e configuração.
Para melhorar a segurança da cadeia de suprimentos de software dos usuários do legitify, a partir da v0.1.6, toda versão do legitify contém um documento SLSA Level 3 Provenance.
O documento de proveniência refere-se a todos os artefatos da versão, bem como à imagem docker gerada.
Você pode usar o verificador oficial do framework SLSA para verificar a proveniência.
Exemplo de uso para a arquitetura darwin_arm64 na versão v0.1.6:
VERSION=0.1.6
ARCH=darwin_arm64
./slsa-verifier verify-artifact --source-branch main --builder-id 'https://github.com/slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@refs/tags/v1.2.2' --source-uri "git+https://github.com/Legit-Labs/legitify" --provenance-path multiple.intoto.jsonl ./legitify_${VERSION}_${ARCH}.tar.gz
SCM_TOKEN=<seu_token> legitify analyze
Por padrão, o legitify verificará as políticas contra todos os seus recursos (organizações, repositórios, membros, ações). Repositórios arquivados são ignorados.
Você pode controlar quais recursos serão analisados com as flags de linha de comando namespace e org:
--namespace (-n): analisará apenas as políticas relacionadas aos recursos especificados--org: limitará a análise às organizações do GitHub ou grupo do GitLab especificados, excluindo repositórios arquivados--repo: limitará a análise aos repositórios do GitHub ou projetos do GitLab especificados--scm: especifica a plataforma de gerenciamento de código-fonte. Valores possíveis: github ou gitlab. Padrão: github. Obs.: ao executar no GitLab, --scm gitlab é obrigatório.--enterprise: especifica quais empresas devem ser analisadas. Obs.: para analisar uma empresa, é necessário fornecer o slug da empresa.SCM_TOKEN=<seu_token> legitify analyze --org org1,org2 --namespace organization,member
O comando acima testará as políticas de organização e membro contra org1 e org2.
SCM_TOKEN=<seu_token> OPENAI_TOKEN=<token> ./legitify gpt-analysis --repo org1/repo1 --org org1
Análise baseada em GPT-3 da postura de segurança do repositório ou organização fornecida.
NOTA: Os metadados do repositório/organização são enviados para os servidores da openai.
Flags:
--org: limitará a análise às organizações do GitHub ou grupo do GitLab especificados--repo: limitará a análise aos repositórios do GitHub ou projetos do GitLab especificados--scm: especifica a plataforma de gerenciamento de código-fonte. Valores possíveis: github ou gitlab. Padrão: github.--token: token para o SCM (ou defina a variável de ambiente SCM_TOKEN)--openai-token: token para a API da openai (ou defina a variável de ambiente OPENAI_TOKEN)Deve fornecer --org ou --repo ou ambos.
Gerando token da openai:
Você também pode executar o legitify como uma ação do GitHub em seus workflows. Veja o diretório action_examples para exemplos concretos.
-t) ou como variável de ambiente (SCM_TOKEN).
O PAT precisa dos seguintes escopos para análise completa:admin:org, read:enterprise, admin:org_hook, read:org, repo, read:repo_hook
Veja Criando um Token de Acesso Pessoal para mais informações.
Tokens de acesso pessoal refinados atualmente não são suportados.
Você pode executar o legitify contra uma instância do GitHub Enterprise Server definindo a URL do endpoint na variável de ambiente SERVER_URL:
export SERVER_URL="https://github.example.com/"
SCM_TOKEN=<seu_token> legitify analyze --org org1,org2 --namespace organization,member
-t) ou como variável de ambiente (SCM_TOKEN).
O PAT precisa dos seguintes escopos para análise completa:
read_api, read_user, read_repository, read_registry
Veja Criando um Token de Acesso Pessoal para mais informações.--scm gitlab; para executar contra o GitLab Server, você também precisa fornecer um SERVER_URL:export SERVER_URL="https://gitlab.example.com/"
SCM_TOKEN=<seu_token> legitify analyze --namespace organization --scm gitlab
NOTA 1: Para ignorar certificado de servidor inválido, passe a flag
ignore-invalid-certificate
NOTA 2: Para contas GitLab não premium, algumas políticas (como políticas de proteção de branch) serão ignoradas
Namespaces no legitify são recursos que são coletados e verificados contra as políticas. Atualmente, os seguintes namespaces são suportados:
organization - políticas de nível de organização do GitHub (ou grupo do GitLab) (ex.: "A Autenticação de Dois Fatores Não é Aplicada na Organização")actions - políticas de GitHub Actions da organização (ex.: "As Execuções do GitHub Actions Não Estão Limitadas a Ações Verificadas")member - políticas de nível de contribuidor (ex.: "Admin Inativo Encontrado")repository - políticas de nível de repositório do GitHub (ou projeto do GitLab) (ex.: "Revisão de Código por Pelo Menos Dois Revisores Não é Aplicada"). Obs.: Repositórios arquivados são ignorados, a menos que especificados diretamente via argumento --repo.runner_group - políticas de grupo de runner (ex., "runner pode ser usado por repositórios públicos")Por padrão, o legitify analisará todos os namespaces. Você pode limitar a apenas os selecionados com a flag --namespace, seguida por uma lista separada por vírgulas dos namespaces selecionados.
Por padrão, o legitify exibirá os resultados em formato legível por humanos. Isso inclui a lista de violações de políticas listadas por gravidade, bem como uma tabela resumo ordenada por namespace.
Usando a flag --output-format (-f), o legitify suporta a saída dos resultados nos seguintes formatos:
human-readable - Texto legível por humanos (padrão).json - JSON padrão.sarif - Formato SARIF (info).Usando a flag --output-scheme, o legitify suporta a saída dos resultados em diferentes esquemas de agrupamento.
Obs.: é necessário especificar --output-format=json para produzir esquemas não padrão.
flattened - Sem agrupamento; listagem plana das políticas, cada uma com suas violações (padrão).group-by-namespace - Agrupa as políticas por namespace.group-by-resource - Agrupa as políticas por recurso (ex.: organização/repositório específico).group-by-severity - Agrupa as políticas por gravidade.--output-file - caminho completo do arquivo de saída (padrão: nenhum arquivo de saída, imprime no stdout).--error-file - caminho completo dos logs de erro (padrão: ./error.log).Ao exibir em formato legível por humanos, o legitify suporta a flag convencional --color[=when], que tem as seguintes opções:
auto - saída colorida se stdout for um terminal, sem cor caso contrário (padrão).always - saída colorida independentemente do destino.none - saída sem cor independentemente do destino.--failed-only para filtrar verificações aprovadas/ignoradas do resultado.--ignore-policies-path $PATH e forneça um arquivo com as políticas que deseja ignorar para pular políticas específicas.
Uma política por linha, ex.:
no_conversation_resolution requires_status_checks ─╯Scorecard é um projeto open-source do OSSF:
Scorecards é uma ferramenta automatizada que avalia uma série de heurísticas importantes ("checks") associadas à segurança de software e atribui a cada check uma pontuação de 0 a 10. Você pode usar essas pontuações para entender áreas específicas a melhorar para fortalecer a postura de segurança do seu projeto. Você também pode avaliar os riscos que as dependências introduzem e tomar decisões informadas sobre aceitar esses riscos, avaliar soluções alternativas ou trabalhar com os mantenedores para fazer melhorias.
O legitify suporta executar o scorecard para todos os repositórios da organização, aplicar políticas de pontuação e exibir os resultados usando a flag --scorecard:
no - não executa scorecard (padrão).yes - executa scorecard e aplica uma política que alerta sobre cada repositório com pontuação abaixo de 7,0.verbose - executa scorecard, aplica uma política que alerta sobre cada repositório com pontuação abaixo de 7,0 e incorpora sua saída à saída do legitify.O legitify executa as seguintes verificações do scorecard:
O legitify vem com um conjunto de políticas para cada SCM no diretório policies/.
Essas políticas estão documentadas aqui.
Obrigado por considerar contribuir com o Legitify! Incentivamos e apreciamos qualquer tipo de contribuição. Aqui estão alguns recursos para ajudar você a começar:
Se você tiver dúvidas sobre o legitify ou precisar de assistência com sua operação, não hesite em entrar em contato. Nossa equipe está comprometida em fornecer suporte e garantir uma experiência tranquila.
Se você gostou do Legitify, vai adorar a Plataforma Legit Security!
Abaixo está uma comparação de recursos entre Legitify e Legit:
Para conferir o Legit, visite nosso site ou agende uma demonstração
| Verificação | Repositório Público | Repositório Privado |
|---|
| Security-Policy | V | |
| CII-Best-Practices | V | |
| Fuzzing | V | |
| License | V | |
| Signed-Releases | V | |
| Branch-Protection | V | V |
| Code-Review | V | V |
| Contributors | V | V |
| Dangerous-Workflow | V | V |
| Dependency-Update-Tool | V | V |
| Maintained | V | V |
| Pinned-Dependencies | V | V |
| SAST | V | V |
| Token-Permissions | V | V |
| Vulnerabilities | V | V |
| Webhooks | V | V |
| Recurso | Legitify | Plataforma Legit Security |
|---|
| Plataformas suportadas | GitHub GitLab | TODOS os principais SCMs (incl. Azure DevOps, Bitbucket e mais) Sistemas de CI/CD (ex.: Jenkins) Registros de pacotes (ex.: JFrog Artifactory) Provedores de nuvem (ex.: AWS) |
| Detecção de riscos | Apenas más configurações de SCM | Más configurações de SCM Más configurações de CI Más configurações de CD Más configurações de Registros de Pacotes Riscos de pipeline Segredos IaC Incidentes de segurança E mais... |
| Relatório de conformidade | Práticas Recomendadas de SCM do OSSF | SSDF SLSA SOC2 ISO 27001 FedRAMP E mais... |
| Detecção de desvios de políticas | Pode ser detectada periodicamente através da Ação do GitHub do Legitify | Receba alertas em tempo real quando uma má configuração for introduzida |
| Gerenciamento de ativos de SDLC | - | Sim |
| Gerenciamento de problemas e políticas | - | Sim |
| Contexto do código à nuvem | - | Sim (informações contextualizadas permitem priorização mais inteligente) |
| Workspaces e grupos de produtos | - | Sim |
| Emissão de tickets e alertas | - | Jira, Slack e mais |
| Risco de ingestão | - | APIs de importação e integrações com SAST, SCA e outras soluções de teste |
| APIs REST | - | Sim |