0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DenoAdvent Calendar 2024

Day 15

Deno の --allow-hrtime パーミッションフラグが削除された理由

Last updated at Posted at 2024-12-14

Deno 2 になって --allow-hrtime パーミッションフラグが削除されました。

--allow-hrtime は、高精度の時刻情報の取得を許可するためのフラグです。このフラグを与えることで、performance.now() API からナノ秒単位の時刻を取得することが出来ます(出来ました)。逆に、このフラグを与えない場合は、performance.now() の精度がミリ秒単位に丸められるという挙動になっていました。

console.log(peformance.now());
$ deno -v
deno 1.46.3
$ deno a.js 
16
$ deno --allow-hrtime a.js 
9.945084 

このような高精度の時刻情報を利用して、CPU の投機的実行情報を抜き取る攻撃手法 (Spectre) が知られており、そのような攻撃を封じるために、デフォルトでそのような API を無効化し、明示的に --allow-hrtime フラグを与えた場合のみ許可するという仕様になっていました。

しかし、現在では、このような高精度タイマー情報を利用しなくても、SharedArrayBufferWeb Worker を利用することで、実質的なタイマーを自作する攻撃手法が知られています。したがって、高精度タイマーAPIを封じる事が Spectre 攻撃に対するセキュリティとして機能してないため、このフラグにはあまり存在意義がない状態になっていました。

参考記事

以上の理由によって、Deno 2 では --allow-hrtime パーミッションは削除されました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?