Skip to main content

Chromiumで発生したバッファオーバーフローが複数のパッケージに影響

Blog illustrations vul profile

2020年11月23日

0 分で読めます

Snyk Monthly Vulnerability Profileへようこそ。このシリーズでは、Snykが Security Research Teamによって発見された、または報告を受けた脆弱性を振り返ります。毎月、注目すべき脆弱性を1つ取り上げ、その発見、調査、開示に至るまでの経緯を紹介します。オープンソースコミュニティ全体で、脆弱性の特定と修正に取り組む研究者、開発者、ユーザーにも焦点を当てます。

今月は、Chromiumで使用されているFreeTypeパッケージで発見されたバッファオーバーフローの脆弱性と、脆弱なChromiumコンポーネントを含むことで影響を受けるオープンソースパッケージをSnykが特定した取り組みについて紹介します。


脆弱性:FreeTypeのバッファオーバーフロー

割り当てられたCVE:CVE-2020-15999

Snykアナリスト:複数

発見者:Google Project ZeroのSergei Glazunov

2020年11月2日、Chromiumブラウザーで使用されているFreeTypeフォントレンダリングパッケージで発見されたバッファオーバーフローの脆弱性について、CVE-2020-15999がNational Vulnerability Databaseに公開されました。Chromium Projectのウェブサイトに掲載されたブログ記事によると、この脆弱性の最初の報告は2020年10月19日でした。脆弱性の当初の説明は次のとおりです。

フォントに埋め込まれたPNG画像を処理する関数`Load_SBit_Png`に脆弱性が存在します。この関数は次の処理を行います。

1) ヘッダーから画像の幅と高さを32ビット整数として取得する。

2) 取得した値を16ビットに切り詰め、`TT_SBit_Metrics`構造体に格納する。

3) 切り詰めた値を使ってビットマップのサイズを計算する。

4) そのサイズでバッキングストアを割り当てる。

5) `png_struct`とバッキングストアをlibpng関数に渡す。

問題は、libpngが`png_struct`に保存されている元の32ビット値を使用することです。そのため、元の幅や高さが65535を超える場合、割り当てられたバッファーにビットマップが収まりません。

バッファオーバーフローの脆弱性を悪用すると、攻撃者がヒープメモリを破損または操作できる可能性があります。その結果、脆弱なシステム上で任意のコードを実行させる悪意あるペイロードを攻撃者が作成できるおそれがあります。

オープンソースへの影響を把握する

Snyk Security Research Teamは脆弱性レポートを定期的に監視し、オープンソースコミュニティへの影響が考えられる場合は、その影響を調査しています。Chromiumブラウザーの場合、Chromiumプロジェクトが公開しているコンポーネントは、ウェブ機能を提供するためにオープンソースパッケージで広く利用されています。そのため、バッファオーバーフローの脆弱性が開示されると、Snyk Research Teamは脆弱なバージョンのChromiumコンポーネントを含むオープンソースパッケージの調査を開始しました。

調査の結果、SnykチームはFreeTypeパッケージの脆弱性の影響を受けるパッケージを、複数のエコシステムにわたって6つ特定しました。以下の表に一覧を示します。

パッケージ

エコシステム(パッケージマネージャー)

Snyk脆弱性ID

cefsharp.wpf.hwndhost

.Net(NuGet)

SNYK-DOTNET-CEFSHARPWPFHWNDHOST-1023310

cefsharp.wpf

.Net(NuGet)

SNYK-DOTNET-CEFSHARPWPF-1023309

cefsharp.winforms

.Net(NuGet)

SNYK-DOTNET-CEFSHARPWINFORMS-1023307

cefsharp.common

.Net(NuGet)

SNYK-DOTNET-CEFSHARPCOMMON-1023308

electron 

JavaScript(npm)

SNYK-JS-ELECTRON-1021884

org.webjars.npm:electron

Java(Maven)

SNYK-JAVA-ORGWEBJARSNPM-1021885

特定された4つの.Netコンポーネントは、Chromiumプロジェクトから直接提供されているコントロールです。脆弱性を修正した更新版がリリースされましたが、これらのコンポーネントをアプリケーションやサービスで使用している開発者は、脆弱性を修正するために新しいバージョンへ更新する必要があります。

さらにSnykは、ElectronフレームワークのJavaScript版とJava版の両方が、Chromiumの脆弱なコンポーネントを利用していることを発見しました。Electronは、Discordをはじめとする多くの著名なアプリケーションで使用されている人気のフレームワークです。Electronフレームワークには更新が行われ、10月下旬に新しいバージョンがリリースされました。フレームワークを利用する開発者は、ソフトウェアから脆弱性を取り除くために、新しいバージョンへ更新する必要があります。

振り返り

このバッファオーバーフロー脆弱性の発見に至った経緯は、Snyk Security Research Teamがオープンソースコミュニティ全体のセキュリティ態勢向上に取り組む方法を、また一つ示しています。Chromiumのような広く利用されている脆弱なパッケージが、他のプロジェクトの依存関係としてどこで使われているかを調査することで、欠陥を明らかにし、オープンソースのメンテナーがソフトウェア内で対処できるよう支援します。

また、Snykの脆弱性データベースを可能な限り充実させることにもつながります。これにより、開発者はオープンソースセキュリティを活用し、ソフトウェアの依存関係に脆弱性が含まれている場合に把握できます。

CTFを始めよう

オンデマンドのバーチャル入門ワークショップで、CTFチャレンジの解き方を学びましょう。

カテゴリー:

続きを読む

Blog

フロンティアモデルは脆弱性を発見した。攻撃者だけがエクスプロイトチェーンを見つけた。

静的解析で欠陥は見つかりましたが、ライブ攻撃テストで侵害につながる連鎖を実証できたのは唯一でした。Evo COS、Claude Security、Claude Code Securityを比較します。

feature insights context
Blog

自律型攻撃はすでに始まっている。防御もそのスピードに追いつかなければならない。

自律型攻撃者によって、防御に使える時間は短くなっています。継続的な検出、修復、検証、予防で、セキュリティチームが攻撃に歩調を合わせる方法をご紹介します。

Blog

脆弱性のバックログはもはや技術的負債ではなく、攻撃対象領域です

増え続ける脆弱性のバックログは、単なる技術的負債ではありません。攻撃対象領域そのものです。古いリスクの前提、攻撃の自動化、そして連鎖する検出結果によって、なぜ新たなアプローチが求められているのかを解説します。