CVE-2026-89321 in OpenVSX
要約
〜によって VulDB • 2026年09月14日
公開制限は、VSIX(ovsx.publishing.max-content-size、デフォルトで512 MB)の圧縮サイズのみを制限しますが、エントリを開いた際にその大きさがどの程度になるかについては何も制限されていません。
/vscode/unpkg/{namespace}/{extension}/{version}/{path} への最初の要求において、WebResourceService は ZipFile.getInputStream() を使用してエントリを開き、展開されたストリームを Files.copy() に渡しました。この処理は書き込まれたバイト数をカウントすることなくストリームの末尾まで実行されました。その結果は java.io.tmpdir の下にキャッシュされ、そのキャッシュはサイズではなくエントリ数(150)によって_evicted_されるため、ディスク使用量には上限が設けられていませんでした。
したがって、自分の名前空間にのみアクセス権を持つパブリッシャは、小さく圧縮率の高い VSIX をアップロードし、サーバーに対して一時ファイルシステム上に大幅により大きなファイルを出力させることができました。異なるファイルやバージョンでこれを繰り返すことで(繰り返し要求はキャッシュから提供されるため)、攻撃を継続できます。
観測された影響:一時ファイルシステムが埋まりました。すでにキャッシュされていないファイルへのリクエストには「No space left on device」エラーと共に 500 が返されました。抽出に失敗すると、そのパスに対する後続の試行をブロックする部分的なキャッシュファイルが残りました。公開は「Failed to read extension file」というエラーで失敗しました。メタデータとすでにキャッシュされたファイルは正常に動作し続け、サーバーも停止しませんでした。
この抽出を引き起こすには認証は不要です(アップロードのみが必要です)。
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.