Cisco Japan Blog
Share

注目の脆弱性:CPP および Parity Ethereum の各クライアントで確認された複数の脆弱性


2018年1月15日


この脆弱性は Cisco Talos の Marcin Noga が発見しました。

概要

Talos では、CPP および Parity Ethereum の各クライアントに複数の脆弱性を確認しました。

TALOS-2017-0503 / CVE-2017-14457 には、Denial of Service(DoS)の脆弱性と、libevm に起因するメモリ リークの脆弱性が記載されています。問題の関数は、現時点のデフォルト ビルドでは無効になっています。この脆弱性は、ビルド時に手動で有効にしたノードにのみ影響します。

TALOS-2017-0508 / CVE-2017-14460 は Ethereum Parity クライアントの脆弱性で、クロスドメイン(CORS)ホワイトリスト ポリシーが過度に許容的なことに起因しています。特定の API が有効になっている場合、アカウントやパリティ設定の変更内容に加えて、既存のアカウント、パリティ設定、ネットワーク設定に関する秘密データまでも漏洩する危険性があります。

また TALOS-2017-0464 – TALOS-2017-0471 / CVE-2017-12112 – CVE-2017-12119 には、認証がバイパスされる脆弱性が複数記載されています。これらの脆弱性を攻撃者がエクスプロイトした場合、資格情報を使用することなく、管理者専用機能にアクセスできる可能性があります。

最後に、CPP-Ethereum JSON-RPC の実装に起因する Denial of Service(DoS)の脆弱性として TALOS-2017-0471 / CVE-2017-12119 も発見されました。細工された json 要求により処理されない例外が発生し、Denial of Service(DoS)状態に陥る可能性があります。

1 は、各 Ethereum クライアントの JSON-RPCpopup_icon 実装における重要なセキュリティ部分を示しています。3 種類のクライアントのうち 2 つは、JSON-RPC インターフェイスの実装に問題を抱えています。これにより深刻なセキュリティ上の欠陥が発生します。これについては以下で詳しく説明します。

表 1

*ソース リソースのクロス共有

詳細

TALOS-2017-0503popup_icon / CVE-2017-14457

create2 の opcode ハンドラでスマート コントラクト コードが適切に処理されないため、Denial of Service(DoS)攻撃を受ける危険性があります。攻撃者が膨大な量のデータを SHA1 関数に渡し、計算に時間を費やすよう仕向ける可能性があります。この脆弱性がエクスプロイトされると、仮想マシン ライブラリ機能の実装を使用して、Ethereum ネットワーク内の全ノードに DoS 攻撃を仕掛けられる危険性があります。また、領域外データの参照値がコントラクト アドレスとして攻撃者に返されるため、メモリ リークが起きる危険性もあります。この機能はデフォルトでは有効になっていません。有効にするには -network Constantinople スイッチで ethvm を実行する必要があります。詳細はTalos の脆弱性レポートpopup_iconに記載されています。

TALOS-2017-0508popup_icon / CVE-2017-14460

Parity は Rust ベースの Ethereum クライアントであり、3 種類の Ethereum プラットフォームの中で最も広く使用されています。Parity は豊富な JSON-RPC インターフェイスを提供しますが、このインターフェイスはデフォルトで有効になっているため、多数の API が外部に公開されることになります。インターフェイスには過度に許容的なクロスドメイン(CORS)ホワイトリスト ポリシーが付属していますが、ポリシーはデフォルトで「*」に設定されています。こうした JSON-RPC デーモンの誤設定は、Parity ウォレットを実行しているユーザが悪意のある Web サイトにアクセスすると脆弱性を引き起こします。特定の API が有効になっている場合、アカウントやパリティ設定の変更内容だけでなく、既存のアカウント、パリティ設定、ネットワーク設定に関する秘密データまでも漏洩する危険性があります。詳細はTalos の脆弱性レポートpopup_iconに記載されています。

TALOS-2017-0464popup_icon – TALOS-2017-0470popup_icon / CVE-2017-12112 – CVE-2017-12118

JSON-RPC における CPP Ethereum API の実装では、不適切な認証方法による脆弱性が確認されました。悪意のある JSON 要求が送信されると、以下の CPP Ethereum API 内で制限された機能にアクセスされ、その結果として認証がバイパスされる可能性があります。

TALOS-2017-0464 – admin_addPeerpopup_icon
TALOS-2017-0465 – admin_nodeInfopopup_icon
TALOS-2017-0466 – admin_peerspopup_icon
TALOS-2017-0467 – miner_setEtherbasepopup_icon
TALOS-2017-0468 – miner_setGasPricepopup_icon
TALOS-2017-0469 – miner_startpopup_icon
TALOS-2017-0470 – miner_stoppopup_icon

これにより、リモートの攻撃者は資格情報を使用することなく、管理者専用機能にアクセスできる可能性があります。この脆弱性では、インターフェイスが 0.0.0.0(= 全 IP アドレス)にバインドされ世界中に公開されているため、特に危険性が高くなります。要求を送信する際に Content-Type を application / json に設定する必要がありますが、この要件が強制されていません。このため、JSON-RPC デーモンを実行するマシンが NAT ゲートウェイの背後にあったとしても、CSRF または SSRF 攻撃によって JSON-RPC API を簡単にエクスプロイトできます。

詳細は、先述した Talos 脆弱性レポートに記載されています。

TALOS-2017-0471popup_icon / CVE-2017-12119

JSON-RPC サーバにおける CPP Ethereum クライアントの実装では、別の Denial of Service(DoS)の脆弱性が発見されました。いくつかの API で適切な例外処理が行われないため、不正な形式の JSON パッケージが送信されると、クライアントやノードがクラッシュする可能性があります。詳細はTalos の脆弱性レポートpopup_iconに記載されています。

カバレッジ

これらの脆弱性からクライアントを保護できるよう、Talos では Advanced Malware Protection(AMP)などのエンドポイント セキュリティ製品を推奨しています。

今回の脆弱性をエクスプロイトする試みの一部は、以下の Snort ルールにより検出できます。今後、脆弱性に関する新たな情報が追加されるまでの間は、ルールが追加されたり、現行のルールが変更されたりする場合がありますのでご注意ください。最新ルールの詳細については、FireSIGHT Management Center または Snort.orgpopup_icon をご覧ください。

Snort ルール:44707-44712、44713

 

本稿は 2018年1月9日に Talos Grouppopup_icon のブログに投稿された「Vulnerability Spotlight: Multiple Vulnerabilities in the CPP and Parity Ethereum Clientpopup_icon」の抄訳です。

 

コメントを書く