CVE-2025-26519 Exposes Applications Using musl libc to Remote Code Execution
2025/02/18 SecurityOnline — 組み込みシステムや、リソースが限られた環境で多用される、ライトウェイト C スタンダード・ライブラリ musl libc に深刻な脆弱性が発見された。その脆弱性 CVE-2025-26519 (CVSS 8.1) の悪用に成功した攻撃者は、脆弱なシステムで任意のコード実行の可能性を手にする。この脆弱性は、iconv() 関数内の入力制御における、範囲外書き込みプリミティブに起因する。

musl libc はフットプリントが小さく、確実性を重視しているため、人気を博している選択肢であり、広範に使用されている。したがって、この脆弱性は特に懸念されている。この問題は、iconv() が文字エンコード変換を処理する方法に、特に EUC-KR から UTF-8 に変換する方法にある。この欠陥は Nick Wellnhofer が発見したものであり、EUC-KR デコーダーでの不適切な入力検証と、入力デコーダーが常に有効な Unicode スカラー値を生成するという、UTF-8 エンコーダーの想定との組み合わせが原因となる。
脆弱性 CVE-2025-26519 は、アプリケーションが出力エンコーディングとして UTF-8 を使用し、入力エンコーディングとして EUC-KR の iconv_open を使用するときに発生する。重要な点は、対象となるアプリケーションの前提として、結果の変換記述子を用いて、信頼できない入力を処理する状況が必要となる。一般的なシナリオでは、信頼できないデータ (XML/HTML/MIME) の宣言された MIME 文字セットを、 iconv_open も対する入力として使用し、任意のエンコーディングの入力を UTF-8 に変換するケースが挙げられる。したがって、悪意の入力を作成する攻撃者は、この脆弱性を悪用してメモリを上書きし、影響を受けるシステムの制御を奪う可能性を得る。
脆弱なコードは、EUC-KR サポートが導入された、musl libc のバージョン 0.9.13 〜 1.2.5 に存在する。ユーザーに対して強く推奨されるのは、必要な修正が含まれているバージョン 1.2.6 以降へと、速やかにアップデートすることだ。
musl libc ベースのディストリビューションのユーザーの場合は、ディストリビューションの公式更新チャネルを通じて更新されるパッケージの入手が推奨される。また、独自の musl libc ビルドを管理しているユーザー向けには、ソース・パッチも用意されている。これらのパッチは、バグの根本原因である入力バイトの不正確な検証と、境界外書き込みにつながる問題に対処している。
特に、静的にリンクされたバイナリのケースで、更新やパッチ適用が難しい場合には、一時的な回避策も利用できる。そのためには、バイナリを 16 進エディタで変更して、EUC-KR サポートを無効化する必要がある。具体的には、バイト・シーケンス “euckr\0ksc5601\0ksx1001\0cp949\0” を “—–\0——-\0——-\0—–\0” で置き換える必要がある。それにより、iconv_open による EUC-KR とエイリアスの認識が効果的に防止され、脆弱なコード・パスの回避が可能になる。この方式により、差し迫った脅威は軽減されるが、EUC-KR デコード機能も無効化されてしまう。
この脆弱性は、musl libc を使用するシステムに対して、特に信頼できない入力を処理するシステムに対して、深刻なリスクをもたらすものとなる。リモート・コード実行の可能性があるため、ユーザーにとって重要なことは、提供されている緩和策を可能な限り早急に適用することだ。潜在的な悪用から保護するために、システムを調査/分析し、musl libc のパッチ・バージョンが実行されていることを確認してほしい。
このブログでは初登場となる、musl libc の脆弱性が FIX とのことです。musl libc をWikipedia で調べてみたところ、「Linux カーネルに基づいた、オペレーティング・システム向けの標準 C ライブラリ」と紹介されていました。広く使われているツールだからこそ、悪用された場合の影響も大きく、広範囲に及ぶ可能性があります。ご利用のチームは、パッチをご確認ください。
You must be logged in to post a comment.