Reino: Environment
Esta seção contém tudo o que fica fora do código-fonte, porém que é essencial para a segurança do produto que está sendo criado. Como os problemas tratados neste domínio não são diretamente relacionados com o código-fonte, nós o separamos dos demais domínios.
Build Misconfiguration: Dynamic Dependency Version Usage
Abstract
Recuperar dependências de compilação usando uma versão dinâmica pode deixar o sistema de compilação vulnerável a binários mal-intencionados ou fazer com que o sistema experimente um comportamento inesperado.
Explanation
O sistema de gerenciamento de dependência automatizado Apache Ivy permite que os usuários especifiquem um status de versão para uma dependência em vez de listar o específico, o que é conhecido como revisão dinâmica. Se um invasor for capaz de comprometer o repositório de dependências ou enganar o sistema de compilação para baixar as dependências de um repositório sob controle do invasor, um especificador de revisão dinâmica pode ser tudo o que é necessário para o sistema de compilação baixar e executar silenciosamente a dependência comprometida. Além dos riscos de segurança, as revisões dinâmicas também introduzem um elemento de risco na frente da qualidade do código: As revisões dinâmicas colocam a segurança e a estabilidade de seu software sob o controle de terceiros que desenvolvem e lançam as dependências que seu software usa.
No momento da compilação, o Ivy se conecta ao repositório e tenta recuperar uma dependência que corresponda ao status listado.
O Ivy aceita os seguintes especificadores de revisão dinâmica:
-
-
- Qualquer revisão que termine em
- Intervalos de versão: A notação matemática para intervalos, como < e >, pode ser usada para corresponder a um intervalo de versões.
Exemplo 1: A seguinte entrada de configuração instrui o Ivy a recuperar a versão de lançamento mais recente do componente clover:
se o repositório estiver comprometido, um invasor pode simplesmente fazer upload de uma versão que atenda aos critérios dinâmicos e fazer com que o Ivy baixe uma versão mal-intencionada da dependência.
No momento da compilação, o Ivy se conecta ao repositório e tenta recuperar uma dependência que corresponda ao status listado.
O Ivy aceita os seguintes especificadores de revisão dinâmica:
-
latest.integration
: Seleciona a revisão mais recente do módulo de dependência.-
latest.[any status]
: Seleciona a revisão mais recente do módulo de dependência com o status especificado, no mínimo. Por exemplo, latest.milestone
selecionará a versão mais recente que seja um marco ou um lançamento, e latest.release
selecionará apenas a versão mais recente.- Qualquer revisão que termine em
+
: Seleciona a última sub-revisão do módulo de dependência. Por exemplo, se a dependência existe nas revisões 1.0.3, 1.0.7 e 1.1.2, uma revisão especificada como 1.0.+
selecionará a revisão 1.0.7.- Intervalos de versão: A notação matemática para intervalos, como < e >, pode ser usada para corresponder a um intervalo de versões.
Exemplo 1: A seguinte entrada de configuração instrui o Ivy a recuperar a versão de lançamento mais recente do componente clover:
<dependencies>
<dependency org="clover" name="clover"
rev="latest.release" conf="build->*"/>
...
se o repositório estiver comprometido, um invasor pode simplesmente fazer upload de uma versão que atenda aos critérios dinâmicos e fazer com que o Ivy baixe uma versão mal-intencionada da dependência.
References
[1] Standards Mapping - DISA Control Correlation Identifier Version 2 CCI-001167, CCI-001499, CCI-001749, CCI-001812
[2] Standards Mapping - NIST Special Publication 800-53 Revision 4 CM-5 Access Restrictions for Change (P1), CM-11 User-Installed Software (P1), SC-18 Mobile Code (P2)
[3] Standards Mapping - NIST Special Publication 800-53 Revision 5 CM-5 Access Restrictions for Change, CM-11 User-Installed Software, CM-14 Signed Components, SC-18 Mobile Code
[4] Standards Mapping - OWASP API 2023 API8 Security Misconfiguration
[5] Standards Mapping - OWASP Mobile 2014 M7 Client Side Injection
[6] Standards Mapping - OWASP Mobile 2024 M8 Security Misconfiguration
[7] Standards Mapping - OWASP Top 10 2013 A5 Security Misconfiguration
[8] Standards Mapping - OWASP Top 10 2017 A6 Security Misconfiguration
[9] Standards Mapping - OWASP Top 10 2021 A05 Security Misconfiguration
[10] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0 Requirement 2.2.6
[11] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0.1 Requirement 2.2.6
[12] Standards Mapping - Security Technical Implementation Guide Version 4.2 APSC-DV-001390 CAT II, APSC-DV-001430 CAT II, APSC-DV-001440 CAT II, APSC-DV-003300 CAT II
[13] Standards Mapping - Security Technical Implementation Guide Version 4.3 APSC-DV-001390 CAT II, APSC-DV-001430 CAT II, APSC-DV-001440 CAT II, APSC-DV-003300 CAT II
[14] Standards Mapping - Security Technical Implementation Guide Version 4.4 APSC-DV-001390 CAT II, APSC-DV-001430 CAT II, APSC-DV-001440 CAT II, APSC-DV-003300 CAT II
[15] Standards Mapping - Security Technical Implementation Guide Version 4.5 APSC-DV-001390 CAT II, APSC-DV-001430 CAT II, APSC-DV-001440 CAT II, APSC-DV-003300 CAT II
[16] Standards Mapping - Security Technical Implementation Guide Version 4.6 APSC-DV-001390 CAT II, APSC-DV-001430 CAT II, APSC-DV-001440 CAT II, APSC-DV-003300 CAT II
[17] Standards Mapping - Security Technical Implementation Guide Version 4.7 APSC-DV-001390 CAT II, APSC-DV-001430 CAT II, APSC-DV-001440 CAT II, APSC-DV-003300 CAT II
[18] Standards Mapping - Security Technical Implementation Guide Version 4.8 APSC-DV-001390 CAT II, APSC-DV-001430 CAT II, APSC-DV-001440 CAT II, APSC-DV-003300 CAT II
[19] Standards Mapping - Security Technical Implementation Guide Version 4.9 APSC-DV-001390 CAT II, APSC-DV-001430 CAT II, APSC-DV-001440 CAT II, APSC-DV-003300 CAT II
[20] Standards Mapping - Security Technical Implementation Guide Version 4.10 APSC-DV-001390 CAT II, APSC-DV-001430 CAT II, APSC-DV-001440 CAT II, APSC-DV-003300 CAT II
[21] Standards Mapping - Security Technical Implementation Guide Version 4.11 APSC-DV-001390 CAT II, APSC-DV-001430 CAT II, APSC-DV-001440 CAT II, APSC-DV-003300 CAT II
[22] Standards Mapping - Security Technical Implementation Guide Version 4.1 APSC-DV-001390 CAT II, APSC-DV-001430 CAT II, APSC-DV-001440 CAT II, APSC-DV-003300 CAT II
[23] Standards Mapping - Security Technical Implementation Guide Version 5.1 APSC-DV-001390 CAT II, APSC-DV-001430 CAT II, APSC-DV-001440 CAT II, APSC-DV-003300 CAT II
[24] Standards Mapping - Security Technical Implementation Guide Version 5.2 APSC-DV-001390 CAT II, APSC-DV-001430 CAT II, APSC-DV-001440 CAT II, APSC-DV-003300 CAT II
[25] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-001390 CAT II, APSC-DV-001430 CAT II, APSC-DV-001440 CAT II, APSC-DV-003300 CAT II
[26] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-001390 CAT II, APSC-DV-001430 CAT II, APSC-DV-001440 CAT II, APSC-DV-003300 CAT II
desc.config.java.build_misconfiguration_dynamic_dependency_version