Deno v1.32.0 には脆弱性が存在する
すでに Deno 公式からはアナウンスがありましたが、 3/22 にリリースされた v1.32.0 を紹介する各ブログ記事ではこのことに触れられていなかったため、当記事を書いています.
Deno v1.32.0 とは
Deno v1.32.0 は 2023年3月22日 にリリースされたバージョンです.
このバージョンでは主に以下の変更が行われました.
- Node.js との互換性が更に強化
- Web Workers ・ dynamic import に対する
deno compile
のサポート -
deno run
で拡張子のないファイルを実行できるように - Deno API ・ Web API にいくつかの変更
- 標準ライブラリにいくつかの破壊的な変更
- TypeScript 5.0 に対応
package.json
で指定されている npm モジュールを npm:
指定なしにインポートできるようにもなってます.
実質 Node.js かそれ以上のランタイムになりましたね、不覚にも笑ってしまいました.
CVE-2023-28445
とは
今回の該当脆弱性 ArrayBuffer
において領域圏外へのアクセスが可能になってしまう脆弱性です.
Deno Deploy のユーザーはこの影響を受けることはありません.
この脆弱性は v1.32.0 のみに存在しているため、 v1.31.3 のままにしておくか、 ArrayBuffer
が無効化された v1.32.1 または不具合が修正された v1.32.2 にアップデートすることで修正ができます.
脆弱性への対処
脆弱性 CVE-2023-28445
への対処はいずれかの手順を踏みます.
ダウングレードする
ダウングレードは deno upgrade
に --version
フラグを使用して特定のバージョンをインストールする機能を応用することで可能です.
deno upgrade --version 1.31.3
アップデートする
3/24 にリリースされた v1.32.1 では ArrayBuffer
等を無効化する変更 ( v1.32.2 では修正 ) が行われているので、ローカルにある Deno のバージョンが v1.32.0 の場合は deno upgrade
を使い、アップデートを行います.
# バージョンを確認
deno --version
>> 1.32.0
# アップデート
deno upgrade
直接無効化
諸事情でアップデートが出来ない場合は deno run
での実行時に --v8-flags
フラグを使用することで ArrayBuffers
を無効化したまま実行することが可能です.
deno run --v8-flags=--no-harmony-rab-gsab ...
まとめ
Deno の公式ブログでの v1.32.0 告知記事では v1.32.1 へのアップデートがアナウンスされていましたが、公式Twitterではそのような文言はなかったため、私も「実質 Node じゃん」のくだりまでは全く気づきませんでした.(幸い、 Homebrew が v1.32.2 を落としていたので何事もなかったですが....)
今回の脆弱性 CVE-2023-28445
のベーススコアは 9.9
(深刻度は Critical
) と認定されているので、そこそこ大きい脆弱性です.
ご自身のローカルの Deno がもし v1.32.0 のままだったら直ぐにアップデートを行って修正パッチを適用してくださいね.
参考
Discussion