【活用ガイド】

JVNDB-2018-006249

mingw-w64 が生成する実行ファイルにおいて ASLR が機能しない問題

概要

mingw-w64 がデフォルト状態で生成する Windows 実行ファイルはリロケーションテーブルを持たないため、ASLR (アドレス空間配置のランダム化) が適切に機能しません。

ASLR はメモリ上のコードを使った攻撃への対策として用いられる技術で、近年の Windows プラットフォームでも採用されています。ASLR が機能するためには Windows 実行ファイルがリロケーションテーブルを持つ必要があります。しかし、mingw-w64 によって生成された Windows 実行ファイルは、ASLR の有効化を示す「Dynamic base」PE ヘッダがデフォルトで含まれているにもかかわらず、リロケーションテーブルが削除されてしまいます。結果として、mingw-w64 によって生成された実行ファイルには、return-oriented-programming (ROP) 攻撃に対する脆弱性が存在します。

CVSS による深刻度 (CVSS とは?)

影響を受けるシステム


Mingw-w64
  • Mingw-w64

想定される影響

mingw-w64 によって生成された、ASLR が有効化されているとされる Windows 実行ファイルは、実際には ASLR が有効化されていません。結果として、実行ファイルに存在する種々の脆弱性が悪用されやすい状態となります。
対策

[ワークアラウンドを実施する]
mingw-w64 にリロケーションテーブルの作成を強制させることで、本問題による影響を軽減することが可能です。
影響を受けるプログラムのソースコードにおける main 関数の前に、次の 1 行を加えることで、mingw-w64 に対しリロケーションテーブルを持つ実行ファイルの生成を強制することが可能です。

  * __declspec(dllexport)

この 1 行を追加することで、その後に続く関数がエクスポートされます。実行ファイルの生成時に関数名をエクスポートすることで、mingw-w64 はリロケーションテーブルを削除しなくなります。
ベンダ情報

Mingw-w64
CWEによる脆弱性タイプ一覧  CWEとは?

共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2018-5392
参考情報

  1. JVN : JVNVU#99390733
  2. National Vulnerability Database (NVD) : CVE-2018-5392
  3. US-CERT Vulnerability Note : VU#307144
  4. 関連文書 : Bug 17321 - add --enable-reloc-section option to generate proper relocation sections to .exes
  5. 関連文書 : Bug 19011 - Issues with ld on mingw-w64 and bad defaults
更新履歴

  • [2018年08月14日]
      掲載
  • [2019年07月25日]
      参考情報:National Vulnerability Database (NVD) (CVE-2018-5392) を追加