Apple patched the vulnerability in macOS 10.12.4 that was released in 2016, but the researchers say the more general scope of such attacks remains relevant.
The main defence against the above attacks is the input-output memory management unit (IOMMU) that allows devices to access only the memory needed for the job to done.
Enabling the IOMMU to protect against DMA attacks comes at a high performance cost however. Most operating systems trade off security for performance gains, and disable the IOMMU by default.
何で今頃この話題が? (スコア:0)
と思って読んでみたら、Windows の問題なのね。
>Apple patched the vulnerability in macOS 10.12.4 that was released in 2016,
そこそこ有名だった話だ。
ええ… (スコア:1)
なぜ文章の後半をちょんぎって引用するの?
Apple patched the vulnerability in macOS 10.12.4 that was released in 2016, but the researchers say the more general scope of such attacks remains relevant.
Re: (スコア:0)
具体的にどうrelevantなのか何も書いていないから、ほんとにMacでも引き続き問題なのか、それとも単に「バグが復活する可能性がある」と煽ってるだけなのか、この記事からはわからんってのが正直なところ。そこのところを詳しく書いてる論文とかないのかな。
Re:ええ… (スコア:2)
The main defence against the above attacks is the input-output memory management unit (IOMMU) that allows devices to access only the memory needed for the job to done.
Enabling the IOMMU to protect against DMA attacks comes at a high performance cost however. Most operating systems trade off security for performance gains, and disable the IOMMU by default.
一般にDMA(direct memory access)というのはCPU以外からメインメモリを直接読み書きする方法を指します。CPUにはフェッチ/デコード/実行/書き戻しといったマシンサイクルのステージがあるわけですから、原始的には稼働時間の3/4とか、4/5とかはメモリに触れません。極論すれば論理的には切断されていたって何も困らないのです。であればその間は~WRと~RDが両方上がっていることだけ確かめてメモリーバンクをペリフェラルに繋ぎ変えデータを勝手に流し込んでやれば、CPUのプログラムが戻ってきてメモリを見に行った時には魔法のようにデータが現れていることになるから転送が早く済む、というのがDMAの概要です。
流石にCore i9-9900Kから分岐できるような~WR信号線は出ちゃいないでしょうし、プロセッサーのパイプライン化というすばらしい概念も生まれているのですが、プログラミングモデルやメモリコントローラの権限制御機構には太古から大して進歩がありません。従って、メモリコントローラにDMAができるペリフェラルは今でも物理メモリの任意のアドレスに読み書きアクセスができるのです。
これに対し、対策としてIOMMUを活用することができるわけですね。なるほどなあ。
Re: (スコア:0)
ん?DMA以前はCPUにデータ読んで書き出してで2バスサイクル使わないと周辺機器からメモリへデータ転送できなかったわけで、そもそもCPUが演算中断してDMAコントロールに専従するだけでも転送速度二倍が得られる美味しい仕組みだったのでは?
ステージ細分化で高クロック狙うようになったのはキャッシュが当然になりバスクロックとCPUクロックが乖離してからだったし(細分化してないだけでそれまで単一だった訳でもないが)、
命令のフェッチも(キャッシュに乗らなきゃ)メモリアクセスですし。
そもそもバス経由でメモリアクセスするのはCPU内部比べるとかなり遅くて8bitワンチップマイコンとかですらペナルティ食うレベルで、メモリアクセスする処理が走ってる際の隙間を狙うと言われると違和感が。
古典的にはメモリアクセスがない間に二倍速でデータをメモリに転送できる、でいい気がします。
現代(PCIe)だと物理層が所謂バス構造ではなくスターやチェーンだったりする位なので、原型留めてないですね。