DLLサイドローディング | Codebook|Security News
Codebook|Security News > セキュリティ用語解説 > DLLサイドローディング

DLLサイドローディング

DLLサイドローディングとは、悪意あるDLLを正規のアプリケーションから読み込ませることで、不正なコードを実行する攻撃手法です。正規のアプリケーションを利用して実行されるため、通常のプログラム実行に紛れ込みやすく、検出を回避しやすくなります。このため、DLLサイドローディングはセキュリティ製品による検出を回避する目的でも利用されます。

DLLとは、Windows環境で複数のアプリケーションから利用される関数やプログラムコードなどをまとめたライブラリファイルのことを指します。正式名称は「Dynamic Link Library(ダイナミック・リンク・ライブラリ)」で、略してDLLと呼ばれます。

Windows向けのアプリケーションは、特定のDLL内の関数を使う必要がある場合などに、そのDLL名を指定してWindows OSに当該DLLを呼び出すよう伝えます。OSは、そのDLLが置かれていそうな場所を決まった順序で順々にチェックし、見つかった場合にこれをロードします。

しかし、DLL検索の順序が決まっているという事実は、以下のような流れで攻撃者に悪用されることがあります。このようなDLL検索順序の悪用は、「DLLハイジャッキング(※)」とも呼ばれます。

  • 攻撃者はまず、マルウェアやバックドアなどを仕込んだ悪意あるDLLを作成します。ファイル名は、正規のファイル名と一致させます。
  • 次に、ロードのために使う、DLL検索順序を安全に実装していない正規のアプリケーションを洗い出します。
  • 悪意あるDLLを、②のアプリケーションの実行ディレクトリに配置します。この際、ロード順序を考慮してこの悪意あるDLLが最初にロードされるようにします。
  • ②で特定した正規のアプリケーションが起動されると、本来読み込まれるべきDLLではなく、攻撃者の用意した悪意あるDLLが実行され、不正なコードが実行されます。

このように、DLL検索順序を悪用し、正規のアプリケーションと悪意あるDLLを組み合わせて実行するのがDLLサイドローディングの基本的な仕組みです。

国家との繋がりが疑われるAPTグループなど、さまざまなサイバー攻撃者がDLLサイドローディングの手口を採用していることが報告されています。

※なお、DLLサイドローディングは「DLLハイジャッキング」とほぼ同義で扱われる場合もありますが、文献によっては両者を区別して説明しているものもあります。

Special Feature特集記事

Cyber Intelligenceサイバーインテリジェンス

Security情報セキュリティ