
Ferramenta de análise de composição de software que detecta vulnerabilidades publicamente divulgadas em dependências de projetos usando correspondência CPE, gerando relatórios detalhados com links CVE para integração CI/CD.
Dependency-Check é uma ferramenta que tenta detectar vulnerabilidades divulgadas publicamente contidas nas dependências do projeto. Ela faz isso determinando se existe um identificador Common Platform Enumeration (CPE) para uma determinada dependência. Se encontrado, gerará um relatório vinculando às entradas CVE associadas.
Documentação e links para as versões binárias de produção podem ser encontrados nas páginas do github. Além disso, mais informações sobre a arquitetura e formas de estender o dependency-check podem ser encontradas na wiki.
Para instruções sobre o uso do plugin Jenkins, consulte a página do Plugin OWASP Dependency-Check.
Instruções mais detalhadas podem ser encontradas nas páginas do github do dependency-check. A CLI mais recente pode ser baixada da página do dependency-check no bintray.
No *nix
$ ./bin/dependency-check.sh -h
$ ./bin/dependency-check.sh --project Testing --out . --scan [caminho para os arquivos jar a serem verificados]
No Windows
> .\bin\dependency-check.bat -h
> .\bin\dependency-check.bat --project Testing --out . --scan [caminho para os arquivos jar a serem verificados]
No Mac com Homebrew
$ brew update && brew install dependency-check
$ dependency-check -h
$ dependency-check --project Testing --out . --scan [caminho para os arquivos jar a serem verificados]
Instruções mais detalhadas podem ser encontradas nas páginas do github do dependency-check-maven.
Por padrão, o plugin está vinculado à fase verify (ou seja, mvn verify). Alternativamente,
pode-se invocar diretamente o plugin através de mvn org.owasp:dependency-check-maven:check.
O plugin dependency-check pode ser configurado usando o seguinte:
<project>
<build>
<plugins>
...
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
...
</build>
...
</project>
Para instruções sobre o uso da Tarefa Ant, consulte a página do github do dependency-check-ant.
As instruções a seguir descrevem como compilar e usar o snapshot atual. Embora toda intenção seja manter um snapshot estável, é recomendado que as versões de lançamento listadas acima sejam utilizadas.
O repositório possui alguns arquivos grandes devido a recursos de teste. A equipe tentou limpar o histórico o máximo possível. No entanto, é recomendado que você faça um clone raso para economizar tempo:
git clone --depth 1 https://github.com/jeremylong/DependencyCheck.git
No *nix
$ mvn install
$ ./cli/target/release/bin/dependency-check.sh -h
$ ./cli/target/release/bin/dependency-check.sh --project Testing --out . --scan ./src/test/resources
No Windows
> mvn install
> .\dependency-check-cli\target\release\bin\dependency-check.bat -h
> .\dependency-check-cli\target\release\bin\dependency-check.bat --project Testing --out . --scan ./src/test/resources
Em seguida, carregue o arquivo 'dependency-check-report.html' resultante em seu navegador favorito.
No exemplo a seguir, assume-se que a fonte a ser verificada está no diretório de trabalho atual. Diretórios persistentes de dados e relatórios são usados, permitindo que você destrua o contêiner após a execução.
#!/bin/sh
OWASPDC_DIRECTORY=$HOME/OWASP-Dependency-Check
DATA_DIRECTORY="$OWASPDC_DIRECTORY/data"
REPORT_DIRECTORY="$OWASPDC_DIRECTORY/reports"
if [ ! -d "$DATA_DIRECTORY" ]; then
echo "Initially creating persistent directories"
mkdir -p "$DATA_DIRECTORY"
chmod -R 777 "$DATA_DIRECTORY"
mkdir -p "$REPORT_DIRECTORY"
chmod -R 777 "$REPORT_DIRECTORY"
fi
# Make sure we are using the latest version
docker pull owasp/dependency-check
docker run --rm \
--volume $(pwd):/src \
--volume "$DATA_DIRECTORY":/usr/share/dependency-check/data \
--volume "$REPORT_DIRECTORY":/report \
owasp/dependency-check \
--scan /src \
--format "ALL" \
--project "My OWASP Dependency Check Project"
# Use suppression like this: (/src == $pwd)
# --suppression "/src/security/dependency-check-suppression.xml"
Observe que ao atualizar da versão 1.x.x, as seguintes alterações precisarão ser feitas na sua configuração.
Para suportar múltiplos arquivos de supressão, o mecanismo para configurar arquivos de supressão foi alterado. Dessa forma, os usuários que definiram um arquivo de supressão em sua configuração precisarão atualizar.
Veja os exemplos abaixo:
Antigo:
<dependency-check
failBuildOnCVSS="3"
suppressionFile="suppression.xml">
</dependency-check>
Novo:
<dependency-check
failBuildOnCVSS="3">
<suppressionFile path="suppression.xml" />
</dependency-check>
Antigo:
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<configuration>
<suppressionFile>suppression.xml</suppressionFile>
</configuration>
</plugin>
Novo:
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<configuration>
<suppressionFiles>
<suppressionFile>suppression.xml</suppressionFile>
</suppressionFiles>
</configuration>
</plugin>
Além das alterações no arquivo de supressão, a tarefa dependencyCheck foi
renomeada para dependencyCheckAnalyze.
Antigo:
buildscript {
repositories {
mavenLocal()
}
dependencies {
classpath 'org.owasp:dependency-check-gradle:2.0.1-SNAPSHOT'
}
}
apply plugin: 'org.owasp.dependencycheck'
dependencyCheck {
suppressionFile='path/to/suppression.xml'
}
check.dependsOn dependencyCheckAnalyze
Novo:
buildscript {
repositories {
mavenLocal()
}
dependencies {
classpath 'org.owasp:dependency-check-gradle:2.0.1-SNAPSHOT'
}
}
apply plugin: 'org.owasp.dependencycheck'
dependencyCheck {
suppressionFiles = ['path/to/suppression1.xml', 'path/to/suppression2.xml']
}
check.dependsOn dependencyCheckAnalyze
Inscreva-se: [[email protected]] subscribe
Envie: [[email protected]] post
Arquivo: grupo google
Dependency-Check é Copyright (c) 2012-2017 Jeremy Long. Todos os direitos reservados.
A permissão para modificar e redistribuir é concedida sob os termos da licença Apache 2.0. Consulte o arquivo LICENSE.txt para a licença completa.
O Dependency-Check faz uso de várias outras bibliotecas de código aberto. Consulte o arquivo NOTICE.txt para mais informações.