0
0

More than 3 years have passed since last update.

Spectre

Last updated at Posted at 2021-06-04

Spectre

とは何か

2018年1月3日に発表された、マイクロプロセッサ(≒CPU)の一般的最適化手法である「投機的実行」などを悪用したハードウェアレベルの脆弱性。
(上述の通りハードウェアアーキテクチャに由来する脆弱性であり、修復が困難なことから、「相当のあいだ幽霊(Spectre)のように我々に取り憑くだろう」と説明されている)

この脆弱性の種別は、「サイドチャネル攻撃」に分類され、
具体的な脅威としては、正当な権限のないメモリの領域(ex: 他のアプリケーションやカーネルのメモリ領域)にアクセスすることが可能になる、という重篤度の高いもの。

このSpectreと同時期に発見され、かつ類似性・関連性の高い脆弱性として、Meltdownがある。
(なお、Meltdownの脆弱性種別は「権限昇格攻撃」に分類される)

フロントエンド(Web界隈)からみたSpectre騒動

これらの脆弱性による騒動においてフロントエンド上特筆すべき事項としては、

  • JavaScriptのJITエンジンに発見された(2つ発行されたCVE番号のうちの1つ:CVE-2017-5753)ことから、フロントエンドとの関連性が強く認識・意識されている脆弱性であること
  • マイクロプロセッサにおけるハードウェアレベルの脆弱性であるため、まずはOS側やブラウザなどのアプリケーション側で回避策が取られつつあること
  • それらと並行してWeb標準側でも「cross-origin isolation」として対策の提案・啓発が進められていること
  • ブラウザベンダ(Chrome, Firefox, Safari)による対症療法として、以下の対応が取られたこと
    • performance.now()が返すタイムスタンプの解像度を下げる
      • サイドチャネル攻撃における、キャッシュヒットを推測するためのタイムスタンプ用途としての当該APIの可用性を下げるため
    • SharedArrayBufferのデフォルト無効化
    • ある手法により、高解像度(nanosecond級)のタイマを実装することでperformance.now()を代替可能なため
      • ある手法:ざっくり解説すると、SharedArrayBufferの「スレッド間で値を相互参照できる」という特性と、Workerによるマルチスレッド処理、その処理スレッド内無限ループでのインクリメント処理を組み合わせて高解像度のタイムスタンプを生成・利用できる、みたいな感じ。
    • 現在では、Chrome, Firefoxにおいてcross-origin isolationedであることを条件に再有効化されている

などが挙げられる。

参照

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