IBMは7月31日、IBM iのライセンスプログラムのオプション39に複数の脆弱性があり、攻撃者に任意のコードを実行される恐れがある、と発表した。
IBM iのライセンスプログラムのオプション39は、オープンソースで提供されているInternational Components for Unicode(以下、ICU)のICU4Cバージョン4.0を使用して構築されているが、このICU4Cバージョン4.0に、IBMの修正では対応できない脆弱性が含まれている。
ICUは、アプリケーションをILE言語で記述する際に使用されるUnicodeサービスを提供するC/C++ライブラリ。
今回の脆弱性はオープンソースのICUにあるため、IBMによる修正は提供されない。
また本脆弱性は古いICUバージョン(4.0)に起因するため、現時点では更新やパッチによる修正が不可能。アプリケーションコード側での入力検証が唯一の有効な対処方法となる。
影響を受けるOSバージョンは、
IBM i 7.6
IBM i 7.5
IBM i 7.4
IBM i 7.3
IBM i 7.2
以下の脆弱性が指摘されている。
CVE-2017-14952
ICU内のライブラリ内部に存在するi18n/zonemeta.cppファイルに、同じメモリ領域を2回解放してしまうダブルフリー脆弱性があり、攻撃者が任意のコードを実行する恐れがある。
CVSS基本スコア:9.8(緊急対応が必要)
CVE-2011-4599
ICU内のライブラリ内部に存在するcommon/uloc.cファイルの_canonicalize 関数で、スタックベースのバッファオーバーフローの脆弱性がある。これにより、攻撃者が任意のコードを実行する恐れがある。
CVSS基本スコア:7.5(深刻度レベル:高)
CVE-2017-17484
ICU内のライブラリ内部に存在するucnv_u8.cppファイルのucnv_UTF8FromUTF8 関数にスタックベースのバッファオーバーフローの脆弱性がある。UTF-8 → UTF-8変換の誤処理によりDoS(サービス拒否)攻撃やアプリケーションのクラッシュなどの影響を受ける恐れがある。
CVSS基本スコア:7.3(深刻度レベル:高)
回避策および緩和策
IBMでは、API入力データのサニタイズ(安全化)の実施により影響を緩和することを推奨している。
CVE-2017-17484(ucnv_UTF8FromUTF8())
ucnv_UTF8FromUTF8()は、ICUライブラリの内部関数であり、UTF-8テキストの変換処理を行うために使用されるユーティリティ関数。ICUの文字エンコーディング変換フレームワーク内で使われている。
推奨対策
・出力バッファが結果を収容できる十分なサイズであることを確認し、UErrorCode をチェックしてエラー処理を行う。入力文字列が適切なUTF-8であることを検証する。
・u_strFromUTF8()(UTF-8→UTF-16)を使用し、不正な UTF-8 を拒否
・不正なUTF-8は置換などで無効化する。
・ucnv_convert() を使用し、エラーコールバックを設定
CVE-2011-4599(_canonicalize)
_canonicalize 関数は、ICUライブラリの内部関数で、ロケール識別子(Locale ID)を標準的な形式に変換(正規化 / canonicalize)するために使用される。使用API:uloc_getName, uloc_getBaseName, uloc_canonicalize。
推奨対策
・信頼されたロケールIDのみを許可(ホワイトリスト方式)
・不正な文字や長すぎる入力を拒否
・バッファは ULOC_FULLNAME_CAPACITY に基づいて確保
・戻り値のサイズがバッファを超えていないかチェックし、U_BUFFER_OVERFLOW_ERROR を処理
・ucol_open によるキーワード検証を先に行う
CVE-2017-14952(ZoneMeta::createOlsonToMetaMap)
ZoneMeta::createOlsonToMetaMap は、ICUライブラリ内の内部関数で、次のような役割を持っている。
推奨対策
・ZoneMeta::createOlsonToMetaMap() の直接呼び出しを回避またはスタブ化
・ロケール ID のホワイトリスト化
・ICU ID 文字列のバリデーション
原文:Security Bulletin: IBM i is affected by multiple vulnerabilities in International Components for Unicode (ICU) option 39 [CVE-2017-14952 CVE-2011-4599 CVE-2017-17484].
https://www.ibm.com/support/pages/node/7241126
[i Magazine・IS magazine]