Plataforma
nodejs
Componente
@openzeppelin/contracts-upgradeable
Corrigido em
4.0.1
3.3.1
3.3.1
4.3.1
A vulnerabilidade CVE-2021-39168 reside no componente @openzeppelin/contracts-upgradeable, especificamente no TimelockController. Um ator com o papel de executor pode, explorando essa falha, tomar controle imediato do timelock, redefinindo o atraso para zero e escalando privilégios. Isso concede acesso irrestrito aos ativos mantidos no contrato, especialmente em instâncias onde o papel de executor está definido como 'open'. A correção está disponível nas versões 4.3.1, 3.4.2 e 3.4.2-solc-0.7.
O impacto desta vulnerabilidade é severo, permitindo que um atacante obtenha controle total sobre os contratos inteligentes que utilizam o TimelockController vulnerável. Ao redefinir o atraso do timelock para zero, o atacante pode executar transações imediatamente, ignorando quaisquer restrições de tempo definidas. Em cenários onde o papel de executor está aberto, qualquer pessoa pode assumir esse papel, tornando o contrato suscetível a uma tomada de controle completa. Isso pode resultar na perda de fundos, manipulação de dados e comprometimento da integridade do sistema. A vulnerabilidade se assemelha a cenários de escalada de privilégios em sistemas tradicionais, onde um usuário com permissões limitadas obtém acesso não autorizado a recursos críticos.
A vulnerabilidade foi divulgada publicamente em 30 de agosto de 2021. Não há evidências de exploração ativa em larga escala, mas a gravidade da vulnerabilidade (CVSS 10) e a natureza crítica dos contratos inteligentes a utilizam, a tornam um alvo potencial. A ausência de um Proof of Concept (PoC) público não diminui o risco, pois a exploração pode ser desenvolvida por atores maliciosos. A inclusão em catálogos como o KEV (Known Exploited Vulnerabilities) ainda não foi confirmada.
Decentralized applications (dApps) and smart contracts relying on @openzeppelin/contracts-upgradeable for timelock functionality are at significant risk. Projects with open executor roles on their timelocks are particularly vulnerable, as anyone can assume the role and exploit the vulnerability. Developers using older versions of the library without proper access controls are also at risk.
• nodejs / smart contracts:
# Check for vulnerable versions in package.json
grep '@openzeppelin/contracts-upgradeable:"[^"]*"' package.json• nodejs / smart contracts:
# Audit dependencies using npm audit
npm audit• nodejs / smart contracts:
# Check for specific timelock contract code patterns
grep -r "TimelockController.sol" . | grep -i "delay() = 0"disclosure
Status do Exploit
EPSS
0.44% (percentil 63%)
Vetor CVSS
A mitigação primária para CVE-2021-39168 é a atualização para uma versão corrigida do @openzeppelin/contracts e @openzeppelin/contracts-upgradeable, especificamente a versão 4.3.1 ou superior. Se a atualização imediata não for possível devido a problemas de compatibilidade, considere restringir o papel de executor a um conjunto limitado de endereços confiáveis. Implemente regras de firewall ou proxies reverso para limitar o acesso ao contrato inteligente, restringindo a capacidade de um atacante de interagir com ele. Monitore logs de transações em busca de atividades suspeitas, como redefinições inesperadas de atraso do timelock. Após a atualização, confirme a correção verificando se o atraso do timelock está sendo aplicado corretamente e se o papel de executor está devidamente restrito.
Revogar o papel de executor de contas que não estejam estritamente sob o controle da equipe. Recomenda-se revogar todos os executores que não sejam também proponentes. Ao aplicar esta mitigação, certifique-se de que permaneça pelo menos um proponente e um executor.
Análise de vulnerabilidades e alertas críticos diretamente no seu e-mail.
CVE-2021-39168 is a critical vulnerability in @openzeppelin/contracts-upgradeable allowing an attacker with the executor role to reset the timelock delay to 0, gaining unrestricted access to assets.
You are affected if you are using a version of @openzeppelin/contracts-upgradeable prior to 4.3.1, especially if the executor role is set to 'open.'
Upgrade to version 4.3.1 or later of @openzeppelin/contracts-upgradeable. Restrict access to the executor role if immediate upgrading is not possible.
While no confirmed active exploitation campaigns have been reported, the vulnerability's severity makes it a high-priority target and exploitation is possible.
Refer to the OpenZeppelin security advisory: https://blog.openzeppelin.com/security-advisory-cve-2021-39168/
Envie seu arquivo de dependências e descubra na hora se esta e outras CVEs te atingem.