« Microsoftが2009年7月緊急パッチを予告! | トップページ | 【写真】クエスチョンマーク »

Microsoftが2009年7月緊急パッチを公開

Microsoft(マイクロソフト)は、2009年7月緊急パッチのリリースしました。

  • MS09-034 Internet Explorer 用の累積的なセキュリティ更新プログラム (KB972260)  緊急 要再起動
  • MS09-035 Visual Studio の Active Template Library の脆弱性により、リモートでコードが実行される (KB969706)  警告 要再起動

以上、計2件です。
WindowsXP SP3及びWindowsVista SP2にインストールしましたが問題は発生しませんでした。

今回の脆弱性はMicrosoft Active Template Library (ATL) に起因するものです。
Microsoftは、同社のブログ(Security Development Lifecycle(SDL))の中で、コード内の「&」(アンパサンド)の有無が原因であると認めました。

MicrosoftのセキュリティプログラムマネージャーであるMichael Howard氏が提示したコードによると

__int64 cbSize;
hr = pStream->Read((void*) &cbSize, sizeof(cbSize), NULL);
BYTE *pbArray;
HRESULT hr = SafeArrayAccessData(psa, reinterpret_cast(&pbArray));
hr = pStream->Read((void*)&pbArray, (ULONG)cbSize, NULL);

の中の「&」があることで問題が発生する。
正しいコードは、最後の行にある引数が違うと…

hr = pStream->Read((void*)pbArray, (ULONG)cbSize, NULL);』

最後の行にある最初の引数「pbArray」には「&」がありません。

この一文字で、意味が大きく変わってきます。
「&pbArray」は、変数自身のアドレスを表します。
「&」がついていない「pbArray」変数の場合、「pbArray」変数にに格納されているアドレスを表すのです。

したがって、「&pbArray」を引数で渡した場合、pbArray変数自身を参照したり書き換えようとします。
「pbArray」を引数で渡した場合は、「pbArray」が指し示すアドレスを参照したり書き換えるのです。
「&」ひとつの有無で、参照したり書き換えたりするアドレスが違うのです。

なので一文字とは言え、この違いはとても大きいのです。

MS、IEと「Visual Studio」の緊急パッチを公開--ActiveX攻撃に対処
「IE」に対する最新攻撃の原因、たった1つのタイプミス--MSが認める
Security Development Lifecycle(SDL)

« Microsoftが2009年7月緊急パッチを予告! | トップページ | 【写真】クエスチョンマーク »

Windows」カテゴリの記事

セキュリティ」カテゴリの記事

パソコン・インターネット」カテゴリの記事

プログラミング」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/150435/45783662

この記事へのトラックバック一覧です: Microsoftが2009年7月緊急パッチを公開:

« Microsoftが2009年7月緊急パッチを予告! | トップページ | 【写真】クエスチョンマーク »