【ITニュース解説】「Active! mail」におけるスタックベースのバッファオーバーフローの脆弱性について(JVN#22348866)
ITニュース概要
Webメールソフト「Active! mail」に、メモリをあふれさせるバッファオーバーフローの脆弱性が存在。外部からの攻撃で任意のコードが実行され、サーバーが乗っ取られる恐れがある。利用者は速やかに最新版へ更新を。
ITニュース解説
Webメールシステム「Active! mail」に、極めて深刻な脆弱性が存在することが明らかになった。この脆弱性は、遠隔の第三者によってサーバー上で任意のコードを実行される可能性があり、システムの乗っ取りなど重大な被害につながる恐れがある。情報処理推進機構(IPA)およびJPCERT/CCは、この脆弱性に関する情報を公開し、利用者に迅速な対応を呼びかけている。対象となるのは「Active! mail」のバージョン6.84.05およびそれ以前のバージョンである。 今回発見された脆弱性は、「スタックベースのバッファオーバーフロー」と呼ばれる種類のものである。この脆弱性を理解するためには、まずプログラムがデータをどのように扱うかを知る必要がある。プログラムは、処理の過程でさまざまなデータを一時的に保存するために、メモリ上に「バッファ」と呼ばれる領域を確保する。このバッファは、データを格納するための箱のようなものであり、あらかじめ決められた大きさ(容量)を持っている。バッファオーバーフローとは、この箱の容量を超える大きさのデータが送り込まれることで、データが箱から溢れ出てしまう現象を指す。溢れ出たデータは、本来データが書き込まれるべきではないメモリ上の別の領域にまで侵入し、そこに保存されていた情報を上書きしてしまう。 特に今回の「スタックベース」のバッファオーバーフローは、プログラムの動作において非常に重要な「スタック」と呼ばれるメモリ領域で発生する。スタック領域には、プログラムが複数の処理(関数)を順序立てて実行するために不可欠な情報が格納されている。その中でも特に重要なのが、ある関数の処理が終わった後に、次にどの処理に戻るべきかを示す「戻り先アドレス」である。攻撃者は、この脆弱性を悪用し、意図的に巨大なデータを送り込むことでバッファをオーバーフローさせ、この「戻り先アドレス」を不正に書き換えることを狙う。具体的には、攻撃者が用意した悪意のあるプログラム(コード)が格納されているメモリ上のアドレスに、戻り先アドレスを書き換える。これにより、プログラムは関数の処理を終えた後、本来戻るべき場所ではなく、攻撃者が仕込んだ悪意のあるコードへと処理を移してしまう。その結果、攻撃者はサーバー上で自由に命令を実行できる状態、すなわち「任意のコード実行」が可能となる。 今回の「Active! mail」のケースでは、`session_utility.cgi` という特定のプログラムに問題が存在した。CGIは、Webサーバーが外部のプログラムを呼び出してその実行結果をブラウザに返すための仕組みである。この `session_utility.cgi` が、外部から送られてくるリクエストを処理する際に、受け取るデータの長さを適切に検証していなかった。そのため、攻撃者が想定外の長さを持つ不正なリクエストを送信すると、スタック領域に確保されたバッファがオーバーフローを起こし、前述のメカニズムによって任意のコード実行へとつながる可能性があった。 この脆弱性が悪用された場合の影響は甚大である。攻撃者に任意のコード実行を許してしまうと、サーバーを完全に制御される可能性がある。例えば、サーバー上に保存されている全ユーザーのメールデータが盗み見られたり、外部に漏洩させられたりする危険性がある。また、メール内容の改ざんや削除、なりすましメールの送信なども可能になる。さらに、攻撃の踏み台として利用され、他のシステムへのサイバー攻撃に加担させられたり、サーバー全体を暗号化して身代金を要求するランサムウェアに感染させられたりするなど、あらゆる被害が想定される。脆弱性の深刻度を示す共通脆弱性評価システムCVSS v3のスコアは9.8(Critical)と評価されており、これは最も危険度が高いレベルであることを示している。 この深刻な脆弱性に対する対策として、開発元である株式会社クオリティアから、問題を修正した新しいバージョンが提供されている。システム管理者は、自らが管理する「Active! mail」のバージョンを確認し、脆弱性の影響を受けるバージョンであった場合は、速やかに修正済みバージョンへアップデートすることが最も確実で根本的な対策となる。もし、何らかの事情ですぐにアップデート作業ができない場合は、一時的な回避策を講じることが推奨される。具体的には、脆弱性の原因となっているファイル `session_utility.cgi` への外部からのアクセスを、Webサーバーの設定を用いて拒否することで、攻撃の経路を遮断する方法がある。ただし、これはあくまで一時的な措置であり、システムを安全な状態に保つためには、最終的に修正済みバージョンへのアップデートが不可欠である。利用者は、自社のシステム環境を直ちに点検し、必要な対策を遅滞なく実施することが強く求められる。