プラットフォーム
nodejs
コンポーネント
@openzeppelin/contracts-upgradeable
修正版
4.0.1
3.3.1
3.3.1
4.3.1
CVE-2021-39168は、@openzeppelin/contracts-upgradeableのTimelockControllerにおける権限昇格の脆弱性です。攻撃者は、executorロールを悪用し、delayを0にリセットすることで、契約内の資産への制限のないアクセスを獲得する可能性があります。影響を受けるバージョンは@openzeppelin/contractsおよび@openzeppelin/contracts-upgradeableの4.3.1未満です。4.3.1以降のバージョンにアップデートすることで、この脆弱性を修正できます。
この脆弱性は、攻撃者がTimelockControllerのexecutorロールを悪用することで、契約内の資産を完全に制御できる重大なリスクをもたらします。具体的には、delayを0にリセットすることで、通常は遅延処理が必要な操作を即座に実行できるようになり、不正な資金移動や契約の改ざんが可能になります。特に、executorロールが「open」に設定されている場合、誰でもexecutorロールを使用できるため、攻撃のリスクが大幅に高まります。この脆弱性は、スマートコントラクトのセキュリティを著しく損なう可能性があり、過去の同様の権限昇格攻撃と同様の被害が発生する可能性があります。
このCVEは、2021年8月30日に公開されました。現時点では、公的なPoCは確認されていませんが、脆弱性の深刻度から、将来的に悪用される可能性は高いと考えられます。CISA KEVリストへの登録状況は不明です。攻撃者は、スマートコントラクトのコードを分析し、executorロールの脆弱性を特定することで、攻撃を試みる可能性があります。
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
エクスプロイト状況
EPSS
0.44% (63% パーセンタイル)
CVSS ベクトル
この脆弱性への主な対策は、@openzeppelin/contractsおよび@openzeppelin/contracts-upgradeableを4.3.1以降のバージョンにアップデートすることです。アップデートが一時的にシステムに影響を与える可能性がある場合は、事前にテスト環境で検証を行い、バックアップを取得しておくことを推奨します。WAFやプロキシサーバーの設定変更による緩和策は、この脆弱性に対して直接的な効果は期待できません。脆弱性の影響を軽減するためには、executorロールのアクセス制限を強化し、最小限の権限のみを付与するように設定することが重要です。アップデート後、コントラクトの動作を注意深く監視し、異常なトランザクションがないか確認してください。
チームの厳密な管理下以外の口座から executor ロールを剥奪してください。提案者でもある executor 以外のすべての executor を剥奪することをお勧めします。この軽減策を適用する際には、少なくとも 1 つの提案者と executor が残るようにしてください。
脆弱性分析と重要アラートをメールでお届けします。
CVE-2021-39168は、@openzeppelin/contracts-upgradeableのTimelockControllerにおける権限昇格の脆弱性です。攻撃者は、executorロールを悪用し、契約内の資産を制御する可能性があります。
影響を受けるバージョンは@openzeppelin/contractsおよび@openzeppelin/contracts-upgradeableの4.3.1未満です。もしこれらのバージョンを使用している場合は、影響を受ける可能性があります。
@openzeppelin/contractsおよび@openzeppelin/contracts-upgradeableを4.3.1以降のバージョンにアップデートしてください。アップデート前に、テスト環境で検証し、バックアップを取得することを推奨します。
現時点では、公的なPoCは確認されていませんが、脆弱性の深刻度から、将来的に悪用される可能性は高いと考えられます。
@openzeppelinの公式ウェブサイトまたはGitHubリポジトリで、CVE-2021-39168に関するアドバイザリを確認してください。