【注意】VCLライブラリの脆弱性[CVE-2014-0993]の影響範囲が広範囲な件

JVNDB-2014-004159 - JVN iPedia - 脆弱性対策情報データベース

     エンバカデロ・テクノロジーズ

        Embarcadero C++Builder XE6 20.0.15596.9843
        Embarcadero Delphi XE6 20.0.15596.9843

    本脆弱性は上記のバージョンで報告されました。VCL を含むその他の製品バージョンも影響を受ける可能性があります。

「Embarcadero Delphi」と「C++Builder」のVCLに脆弱性(JVN) | ScanNetSecurity (脅威、セキュリティホール・脆弱性のニュース)

Embarcadero Technologiesが提供する「Embarcadero Delphi」と「C++Builder」のVCLにバッファオーバーフローの脆弱性(CVE-2014-0993)が存在すると「Japan Vulnerability Notes(JVN)」で発表した。なお、VCLを含むその他の製品バージョンも影響を受ける可能性がある。

「Embarcadero Delphi XE6 Version 20.0.15596.9843」およびEmbarcadero C++Builder XE6 Version 20.0.15596.9843」に含まれているVCLは、BMPファイルの処理が原因でバッファオーバーフローの脆弱性が存在する。この脆弱性が悪用されると、細工されたBMPファイルを処理することで任意のコードを実行される可能性がある。JVNでは、開発者が提供する情報をもとに各製品をアップデートし、アプリを再構築するよう呼びかけている

どこのサイトも XE6 の影響にしか言及していない…。
古いバージョンはどうなのか・ω・?

C++Builder XE7 | C++ development for Windows, Mac, iOS and Android

Delphi および C++Builder XE6 以前の製品(RAD Studio XE6以前に含まれる両製品を含む)、およびそれを用いて開発したアプリケーションで VCL の BMP ファイル読み込み処理が影響対象です。なお、FireMonkey アプリケーションならびにDelphi / C++Builder / RAD Studio XE7は影響対象外です。

なんか微妙な表現 ・ω・;


Corelabs site Delphi and C++ Builder VCL library Buffer Overflow
Delphi and C++ Builder VCL library Heap Buffer Overflow Advisory | Core Security
調べてみたら言及してるところがあった!

4. Vulnerable Packages

    EmbarcaderoR C++BuilderR XE6 Version 20.0.15596.9843
    EmbarcaderoR DelphiR XE6 Version 20.0.15596.9843

We also found vulnerable applications that were built with the following development tools:
我々は以下の開発ツールでビルドしたアプリケーションにも脆弱性を発見しています。

    Delphi XE5 / C++Builder XE5 (Delphi:Win32) (C++Builder:Win32)
    Delphi XE4 / C++Builder XE4 (Delphi:Win32) (C++Builder:Win32)
    Delphi XE3 / C++Builder XE3 (Delphi:Win32) (C++Builder:Win32)
    Delphi XE2 / C++Builder XE2 (Delphi:Win32) (C++Builder:Win32)
    Delphi XE / C++Builder XE (Win32)
    Delphi 2010 / C++Builder 2010 (Win32)
    Delphi 2009 / C++Builder 2009 (Win32)
    Delphi 2007 / C++Builder 2007 for Win32
    Delphi 2006 / C++Builder 2006 (Win32) and Delphi/C++Builder 2007 for Win32
    Delphi 2005 (Win32)
    Delphi 7 (and 7.1)
    Delphi 6 / C++Builder 6
    Delphi 5 / C++Builder 5
    C++Builder 4
    Delphi 4

Other 32b and 64b versions could be also affected.

うわぁ、ほとんど全部じゃないですか!

C++Builder での 修正方法

BCB
まず、これをプロジェクトごとに指定。

1つ目

Source\vcl を開いて Graphics.pas を コピーしてプロジェクトに追加。
TMetafile.ReadEMFStream を検索して、以下のコードを追加

  if EnhHeader.nBytes < Sizeof(EnhHeader) then
InvalidMetafile;

BCB2
TMetafile.ReadEMFStream ってことなので、 TMetaFile を EMF ファイルから Streamとして読み込んだ時だけ発現するかなり限定的な脆弱性であることが分かる。

なお、TMetafile.ReadEMFStream は TMetafile.LoadFromStream からも呼ばれる。

  TMetafile* f = new TMetafile;
  TFileStream *fs = new TFileStream("D:\\test\\image2.emf", fmOpenRead);
  f->LoadFromStream(fs);

テスト用コード

vc2
ちゃんとブレークポイント入ったね・ω・ OK

2つ目はちょっとわかりにくい場所
TBitMap.ReadDIB にコード追加

  if (biClrUsed * DIBPalSizes[OS2Format]) > (256 * SizeOf(TRGBQuad)) then
InvalidGraphic({$IFNDEF CLR}@{$ENDIF}SInvalidBitmap);  


vc3

2つ目は TBitmap の LoadFromFile でブレークポイントが発生した。
これはあまり潜在的じゃない。危険だ ・ω・!

というわけで、Bitmap 読み込みだけじゃなく 拡張メタファイル (EMF) を読み込んだ時の脆弱性でもあるようだ。

【注意】VCLライブラリの脆弱性[CVE-2014-0993]の影響範囲が広範囲な件

JVNDB-2014-004159 - JVN iPedia - 脆弱性対策情報データベース

     エンバカデロ・テクノロジーズ

        Embarcadero C++Builder XE6 20.0.15596.9843
        Embarcadero Delphi XE6 20.0.15596.9843

    本脆弱性は上記のバージョンで報告されました。VCL を含むその他の製品バージョンも影響を受ける可能性があります。

「Embarcadero Delphi」と「C++Builder」のVCLに脆弱性(JVN) | ScanNetSecurity (脅威、セキュリティホール・脆弱性のニュース)

Embarcadero Technologiesが提供する「Embarcadero Delphi」と「C++Builder」のVCLにバッファオーバーフローの脆弱性(CVE-2014-0993)が存在すると「Japan Vulnerability Notes(JVN)」で発表した。なお、VCLを含むその他の製品バージョンも影響を受ける可能性がある。

「Embarcadero Delphi XE6 Version 20.0.15596.9843」およびEmbarcadero C++Builder XE6 Version 20.0.15596.9843」に含まれているVCLは、BMPファイルの処理が原因でバッファオーバーフローの脆弱性が存在する。この脆弱性が悪用されると、細工されたBMPファイルを処理することで任意のコードを実行される可能性がある。JVNでは、開発者が提供する情報をもとに各製品をアップデートし、アプリを再構築するよう呼びかけている

どこのサイトも XE6 の影響にしか言及していない…。
古いバージョンはどうなのか・ω・?

C++Builder XE7 | C++ development for Windows, Mac, iOS and Android

Delphi および C++Builder XE6 以前の製品(RAD Studio XE6以前に含まれる両製品を含む)、およびそれを用いて開発したアプリケーションで VCL の BMP ファイル読み込み処理が影響対象です。なお、FireMonkey アプリケーションならびにDelphi / C++Builder / RAD Studio XE7は影響対象外です。

なんか微妙な表現 ・ω・;

(さらに…)

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です