Notepad++ 8.5.7 がリリース:深刻な脆弱性 CVE-2023-40031 などに対応

Notepad++ 8.5.7 released with fixes for four security vulnerabilities

2023/09/08 BleepingComputer — Notepad++ のバージョン 8.5.7 がリリースされ、バッファ・オーバーフローに起因する、複数のゼロデイ脆弱性が修正された。そのうちの 1 つは、ユーザーを騙して特別に細工されたファイルを開かせることで、任意のコード実行に至らせる可能性があると指摘されている。Notepad++ は、多くのプログラミング言語をサポートし、プラグインによる拡張が可能であり、生産性を向上させるためのマルチタブ編集やシンタックス・ハイライトなどの機能を提供する、人気の無償ソースコード・エディタだ。


GitHub のセキュリティ研究者である Jaroslav Lobačevski は、Notepad++ バージョン 8.5.2 に存在する脆弱性を、2ヶ月をかけて開発者に報告した。

この研究者の公開アドバイザリーでは、これらの欠陥に対する PoC エクスプロイトも公表されているため、それぞれのユーザーは、可能な限り早急にプログラムをアップデートする必要がある。

Notepad++ のセキュリティ欠陥

発見された脆弱性は、Notepad++ で使用される様々な関数やライブラリにおける、ヒープ・バッファの書込/読取に関するオーバーフローに起因している。

GitHub の研究者が発見した、4つの欠陥の概要は以下の通りである:

CVE-2023-40031:UTF8_16_Read::convert 関数のバッファオー・バフロー。UTF16 から UTF8 へのエンコード変換に関する誤った仮定が原因である。

CVE-2023-40036:CharDistributionAnalysis::HandleOneChar 関数における、 バッファ・サイズ・ベースの配列インデックスの並び順による、 グローバル・バッファオーバーフロー。具体的には、uchardet ライブラリを使用した場合に発生する。

CVE-2023-40164:nsCodingStateMachine::NextState 関数におけるグローバル・バッファ読込みオーバーフロー。Notepad++ で使用される uchardet ライブラリの特定のバージョンに関連しており、charLenTable バッファ・サイズへの依存に起因している。

CVE-2023-40166: FileManager::detectLanguageFromTextBegining 関数において、ファイル言語検出時にバッファ長のチェックに失敗するため、ヒープバッファ読込みオーバーフローが発生する。

これらの脆弱性の中で最も深刻なものは、CVE-2023-40031 である。CVSS v3 のスコアは 7.8 (高) であり、任意のコード実行にいたる可能性がある。

ただし、あるユーザーは、この欠陥がエラーであるため、この欠陥を使ってコードを実行できる可能性はないと反論している。

この欠陥のためにオープンされた GitHub スレッドへのコメントは、「技術的にはバッファオーバーフローであるが、実際には off-by-two のバグに過ぎず、任意のコード実行にいたる可能性は実質的にゼロである」と指摘している。

Lobačevski によると、その他の3件の脆弱性は、Medium の深刻度 (CVSS : 5.5) の問題であり、内部メモリの割り当て情報をリークに悪用される可能性があるとのことだ。

修正予定

2023年8月21日に、Lobačevski のブログと PoC エクスプロイトが 公開されたが、Notepad++ の開発チームは、ユーザー・コミュニティが解決を求めるまで、この状況への対応を急がなかった。

結局のところ、8月30日に、この問題を認める publuc issue が作成され、9月3日に4件の欠陥の修正がメイン・コード・ブランチに反映された。

すでに、Notepad++ 8.5.7 がリリースされている。この4件の脆弱性などのバグ (変更履歴に記載されている) を修正するためには、これをインストールする必要がある。