Nucleiは脆弱性スキャナーです。
シンプルなYAMLベースのDSL上に構築された、高速でカスタマイズ可能な構造となっていて、多くの環境で利用されています。
今時よくあるように、NucleiはGitHubで公開されています。
このNucleiで脆弱性の修正が案内されています。
- チェック機構の脆弱性
Nucleiは脆弱性スキャナーです。
検査対象を検査します。
検査の際に利用するYAMLファイルの妥当性の確認のためにYAMLファイルの署名を検証します。
この際、改行コードの判定が十分ではないために想定外の利用ができる内容となってしまっていました。
改行コードは環境によって異なります。
「\n」というコードで表されるLine Feedと「\r」で表されるCarriage Returnが使用されます。
Unix系OS全般やmacOS XではLine Feedのみ、Windows系OSではCarriage ReturnとLine Feedの両方、macOSの古いものではCarriage Returnのみ、といった具合です。
些細な問題に見えますが、この問題によって、攻撃者は検証をバイパスするけれども、YAMLパーサーによって処理されたときには実行される悪意のあるコンテンツを挿入できるようになってしまいます。 - 重複定義時の動作の仕様
もう一つ問題がある状態になっていました。
「# digest:」で始まる構造の行が定義ファイルで使用されるのですが、これの処理がその場所でした。
この種の行が複数ある場合に、Nucleiは先頭を当初の目的に利用し、2番目以降を無視するという処理になっていました。
このため、2番目の部分に記述した内容がそのままテンプレートに渡されることになってしまいました。
これ単体ではどうということはないのですが、前述のチェック機構の脆弱性と組み合わせて悪用することで、コマンド実行を許してしまう状況を作り出せてしまいました。
通常のサニタイジングが実行されていれば、設定ファイルに悪意あるコマンドを挿入してもコマンド実行にまで至ることは想定できないのですが、複数の問題が合わさることで脆弱な状態となってしまっていました。
脆弱性スキャナーを使用して安全な運用を目指す人の環境が、脆弱性スキャナーの脆弱性によって、攻撃者の標的となってしまっていた、という皮肉な状況となってしまっていたのです。
この脆弱性はCVE-2024-43405として公開されていて、すでに対応したものが公開されています。
Nucleiを利用されている環境においては、速やかに対応を実施しましょう。
もちろん脆弱性対策を実施しなくてもよいソフトウェアというものはありません。利用環境の全体を対策された状態に保っていきましょう。
Breaking the Chain: Wiz Uncovers a Signature Verification Bypass in Nuclei, the Popular Vulnerability Scanner (CVE-2024-43405)
https://www.wiz.io/blog/nuclei-signature-verification-bypass
この記事をシェア |
---|