【AMD】Ryzen 5000などに「Spectre」に似た投機実行の脆弱性 [樽悶★]
■ このスレッドは過去ログ倉庫に格納されています
AMDが3月に公開したホワイトペーパーにおいて、Zen 3アーキテクチャのCPU(Ryzen 5000やEPYC 7003シリーズ)に新たに実装された「Predictive Store Forwarding」(PSF)機能に、分岐予測を悪用したサイドチャネル攻撃手法「Spectre」に似た潜在的な脆弱性があることが明らかにされた。
PSFはハードウェアベースによるマイクロアーキテクチャレベルの最適化機能で、ロード/ストア間の依存関係を予測し、コード実行のさいの性能を向上させられる。しかしこの予測が外れた場合、Spectre v1/v2/v4と同じようなサイドチャネル攻撃の手法が悪用できてしまう可能性があるという。
CPUは、ストア命令で最近書き込まれたアドレスに対し、ロード命令を実行するのが一般的。このため、最近の多くのプロセッサでは「Store-To-Load-Forwarding(STLF)」と呼ばれる手法を実装していて、ストア命令のデータを待機せずにロードを行なう。このさいにロードとストアの両方のアドレスを比較して一致を判断するのだが、PSFではこの関係を待たずに推測を行なう。
ほとんどの場合、PSFによる予測は正確なのだが、いくつかのケースにおいて正確ではない推測をしてしまう。1つはプログラムの実行中にストアとロードのいずれかのアドレスが変更された場合、もう1つはPSF予測の子構造に依存関係のないエイリアスがある場合だ。このため分岐予測が外れたさいに、セキュリティコントロールを回避でき、Spectreのようなサイドチャネル攻撃が行なえてしまう。
このような攻撃に対し、サンドボックスのようなソフトウェアによる保護機構では対策が不十分で、データが漏洩するおそれがある。一方でハードウェアのメカニズムを使い、アドレス空間を完全に分離させた場合、PSFの脆弱性は発生しない。
それでもソフトウェアサンドボックスの手法を使いつつ、セキュリティを確保したい場合、制御ビットを変更することでこの機能無効にできる。「MSR 48h bit 2」は投機的ストアバイパス無効(SSBD)の制御、「MSR 48h bit 7」はPSF無効(PSFD)で、値を1にすることで無効にされる。
PSFの実装は性能向上と引き換えにセキュリティにも影響するが、現在このような攻撃を行なうコードは確認されておらず、セキュリティリスクの可能性は低い。セキュリティ対策が必要な場合、アドレス空間分離などの手法を使えばよいため、AMDは引き続きPSF機能を有効にすることを推奨している。
Impress Watch 4/6(火) 10:36配信
https://headlines.yahoo.co.jp/hl?a=20210406-00000042-impress-sci
https://amd-pctr.c.yimg.jp/r/iwiz-amd/20210406-00000042-impress-000-1-view.jpg サイドチャネルは可能性としてはあり得るけど実際に意味のある事できるの?的な話がねぇ >>97
どんな会社でも10人いたら10人が全員いつも全力で働けるということが実現できたらそういうプログラムも可能かもね。
自然界ですら集団での作業では効率性が著しく落ちる。
ましてや人造物でそんなうまくいく話はない。 >>84
むしろそういう連中が一番被害に遭いやすい。
現実的な攻撃が有ればだが。 >>87
訂正が必要なほど間違いは無いと思うよ。
これで間違った解釈をするなら読み手の問題だ。 ユーザーで切れるなら問題ねえじゃん
インテルは脆弱性爆盛だから勝負になってない >>104
わかりやすい説明と思う。
ただ、投機的実行が10回に1回というのは本当に?って思うなあ。(自分も統計は知らないけど)
同時発行命令を増やしたり、動的レジスタリネームしてるんだから、プログラム中で投機実行される命令はもっと沢山あるとは思う。
あるいは、この記事の投機的ストアフォワーディングのことを言ってるのかな? >>104
投機実行の説明としては何とも適当すぎる
サイドチャネル攻撃の説明としては完全に間違ってる
件のサイドチャネル攻撃に複数のコアは関係ない
1つのコア内での問題
「チェックを回避して実行できる」わけではない
実行されるはずがないコードが投機的に実行された結果
キャッシュメモリ上にデータがある/ないに影響が出る可能性があって
どのアドレスがキャッシュされているかはロード命令の遅延時間で測定可能だから
それによって本来読む権限のないメモリ上の値を推定するのがSpectre等のサイドチャネル攻撃だ >>107
十回に一回というのは実行タイミングの話じゃなくて実行した際に役に立つか。
日本語わかるか?
>>42
実際に役に立つのは十回に一回もない(amdはそのくらいあると言っているがない〕けど、逆に言えば、統計的には余ってるリソースで1割近い能力向上ができるので、使われている。 >>110
・陰謀だと力説する
例:謀ったな!シャア! >>108
投機的実行というのはマルチコア、深いパイプラインと高速化がなされてきた話の中での高速化手法だよ。
投機的実行説明の中にいきなり悪意のコードの説明が入っていないからと文句を言われてもね。
普通の人は投機的実行自体がわからない。
サイドチャンネル攻撃のコードが通常実行で読めない領域を読めるのは投機的実行ではリンクの規制を回避できるからだ。
つまり諸々のチェックを回避できるということだよ。
何噛み付いているんだ? BroadwellだったかHaswellだったかパッチした途端にもっさりクソ化した覚えがある >>112
日本語というか、以下がわかりませんでした。
この文脈で、統計的には余ってるリソースってなんですか?
1割近い能力向上とは具体的にはどういうハードで何を動かした時の比較なんですか?(出典を教えてください) >>78
intel→キヤノン
AMD→ニコ爺と置き換えるとわかりやすい 重たいゲームを走らせている最中
バッファ内にクラッキングさせるプログラムを常駐させれば
仮想分岐ルーチンがクラッキングプログラムを読み込み
セキュリティホールを作るとか? Intelで言うとこのハイパースレッディング切れば解決じゃね
論理コア減るけど >>78
Intel本体様がAMDやAppleのFUDに夢中 3g4コアあればもう十分じゃね?
グラボも1070で後5年は戦えそうだし >>85
バクチ回路ってのがi486からあるんよ。
YパイプとVパイプがあって、例えば繰り返し処理があった場合、片方へ直前の繰り返しを実行するんよ。 >>97
コンパイラを設計するのは人間であって、
そこには設計者のクセや思想が大きく反映される。
ホワイトスミスっていうコンパイラが事の始まり 予測の基礎ロジックに問題がある?
意図的な組み合わせで、誘導されちゃうとか? >>1
早う低電力版SMT付ノートを出してくれや
レノボ以外で Intel使ってる奴にとってはかわいいもの
AMD5000番台で組んだ奴にとってはIntelがどうってことないらしいしどうってことない どうせ意味判らんから読んでもないけど、対策せんと「アカン!」て事やろ? ちょっとアメリカ様ー、
チップへの仕込みに執着するのは何か理由が? これ原理的にはできるけど実装して特定の場所狙うのはなかなか大変そう。
Spectreほどやさしくないように見える 可能性があるというだけの話でまだ確認されてないってのがな >>117
出典ときたよ、何かよほどへっぽこ君をイライラさせるようなことがあったようだ。
間抜け、他の連中はそれで納得してるんだ、お前か。アホウでわからないなら聞き方があるだろうが。
間抜けはその歳になっても難癖つけてごねることしか知らないか?
アホが。 >>108
ああ、阿保が噛み付いてきたから、お前にも噛み付いておこう。
メルトダウンとスペクターの区別もつかない間抜けが偉そうに何言ってんだよ。
>>108
>「チェックを回避して実行できる」わけではない
>実行されるはずがないコードが投機的に実行された結果
>キャッシュメモリ上にデータがある/ないに影響が出る可能性があって
>どのアドレスがキャッシュされているかはロード命令の遅延時間で測定可能だから
>それによって本来読む権限のないメモリ上の値を推定するのがSpectre等のサイドチャネル攻撃だ
それはメルトダウンであってスペクターではない。
だが前半はメルトダウンとしてはおかしな書き方だ。
メルトダウンの実行シーケンスがわからないから適当に自分で変に作ったのだろうが、その程度の理解で噛み付いてくるとはみっともないことだ。
https://www.fujitsu.com/jp/solutions/business-technology/security/secure/column/201802-1/
少しはぐぐって勉強しろ間抜け。 >>42
ジャムおじさんクラスの優しさだな
ありがとう >>152
質問に回答いただけないので、私の考えを書きます。
まず、”統計的には余ってるリソースで”という表現は、僅かな修正で投機実行が実現できるという誤解を生むと思います。
投機実行で性能を出すには、各種OoO実行/InO完了機構や、それ相応のフロントエンド機構(高度な分岐予測や命令フェッチ機構など)が専用で必要です。
上記機構は高コストで、InOスーパスカラプロセッサに僅かな機能追加でできるレベルではないので、”余ってるリソース”という表現は説明として適切でないと思います。
また、”1割の性能向上”というのは、投機実行の性能効果としては少なすぎでは?と思います。(そもそも何と何の比較かがわからないですが、、)
例えば身近な(?)ヘネパタには、Atom 230のコアとi7 930のコアとで、SPECIntのCPIに3倍の開きがあると書いてあります。これらはキャッシュなどのメモリシステムも違うので単純比較はできないですが、あなたのおっしゃる”1割”というのは少なすぎるかと思います。 「一方でハードウェアのメカニズムを使い、アドレス空間を完全に分離させた場合、PSFの脆弱性は発生しない。」
はい解散 >>155
お前の言ってることでは
>>6
とかはわからないだろう。
6にわかるように書いてくれ。
俺はお前のような間抜けのためにわかりやすく書いたんじゃない。
まずは同じ土俵に上がってこいよ間抜け。 >ハードウェアのメカニズムを使い、アドレス空間を完全に分離させた場合、PSFの脆弱性は発生しない
>セキュリティを確保したい場合、制御ビットを変更することでこの機能無効にできる
最初から対策されてた訳か。 あまぞん様。
俺が1/18に頼んだ5900Xはどうなってますか? この手の脆弱性は現在のどのCPUにもあるよ。
Intelが叩かれていたときのにAMDが安全なCPUを宣伝しなかったのもそういう理由。何百個もある脆弱性の一つにすぎない。
たしかに他のソフトからデータを推測したり一部を読み取りできるんだが、それを行うためにはそのためのプログラムを管理者権限で常時実行する必要がある。
外部へ送信するならネットワークのセキュリティも超えていく必要がある。
それができる状況ってもうセキュリティ崩壊してると思う。
だからIntelもAMDも普通に使う限りは気にしなくていいよ。 >>158
私の意見に反論がないなら、>>42の該当箇所は訂正した方がいいと思いました。 >>163
どこがどう間違ってる、正しくはこうだと書けないチキン インテルなんか第三者がmicrocode書き換える方法上がってたし キャッシュを汚染させてヒット/ミスヒットで値を推定するって基本が分かってない奴が偉そうにしてるスレ そもそも投機実行が役に立つのが10回に1回もないとかネタで言ってるのかと
これはIntelとAMDのCPUで分岐予測のミス率を測定したものだが
数字はどれも10%以下だ
つまり10回に1回どころか100回に90回は投機実行は役に立っているのである
https://pbs.twimg.com/media/Eq-E_cvXUAE6U-U.png これってこれからはウィルスソフトがAMDに最適化してくれるってことだよね。AMDを使えばこんな機能があります。やったじゃん。 すでにハードウェア対応済みか
サンドボックスがソフト処理をしてるところをハードウェアを利用するようにしたら良いんだね
そしたら安全で処理も速くなるわけだ >>162
は?
間違ってるというならソース出せよ基地外。
俺は学会論文出しているわけじゃないしお前は査読委員じゃない。
素人にわかりやすく書いた文に専門的な内容が省略してあるからどうだというんだよ間抜け。
わかりやすく書いたものに専門性を求めるならお前がかけと言ったが何故書かないんだ?
さっさとわかりやすくて専門的な文出せよ間抜け。
どうしたの?
わかりやすく書くことができないくせにわかりやすく書いたものを専門性が足りないってお前が文句言ったんだろうがよ。
さっさとわかりやすくて専門的に正しい文書けよ。
俺が採点してやるよ。 AMD終了のお知らせ、Intel大勝利!
ネトウヨさんは、火病脱糞食糞ぱよぱよちーん! >>168
で?分岐予測に成功したからどうなの?
分岐予測は単なるコントロールの話で、それだけでは効率は良くならないよ。
間抜け。
実際の実行効率に影響を与えられるのはかなり限られたケースだけなんだよ。 付け焼き刃でデタラメ書いて素人だまして
ドヤ顔してたのがバレて逆切れ実に面白い >>172
インテルは10nmプロセスで失敗してるし、
AMDからしたら周回遅れだよ。
まあ、投機的実行のバグはインテルが最先端を走っているけど。 分岐予測は投機実行するために行われる
投機実行しないと命令ウィンドウは分岐命令を超えられないので
アウトオブオーダー実行の効率が大きく落ちる
分岐予測と投機実行は効率を上げるために必須のテクニックであって限られたケースでも何でもない
分岐命令はループの最後に必ず存在するのだから ■ このスレッドは過去ログ倉庫に格納されています