Na ferramenta Black Duck Binary Analysis (também conhecida como Protecode), existem várias opções para triagem de vulnerabilidades
Da ajuda:
Escopo da triagem
Você pode aplicar um escopo a uma vulnerabilidade triada em um componente de terceiros. Ao fazer a triagem de vulnerabilidades conhecidas, você pode selecionar entre as seguintes opções:
Conta: aplica-se a todos os usos do componente na conta da empresa
Grupo: Aplica-se a todos os usos do componente dentro do grupo
Aplicativo: Aplica-se apenas aos usos do componente dentro do mesmo aplicativo
Nome da Aplicação: Aplica-se ao uso do componente em aplicativos verificados com o mesmo nome de aplicativo
Hash de arquivo: Aplica-se ao uso do componente em aplicativos verificados que tenham o mesmo hash de arquivo
O que eu quero é fazer a triagem do CVE na minha biblioteca para que os resultados da triagem sejam transferidos para as próximas varreduras. Espero que a opção "Hash de arquivo" faça exatamente isso, no entanto, quando eu carregar meu arquivo na próxima vez, ainda vejo o mesmo CVE como não triado. O que está errado?
Responder1
DR - use o escopo "Grupo".
Detalhes
A documentação da API deixa isso um pouco mais claro
PUT /api/triage/vulnerability/
component - Component name
version - Component version
vulns - List of vulnerability ids
scope - Scope in which the triage affects. Possible values:
- CA - Account wide
- FN - Filename
- FH - File hash
- R - Result
- G - Group
product_id - In FN, FH and R scopes the related product
group_id - In G scope the related group
Então, na verdade, a triagem na ferramenta é feitanão contra os arquivos, mascontra versões da biblioteca(biblioteca === componente no contexto). Não há sequer possibilidade teórica de fazer a triagem de um arquivo, porque você faz a triagem das versões. Tendo isso em mente, o resto dos pensamentos são simples.
Qual é o "hash do arquivo" então?
Está claramente escrito que se você usar "FH", o product_id será obrigatório e product é sinônimo (no contexto atual) do arquivo carregado com seus binários. Portanto, cada produto possui um e apenas um "hash de arquivo" - hash do arquivo carregado. O que torna esta opção completamente inútil, porque, presumo, não são carregados 100 arquivos separadamente, mas sim o arquivo\zip\tar.gz com o software, contendo vários binários. E, obviamente, o hash do arquivo mudará a cada reempacotamento, mesmo se houver uma alteração no arquivo leia-me.
O que eu quero é fazer a triagem do CVE na minha biblioteca para que os resultados da triagem sejam transferidos para as próximas varreduras.
Como o "hash de arquivo" não é adequado para esse propósito, vamos examinar outras opções de escopo disponíveis para ver o que podemos fazer aqui:
Resultado
A opção mais simples e padrão. Ao mesmo tempo, muito inútil. Mapeia diretamente para Application
o escopo mencionado na Ajuda: Applies to uses of the component within the same application only
. Resumindo - sem qualquer transferência.
Nome do arquivo
Pessoalmente, acho o "nome do arquivo" mais claro do que Application name
a linha correspondente na Ajuda. Independentemente disso, isso também está bastante claro - a triagem só será realizada se o nome do arquivo for o mesmo. Quando de alguma forma resolve o problema, introduz o novo problema - problema de diferenciar diferentes construções. Normalmente nomeamos nossos zips dessa forma MyCoolBuild_942_ab4e3f
para que seja fácil encontrar e verificar os resultados de compilações anteriores. Se você não se importa, esse escopo pode ser uma opção, se você nomear seus zips como MyCoolBuild.zip
.
Grupo
Como se pode imaginar, trata-se apenas de uma triagem de todo o grupo. Se sua equipe tiver seu próprio grupo, você estará perfeitamente preparado para usá-lo.
No meu caso, temos toda a empresa enviando arquivos para um grupo, entãopoderiatem alguns conflitos, no entanto, o manual da ferramenta diz que você deve usar sufixos de versão se estiver fazendo compilações personalizadas desta biblioteca (para corrigir alguns CVEs sozinho, por exemplo). Se todos seguirem esta regra, não nomeando bibliotecas personalizadas, 1.0.2
mas 1.0.2_company_build
não haverá conflitos entre triagens de equipes diferentes.
Conta
Não sei porque não tenho essa opção em nossa instância BDBA -_-
Testando a exatidão das suposições acima
Tudo acima pode ser facilmente confirmado fazendo alguns uploads de teste.
Hash de arquivo- carregue o mesmo arquivo duas vezes com nomes diferentes e faça a triagem de um CVE com escopo "FH" - então a triagem será realizada.
Nome do arquivo- carregue o arquivo uma vez, depois modifique um pouco o arquivo (adicione um arquivo de texto vazio dentro) e carregue-o novamente. A triagem será realizada.
Grupo- carregue uma biblioteca com versão detectada automaticamente, modifique o binário e carregue-o com um nome diferente - A triagem será transferida.
Como um teste adicional, você também pode fazer upload de um arquivo com duas bibliotecas dentro e substituir a versão de uma delas - isso irá separá-las na interface do usuário e permitir a triagem separada.