SlideShare a Scribd company logo
Intel LazyFP vulnerability:
Exploiting lazy FPU state switching
暗号とセキュリティ勉強会 2018/6/25
光成滋生
1 / 10
• 昔のOSはlazy FPUという仕組みを使っていた
• この仕組みにFPUレジスタの内容が漏洩する可能性
• LazyFP: Leaking FPU Register State using Microarchitectural
Side-Channels
• https://arxiv.org/abs/1806.07480
• 最近のLinuxでは使っていない
2 / 10
概要
• 小数やベクトル演算専用のコプロセッサ
• かつては別売だった
• i387コプロセッサ10万円
• 今はCPUの中に入ってる
3 / 10
FPU
• 1個のCPU上で複数のスレッドを動かす仕組み
• スレッドを切り替えるときにCPUの状態を入れ換える
4 / 10
コンテキストスイッチ
st0 : 1.2
st1 : -3
st2 : 3.14
st0 : 99
st1 : 88
st2 : 77
スレッド1からスレッド2への切り替え
st0 : 1.2
st1 : -3
st2 : 3.14
st0 : 99
st1 : 88
st2 : 77
CPU
memory
2. レジスタの内容を
メモリに保存する
3. メモリの内容を
レジスタに復元する
スレッド1の状態 スレッド2の状態
1. スレッド1を停止し
kernel空間に切り替える 4. スレッド2を再開
• 負荷が大きい
• FPUは80bitレジスタ8個
• AVX-512では512bitレジスタが32個で合計2KiB
• 動機
• 昔はFPUを使うアプリは限られていた
• 使わないのに退避・復元は無駄
• LazyFPU
• 使う必要が出たときだけ切り替えればよいのでは?
• スレッドを切り替えたらFPUを使えないモードにする
• そのスレッドがFPUを使ったら#NM(Device not available : no
math)例外が発生
• そのときにレジスタの退避・復元を行いFPUを使う
• FPUを使わなければ無駄な退避・復元をしなくてよい
5 / 10
難点とLazyFPU
• 投機実行(speculative execution)
• 必要ないかもしれない命令を先回りして実行しておくこと
• 必要になってから実行するよりも処理時間を短縮できる
投機実行なし
投機実行あり(x = 1を予測した場合)
6 / 10
Meltdown/Spectreの復習(1/2)
x = calc(...); if (x == 1) y++;
x = calc(...);
if (x == 1) y++;
if (x == 1) y++;
実際にx = 1なら速く終わる
予想が外れたら逆に遅くなる
• キャッシュメモリ
• メモリの読み書きは遅い(100nsecレベル)
• add/subは0.1nsecレベル
• CPUの近くに少量で高速なメモリを配置
• 一度readすると次のreadが高速になる
• Meltdown/Spectre
• 秘密情報に依存した場所を投機実行で読ませる
• そのあとどの領域がキャッシュに入ってるかを確認
7 / 10
Meltdown/Spectreの復習(2/2)
秘密情報xに対して
投機実行で
read mem[x]
させる
mem
0
1
2
3
4
5 0 1 2 3 4 5 mem
read
time
2番目のread
が速いので
x = 2と推測
• レジスタの1bitが漏洩するコード
• xmm0に秘密情報が入ったスレッドから
攻撃者のスレッドにコンテキストスイッチ
• 攻撃者は上記のコードを実行
• OSはmovq rax, xmm0の段階で#NM例外を発生
• しかし投機実行によりreadまで行ってしまう
• mem[0]とmem[64]のread timeの短い方がxmm0の最下位bit
8 / 10
LazyFPUの脆弱性
movq rax, xmm0 // FPUのxmm0をraxに代入(rax = xmm0)
and rax, 1 // raxの最下位bitのみにする(rax &= 1)
shl rax, 6 // 64掛ける(rax *= 64)
mov dword [mem + rax], 0 // mem[0]またはmem[64]をread
• 前ページの方法では#NM例外が発生するとxmm0の中
身がクリアされてしまう
• #NM例外ではなく#PF(page fault)を発生させる
• #PFが発生するためmovq rax, xmm0で#NM例外は発生しない
• xmm0の中身がクリアされない
• しかし投機実行でxmm0の最下位bitは判別可能
• movq rax, xmm0 / shr rax, 1 / and rax, 1とshiftを挟めば次のbit
も判別可能...を繰り返す
9 / 10
コンセプトコードの改良
movq dword [0], 0 // #PF
movq rax, xmm0
and rax, 1
shl rax, 6
mov dword [mem + rax], 0
• RTM(Restricted Trancastional Memory)
• トランザクション実行用の命令群
• 指定された命令群(トランザクション領域)を他のプロセッ
サからatomicに(一瞬で)実行されたように見える仕組み
• 何らかの原因で失敗すると何も実行しなかったことになる
• #PFよりもRTMを使う方が15倍ほど高速(3MiB/s)に
レジスタの中身が見える
10 / 10
RTM(Intel TSX)を使う
xbegin abort // トランザクション開始
movq rax, xmm0
and rax, 1
shl rax, 6
mov dword [mem + rax], 0
xabort // トランザクション強制失敗

More Related Content

Similar to LazyFP vulnerabilityの紹介

あるコンテキストスイッチの話
あるコンテキストスイッチの話あるコンテキストスイッチの話
あるコンテキストスイッチの話
nullnilaki
 
ちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxを
Kenichiro MATOHARA
 
コンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用についてコンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用について
Tomofumi Hayashi
 
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch Usecases
Sakiko Kawai
 
Traffic Management with Istio ( with Demo )
Traffic Management with Istio ( with Demo )Traffic Management with Istio ( with Demo )
Traffic Management with Istio ( with Demo )
ロフト くん
 
NSG フローログを支える技術 - NVF Advanced Flow Logging
NSG フローログを支える技術 - NVF Advanced Flow LoggingNSG フローログを支える技術 - NVF Advanced Flow Logging
NSG フローログを支える技術 - NVF Advanced Flow Logging
順也 山口
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
Takuya ASADA
 
SDN Japan: ovs-hw
SDN Japan: ovs-hwSDN Japan: ovs-hw
SDN Japan: ovs-hw
ykuga
 
Trema day 1
Trema day 1Trema day 1
Trema day 1
ykuga
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
VirtualTech Japan Inc.
 
Hydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違いHydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違い
Masakazu Asama
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
一路 川染
 
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
モノビット エンジン
 
20apr2012 kernelvm7-main
20apr2012 kernelvm7-main20apr2012 kernelvm7-main
20apr2012 kernelvm7-mainShotaro Uchida
 
フロー技術によるネットワーク管理
フロー技術によるネットワーク管理フロー技術によるネットワーク管理
フロー技術によるネットワーク管理
Motonori Shindo
 
Good Arm FPGA Board Ultra96 and Google AI YOLO
Good Arm FPGA Board Ultra96 and Google AI YOLOGood Arm FPGA Board Ultra96 and Google AI YOLO
Good Arm FPGA Board Ultra96 and Google AI YOLO
If_CQ
 
Lagopus Router v19.07.1
Lagopus Router v19.07.1Lagopus Router v19.07.1
Lagopus Router v19.07.1
Tomoya Hibi
 
Cisco Connect Japan 2014: MPLS アドバンス
Cisco Connect Japan 2014: MPLS アドバンスCisco Connect Japan 2014: MPLS アドバンス
Cisco Connect Japan 2014: MPLS アドバンス
シスコシステムズ合同会社
 
Openstack neutron vtjseminar_20160302
Openstack neutron vtjseminar_20160302Openstack neutron vtjseminar_20160302
Openstack neutron vtjseminar_20160302
Takehiro Kudou
 
PHPとシグナル、その裏側
PHPとシグナル、その裏側PHPとシグナル、その裏側
PHPとシグナル、その裏側
do_aki
 

Similar to LazyFP vulnerabilityの紹介 (20)

あるコンテキストスイッチの話
あるコンテキストスイッチの話あるコンテキストスイッチの話
あるコンテキストスイッチの話
 
ちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxを
 
コンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用についてコンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用について
 
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch Usecases
 
Traffic Management with Istio ( with Demo )
Traffic Management with Istio ( with Demo )Traffic Management with Istio ( with Demo )
Traffic Management with Istio ( with Demo )
 
NSG フローログを支える技術 - NVF Advanced Flow Logging
NSG フローログを支える技術 - NVF Advanced Flow LoggingNSG フローログを支える技術 - NVF Advanced Flow Logging
NSG フローログを支える技術 - NVF Advanced Flow Logging
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
 
SDN Japan: ovs-hw
SDN Japan: ovs-hwSDN Japan: ovs-hw
SDN Japan: ovs-hw
 
Trema day 1
Trema day 1Trema day 1
Trema day 1
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
 
Hydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違いHydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違い
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
 
20apr2012 kernelvm7-main
20apr2012 kernelvm7-main20apr2012 kernelvm7-main
20apr2012 kernelvm7-main
 
フロー技術によるネットワーク管理
フロー技術によるネットワーク管理フロー技術によるネットワーク管理
フロー技術によるネットワーク管理
 
Good Arm FPGA Board Ultra96 and Google AI YOLO
Good Arm FPGA Board Ultra96 and Google AI YOLOGood Arm FPGA Board Ultra96 and Google AI YOLO
Good Arm FPGA Board Ultra96 and Google AI YOLO
 
Lagopus Router v19.07.1
Lagopus Router v19.07.1Lagopus Router v19.07.1
Lagopus Router v19.07.1
 
Cisco Connect Japan 2014: MPLS アドバンス
Cisco Connect Japan 2014: MPLS アドバンスCisco Connect Japan 2014: MPLS アドバンス
Cisco Connect Japan 2014: MPLS アドバンス
 
Openstack neutron vtjseminar_20160302
Openstack neutron vtjseminar_20160302Openstack neutron vtjseminar_20160302
Openstack neutron vtjseminar_20160302
 
PHPとシグナル、その裏側
PHPとシグナル、その裏側PHPとシグナル、その裏側
PHPとシグナル、その裏側
 

More from MITSUNARI Shigeo

暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
 
範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル
MITSUNARI Shigeo
 
暗認本読書会13 advanced
暗認本読書会13 advanced暗認本読書会13 advanced
暗認本読書会13 advanced
MITSUNARI Shigeo
 
暗認本読書会12
暗認本読書会12暗認本読書会12
暗認本読書会12
MITSUNARI Shigeo
 
暗認本読書会11
暗認本読書会11暗認本読書会11
暗認本読書会11
MITSUNARI Shigeo
 
暗認本読書会10
暗認本読書会10暗認本読書会10
暗認本読書会10
MITSUNARI Shigeo
 
暗認本読書会9
暗認本読書会9暗認本読書会9
暗認本読書会9
MITSUNARI Shigeo
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
MITSUNARI Shigeo
 
暗認本読書会8
暗認本読書会8暗認本読書会8
暗認本読書会8
MITSUNARI Shigeo
 
暗認本読書会7
暗認本読書会7暗認本読書会7
暗認本読書会7
MITSUNARI Shigeo
 
暗認本読書会6
暗認本読書会6暗認本読書会6
暗認本読書会6
MITSUNARI Shigeo
 
暗認本読書会5
暗認本読書会5暗認本読書会5
暗認本読書会5
MITSUNARI Shigeo
 
暗認本読書会4
暗認本読書会4暗認本読書会4
暗認本読書会4
MITSUNARI Shigeo
 
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
MITSUNARI Shigeo
 
私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
MITSUNARI Shigeo
 
WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装
MITSUNARI Shigeo
 
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
MITSUNARI Shigeo
 
楕円曲線と暗号
楕円曲線と暗号楕円曲線と暗号
楕円曲線と暗号
MITSUNARI Shigeo
 
HPC Phys-20201203
HPC Phys-20201203HPC Phys-20201203
HPC Phys-20201203
MITSUNARI Shigeo
 
BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用
MITSUNARI Shigeo
 

More from MITSUNARI Shigeo (20)

暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル
 
暗認本読書会13 advanced
暗認本読書会13 advanced暗認本読書会13 advanced
暗認本読書会13 advanced
 
暗認本読書会12
暗認本読書会12暗認本読書会12
暗認本読書会12
 
暗認本読書会11
暗認本読書会11暗認本読書会11
暗認本読書会11
 
暗認本読書会10
暗認本読書会10暗認本読書会10
暗認本読書会10
 
暗認本読書会9
暗認本読書会9暗認本読書会9
暗認本読書会9
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
 
暗認本読書会8
暗認本読書会8暗認本読書会8
暗認本読書会8
 
暗認本読書会7
暗認本読書会7暗認本読書会7
暗認本読書会7
 
暗認本読書会6
暗認本読書会6暗認本読書会6
暗認本読書会6
 
暗認本読書会5
暗認本読書会5暗認本読書会5
暗認本読書会5
 
暗認本読書会4
暗認本読書会4暗認本読書会4
暗認本読書会4
 
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
 
私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
 
WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装
 
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
 
楕円曲線と暗号
楕円曲線と暗号楕円曲線と暗号
楕円曲線と暗号
 
HPC Phys-20201203
HPC Phys-20201203HPC Phys-20201203
HPC Phys-20201203
 
BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用
 

Recently uploaded

論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 

Recently uploaded (16)

論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 

LazyFP vulnerabilityの紹介

  • 1. Intel LazyFP vulnerability: Exploiting lazy FPU state switching 暗号とセキュリティ勉強会 2018/6/25 光成滋生 1 / 10
  • 2. • 昔のOSはlazy FPUという仕組みを使っていた • この仕組みにFPUレジスタの内容が漏洩する可能性 • LazyFP: Leaking FPU Register State using Microarchitectural Side-Channels • https://arxiv.org/abs/1806.07480 • 最近のLinuxでは使っていない 2 / 10 概要
  • 3. • 小数やベクトル演算専用のコプロセッサ • かつては別売だった • i387コプロセッサ10万円 • 今はCPUの中に入ってる 3 / 10 FPU
  • 4. • 1個のCPU上で複数のスレッドを動かす仕組み • スレッドを切り替えるときにCPUの状態を入れ換える 4 / 10 コンテキストスイッチ st0 : 1.2 st1 : -3 st2 : 3.14 st0 : 99 st1 : 88 st2 : 77 スレッド1からスレッド2への切り替え st0 : 1.2 st1 : -3 st2 : 3.14 st0 : 99 st1 : 88 st2 : 77 CPU memory 2. レジスタの内容を メモリに保存する 3. メモリの内容を レジスタに復元する スレッド1の状態 スレッド2の状態 1. スレッド1を停止し kernel空間に切り替える 4. スレッド2を再開
  • 5. • 負荷が大きい • FPUは80bitレジスタ8個 • AVX-512では512bitレジスタが32個で合計2KiB • 動機 • 昔はFPUを使うアプリは限られていた • 使わないのに退避・復元は無駄 • LazyFPU • 使う必要が出たときだけ切り替えればよいのでは? • スレッドを切り替えたらFPUを使えないモードにする • そのスレッドがFPUを使ったら#NM(Device not available : no math)例外が発生 • そのときにレジスタの退避・復元を行いFPUを使う • FPUを使わなければ無駄な退避・復元をしなくてよい 5 / 10 難点とLazyFPU
  • 6. • 投機実行(speculative execution) • 必要ないかもしれない命令を先回りして実行しておくこと • 必要になってから実行するよりも処理時間を短縮できる 投機実行なし 投機実行あり(x = 1を予測した場合) 6 / 10 Meltdown/Spectreの復習(1/2) x = calc(...); if (x == 1) y++; x = calc(...); if (x == 1) y++; if (x == 1) y++; 実際にx = 1なら速く終わる 予想が外れたら逆に遅くなる
  • 7. • キャッシュメモリ • メモリの読み書きは遅い(100nsecレベル) • add/subは0.1nsecレベル • CPUの近くに少量で高速なメモリを配置 • 一度readすると次のreadが高速になる • Meltdown/Spectre • 秘密情報に依存した場所を投機実行で読ませる • そのあとどの領域がキャッシュに入ってるかを確認 7 / 10 Meltdown/Spectreの復習(2/2) 秘密情報xに対して 投機実行で read mem[x] させる mem 0 1 2 3 4 5 0 1 2 3 4 5 mem read time 2番目のread が速いので x = 2と推測
  • 8. • レジスタの1bitが漏洩するコード • xmm0に秘密情報が入ったスレッドから 攻撃者のスレッドにコンテキストスイッチ • 攻撃者は上記のコードを実行 • OSはmovq rax, xmm0の段階で#NM例外を発生 • しかし投機実行によりreadまで行ってしまう • mem[0]とmem[64]のread timeの短い方がxmm0の最下位bit 8 / 10 LazyFPUの脆弱性 movq rax, xmm0 // FPUのxmm0をraxに代入(rax = xmm0) and rax, 1 // raxの最下位bitのみにする(rax &= 1) shl rax, 6 // 64掛ける(rax *= 64) mov dword [mem + rax], 0 // mem[0]またはmem[64]をread
  • 9. • 前ページの方法では#NM例外が発生するとxmm0の中 身がクリアされてしまう • #NM例外ではなく#PF(page fault)を発生させる • #PFが発生するためmovq rax, xmm0で#NM例外は発生しない • xmm0の中身がクリアされない • しかし投機実行でxmm0の最下位bitは判別可能 • movq rax, xmm0 / shr rax, 1 / and rax, 1とshiftを挟めば次のbit も判別可能...を繰り返す 9 / 10 コンセプトコードの改良 movq dword [0], 0 // #PF movq rax, xmm0 and rax, 1 shl rax, 6 mov dword [mem + rax], 0
  • 10. • RTM(Restricted Trancastional Memory) • トランザクション実行用の命令群 • 指定された命令群(トランザクション領域)を他のプロセッ サからatomicに(一瞬で)実行されたように見える仕組み • 何らかの原因で失敗すると何も実行しなかったことになる • #PFよりもRTMを使う方が15倍ほど高速(3MiB/s)に レジスタの中身が見える 10 / 10 RTM(Intel TSX)を使う xbegin abort // トランザクション開始 movq rax, xmm0 and rax, 1 shl rax, 6 mov dword [mem + rax], 0 xabort // トランザクション強制失敗