知っていますか?DLLハイジャックの脅威
セキュリティを高めたい
先生、「DLLハイジャッキング」って最近ニュースでよく聞くんですけど、どういう意味ですか?
情報セキュリティ専門家
「DLLハイジャッキング」は、例えるなら、宅配便の受け渡しを途中で乗っ取るようなものだよ。本来届けるべき荷物とは別のものを、こっそり受け渡し場所に置いておくんだね。
セキュリティを高めたい
えーっと、つまり、本来のプログラムが使うべきものとは別のものを、無理やり使わせちゃうってことですか?
情報セキュリティ専門家
その通り!本来使うべき正しいプログラム部品ではなく、悪意のある偽物の部品をこっそり使わせて、パソコンを乗っ取ったり、情報を盗み出したりする攻撃なんだよ。
DLLハイジャッキングとは。
「情報セキュリティの専門用語で『DLLハイジャッキング』と呼ばれるものがあります。これは、WindowsというOSが使っている『DLL』という仕組みの弱点をついた攻撃方法です。この攻撃では、欠陥のあるアプリケーションを狙って、あらかじめ用意しておいた悪意のあるDLLを実行させることで、様々な攻撃を仕掛けてきます。2020年に起きた、ロシアの諜報機関によるSolarWindsへの攻撃では、このDLLハイジャッキングを使った不正なプログラムによる攻撃が使われたことが知られています。
DLLハイジャックとは
– DLLハイジャックとは
Windowsのアプリケーションを動かすためには、多くの場合DLLと呼ばれる小さなプログラム群が必要です。 DLLは「ダイナミックリンクライブラリ」の略で、様々な機能を部品のようにまとめたものです。アプリケーションは、必要な時にこれらの部品を呼び出して利用することで、効率的に動作します。
しかし、このDLLの仕組みには弱点があります。それが「DLLハイジャック」です。
アプリケーションがDLLを呼び出す際、本来参照すべき場所とは異なる場所に、悪意のある偽物のDLLが置かれていることがあります。すると、アプリケーションは騙されて、この偽物のDLLを読み込んでしまいます。
偽物のDLLには、攻撃者の仕掛けたプログラムが含まれており、これが実行されると、システムの情報が盗まれたり、悪意のあるプログラムがインストールされたりするなど、様々な被害が発生する可能性があります。
このように、DLLハイジャックは、Windowsのシステムやアプリケーションの安全性を脅かす深刻な攻撃手法です。
項目 | 内容 |
---|---|
DLLとは | ダイナミックリンクライブラリ。アプリケーションが必要な時に呼び出して利用する、様々な機能を部品のようにまとめたもの。 |
DLLハイジャック | アプリケーションがDLLを呼び出す際に、本来参照すべき場所とは異なる場所に置かれた悪意のある偽物のDLLを読み込んでしまう攻撃手法。 |
被害 | システム情報が盗まれる、悪意のあるプログラムがインストールされるなど。 |
攻撃の手口
– 攻撃の手口
プログラムが正常に動作するために必要な外部ファイルを読み込む仕組みを悪用した攻撃があります。
プログラムは、必要な外部ファイルを読み込む際に、ファイルの場所が具体的に書かれていない場合には、あらかじめ決められた場所を順番に探していきます。
攻撃者は、この仕組みを悪用し、プログラムが必要とするファイルと同じ名前の悪意のあるファイルを作成し、プログラムが探しに行く場所へこっそりと置いておきます。
プログラムは、ファイルを探している途中で、悪意のあるファイルを見つけてしまうと、それを本来読み込むべき正規のファイルだと勘違いして読み込んでしまいます。
その結果、プログラムは攻撃者の意図したとおりに動作させられてしまい、情報が盗まれたり、コンピュータを操作されたりするなどの被害が発生する可能性があります。
攻撃の手口 | 内容 | 被害 |
---|---|---|
外部ファイル読み込みの悪用 | プログラムが必要とする外部ファイルと同じ名前の悪意のあるファイルを作成し、プログラムが探しに行く場所に置く。 | 情報窃取、コンピュータ操作等の被害 |
具体的な攻撃例
– 具体的な攻撃例
不正なプログラムであるDLLを、特定の場所に置いておくだけで攻撃できてしまう可能性があります。
例えば、外部から接続できるUSBメモリや、ネットワークを通じてファイルを共有するフォルダなどに、攻撃対象のアプリケーションがあるとします。攻撃者は、そのアプリケーションが使うDLLと同じ名前の不正なDLLを仕込みます。そして、利用者がそのアプリケーションを起動すると、不正なDLLが読み込まれてしまい、攻撃が実行されてしまうのです。
また、ソフトウェアをインストールする時や、最新の状態に更新する時にも、DLLハイジャックの危険があります。
攻撃者は、インストールや更新の作業に介入し、正規のDLLを不正なDLLにすり替えることで、システムに悪意のあるソフトウェアを感染させることが可能になります。
攻撃手法 | 攻撃経路 | 攻撃例 |
---|---|---|
DLLハイジャック | 外部デバイス経由 | USBメモリに攻撃対象のアプリケーションが使用するDLLと同じ名前の不正なDLLを仕込む。アプリケーション起動時に不正なDLLが読み込まれ攻撃が実行される。 |
DLLハイジャック | ネットワーク経由 | ファイル共有フォルダに攻撃対象のアプリケーションが使用するDLLと同じ名前の不正なDLLを仕込む。アプリケーション起動時に不正なDLLが読み込まれ攻撃が実行される。 |
DLLハイジャック | ソフトウェアインストール・アップデート | インストールや更新作業に介入し、正規のDLLを不正なDLLにすり替える。システムに悪意のあるソフトウェアを感染させる。 |
SolarWindsの大規模サイバー攻撃
2020年に明らかになった、ネットワーク管理ソフト大手SolarWinds社を標的としたサイバー攻撃は、その規模の大きさ、そして手口の巧妙さから世界中に大きな衝撃を与えました。この攻撃では、ソフトウェアの機能を拡張するために広く用いられている「動的リンクライブラリ(DLL)」という仕組みに潜む脆弱性、「DLLハイジャック」が悪用されました。
攻撃者は、SolarWinds社が提供するネットワーク管理ソフトウェア「Orion」のアップデートプログラムに目をつけました。そして、正規のアップデートプログラムに不正なプログラムコードを仕込み、正規のDLLファイルに成りすまして配布することで、世界中の企業や政府機関のシステムに侵入することに成功したのです。
この攻撃の恐ろしい点は、利用者が正規のアップデートだと信じ込んでしまうため、セキュリティ対策ソフトによる検出や管理者による発見が非常に難しいという点にあります。実際、多くの組織が、この不正なアップデートプログラムを気づかずに実行してしまい、機密情報が盗み出されるなどの深刻な被害が発生しました。
SolarWinds社の事件は、DLLハイジャックが、国家レベルの大規模なサイバー攻撃にも利用されうることを如実に示したと言えるでしょう。ソフトウェアの脆弱性を悪用したサイバー攻撃は、今後も増加していくことが予想されます。企業や組織は、セキュリティ対策ソフトの導入だけでなく、常に最新の情報を入手し、システムの脆弱性を解消するための対策を講じていくことが重要です。
攻撃名 | 標的 | 攻撃手法 | 影響 |
---|---|---|---|
SolarWinds Orion攻撃 | ネットワーク管理ソフト大手SolarWinds社とその顧客(企業・政府機関) | DLLハイジャック – 正規のアップデートプログラムに不正なコードを混入 – 正規のDLLファイルになりすまして配布 |
– 世界中の企業や政府機関のシステムへの侵入 – 機密情報の盗難 – セキュリティ対策ソフトによる検出・管理者による発見が困難 |
対策方法
– 対策方法DLLハイジャックは、決して防ぐことができない脅威ではありません。システム管理者やソフトウェア開発者は、いくつかの対策を講じることで、そのリスクを大幅に減らすことが可能です。まず、アプリケーションの開発段階において、DLLの読み込みパスを明確に指定することが重要です。DLLとは、アプリケーションが共通して利用するプログラム部品のようなものです。アプリケーションは、必要なDLLを読み込むことで様々な機能を実現します。しかし、悪意のある攻撃者が、偽のDLLをアプリケーションに読み込ませようとする可能性があります。これを防ぐためには、アプリケーションが参照するDLLの場所を明確に指定しておく必要があります。これにより、アプリケーションが不正なDLLを読み込んでしまうリスクを低減できます。また、システム全体に最新のセキュリティパッチを適用し、脆弱性を解消することも重要です。オペレーティングシステムやアプリケーションには、開発段階では分からなかった欠陥(脆弱性)が見つかることがあります。この脆弱性を悪用されると、システムが攻撃を受けてしまう可能性があります。脆弱性を解消するためには、開発元から提供されるセキュリティパッチを適用する必要があります。こまめにセキュリティパッチを適用することで、システムを最新の状態に保ち、DLLハイジャックを含む様々な攻撃からシステムを守ることができます。さらに、ファイアウォールやアンチウイルスソフトなどのセキュリティ対策ソフトを導入し、不正なアクセスやマルウェアの侵入を防ぐことも有効な対策となります。ファイアウォールは、外部からの不正なアクセスを遮断する壁の役割を果たします。一方、アンチウイルスソフトは、コンピュータウイルスなどのマルウェアを検知し、駆除します。これらのセキュリティ対策ソフトを導入することで、悪意のある攻撃からシステムを守り、DLLハイジャックのリスクを低減することができます。
対策 | 説明 |
---|---|
DLLの読み込みパスを明確に指定 | アプリケーションが参照するDLLの場所を明確に指定することで、不正なDLLの読み込みを防ぐ。 |
最新のセキュリティパッチの適用 | OSやアプリケーションの脆弱性を解消し、攻撃のリスクを低減する。 |
セキュリティ対策ソフトの導入 | ファイアウォールやアンチウイルスソフトにより、不正なアクセスやマルウェアの侵入を防ぐ。 |