概要
JAD Java Decompiler 1.5.8e-1kali1およびそれ以前のバージョンにおいて、スタックベースのバッファオーバーフローの脆弱性(CVE-2017-20227)が存在することが報告されています。この脆弱性は、過度に長い入力を処理する際にバッファの境界を超えてデータが書き込まれることで発生し、結果として任意のコード実行につながる可能性があります。攻撃者は、細工された入力をjadコマンドに渡すことで、スタックをオーバーフローさせ、シェルを起動するリターン指向プログラミング(ROP)チェーンを実行できるとされています。
影響範囲
- JAD Java Decompiler 1.5.8e-1kali1
- JAD Java Decompiler 1.5.8e-1kali1より前のバージョン
想定される影響
- 任意のコード実行: 攻撃者が細工した入力を用いることで、脆弱なシステム上で任意のコードを実行する可能性があります。
- システム乗っ取り: 任意のコード実行により、攻撃者がシステムを完全に制御し、データの窃取、改ざん、破壊、または他のマルウェアの展開などを行う可能性があります。
- サービス停止: システムの不安定化やクラッシュにより、サービスが停止する可能性があります。
攻撃成立条件・悪用状況
攻撃者は、脆弱なバージョンのJAD Java Decompilerが動作している環境に対して、特別に細工された入力(過度に長い文字列など)をjadコマンドに渡す必要があります。現在のところ、この脆弱性の具体的な悪用状況に関する詳細な情報は提供されていませんが、概念実証(PoC)コードが存在する可能性も考慮する必要があります。
推奨対策
-
【最優先】JAD Java Decompilerの使用停止または代替ツールの検討
JAD Java Decompilerは開発が停止している可能性があり、公式な修正パッチが提供されない可能性があります。そのため、可能であればJADの使用を停止し、代替となる最新のJavaデコンパイラ(例: Fernflower, CFR, Procyonなど)への移行を強く推奨します。
-
【中長期】システム環境の見直し
開発環境やテスト環境などでJADを使用している場合、その必要性を再評価し、セキュリティが確保された最新のツールへの切り替えを検討してください。
一時的な緩和策
- JAD Java Decompilerをインターネットに直接接続された環境や、信頼できない入力が与えられる可能性のある環境で使用しないようにしてください。
- JADを実行するユーザーの権限を最小限に制限し、万が一の攻撃時にもシステムへの影響を最小限に抑えるようにしてください。
- 可能であれば、JADを実行する環境をサンドボックス化するなど、隔離された環境で運用することを検討してください。
確認方法
- 現在使用しているJAD Java Decompilerのバージョンを確認してください。バージョンが「1.5.8e-1kali1」またはそれ以前である場合、本脆弱性の影響を受ける可能性があります。
- JADの実行ファイルやライブラリのパス、およびそれらがどのような入力処理を行っているかを確認し、不審な挙動がないか監視してください。
参考情報
- CVE-2017-20227 詳細: https://cvefeed.io/vuln/detail/CVE-2017-20227