Escopo de triagem BDBA (Black Duck Binary Analysis) enganoso

Escopo de triagem BDBA (Black Duck Binary Analysis) enganoso

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 Applicationo 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 namea 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_ab4e3fpara 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.2mas 1.0.2_company_buildnã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.

informação relacionada