#996 Forcepoint One DLP クライアントで使用されている Python ランタイム、外部からファイルを持ち込むことで削除されていた機能を復活

#996 Forcepoint One DLP クライアントで使用されている Python ランタイム、外部からファイルを持ち込むことで削除されていた機能を復活 脆弱性

今回は、企業の情報漏洩を防ぐためのセキュリティ製品、いわゆるDLPソフトウェアに見つかった、少し特殊な脆弱性について取り上げます。メーカー側がセキュリティ上の理由で機能を制限していたはずのPython実行環境が、外部から特定のファイルを加えることで、その制限を解除できてしまうという問題です。これは、システムの中に古いバージョンのコンポーネントが残留していることのリスクや、単に機能の一部を削除するだけでは安全性を担保しきれないという難しさを、私たちに教えてくれる重要な事例です。詳しく見ていきましょう。

独立行政法人情報処理推進機構(IPA)および一般社団法人JPCERT コーディネーションセンター(JPCERT/CC)は1月23日、Forcepoint One DLPクライアントで使用されているPythonランタイムに関する問題について「Japan Vulnerability Notes(JVN)」で発表した。

こちらの記事を、簡単に解説お願いできますでしょうか?

今回の問題は、Forcepoint One DLPクライアントという製品に含まれている、Pythonの実行環境に関するものです。この製品には、Python 2.5.4という非常に古いバージョンが同梱されていました。本来、外部のプログラムを呼び出す機能は削除されていたのですが、攻撃者が外部から特定のファイルを持ち込むことで、その機能を復活させることができると判明したのです。これにより、任意のコードを実行される恐れがあります。対策としては、メーカーが提供する最新版へアップグレードすることで、このPython実行環境自体が削除され、問題が解消されます。

質疑応答

まず基本的なことからお聞きしたいのですが、記事に出てくる「DLP」というのは、一体どういう製品なのでしょうか?

DLPとはData Loss Preventionの略で、組織内部からの情報漏洩を防ぐための仕組みのことです。機密情報や顧客の個人情報などが、意図せず、あるいは悪意を持って外部に持ち出されるのを防ぐ役割を持っています。具体的には、USBメモリへのデータの書き込みを禁止したり、特定のキーワードが含まれるメールの送信をブロックしたりする機能があります。今回の製品も、そうしたセキュリティ対策の要として、多くの企業のパソコン端末に導入されているものです。

次に「Pythonランタイム」や「ctypes」という難しい言葉が出てきましたが、これらは何をするものですか?

Pythonランタイムとは、人気のあるプログラミング言語であるPythonで作られたプログラムを動かすための、エンジンのようなものです。そしてctypesというのは、Pythonからパソコンの基本システムであるWindowsの機能、専門的にはC言語で書かれたライブラリを直接呼び出すための道具です。これがあると、Pythonを使ってパソコンのメモリ操作など深い部分まで触れてしまうため、今回の製品ではセキュリティ上の理由から、あえて削除されていた機能なのです。

メーカーがあえて削除していた機能を、外部から持ち込んで復活させるというのは、どういう仕組みなんですか?

イメージとしては、ジグソーパズルのようなものを想像してください。メーカーは危険な機能という「ピース」をあえて抜いて製品を出荷していました。しかし、パズルの土台そのものは製品の中に残っていたため、攻撃者が別の場所から、その穴にぴったりハマる「ピース」を持ってきてはめ込むことで、完成形として機能してしまうのです。つまり、部品を削除しただけでは、機能の呼び出し口そのものを塞ぐことにはなっていなかったため、後から継ぎ足すことが可能だったということですね。

その機能が復活してしまうと、具体的にどのような悪さをされてしまう恐れがあるのでしょうか?

一番のリスクは、攻撃者が用意した任意のプログラムを実行されてしまうことです。これを専門用語で「シェルコードやペイロードの実行」と言います。例えば、パソコン内の重要なファイルを盗み見たり、ウイルスを勝手にインストールしたり、最悪の場合はシステム全体を乗っ取って操作したりすることが可能になります。特にDLP製品のようなセキュリティソフトは、パソコンの中で非常に高い権限で動いていることが多いので、悪用された場合の影響も深刻になりやすいのです。

怖いですね。対策はアップデートとのことですが、今回は修正ではなく、Pythonごと削除されたというのはなぜですか?

その通りです。今回使用されていたPython 2.5.4は非常に古く、公式サポートもとうに終了しています。こうした古い土台を使い続けること自体がリスクになりますし、今回のように小手先の制限だけでは、どうしても抜け穴が生まれやすいのです。メーカー側も、脆弱性を修正して使い続けるより、リスクの温床となっている古いコンポーネント自体を完全に取り除くほうが、根本的な解決策になると判断したのでしょう。最新版にすることで安全性が高まります。

まとめ

機能を削除したからといって安心できず、古い土台が残っていると、そこから抜け穴を突かれることがあるんですね。根本的な解決には、問題のある部品ごと入れ替える最新版への更新が不可欠だとよく分かりました。また一つ、勉強になりました!

タイトルとURLをコピーしました