JavaScriptでASLRを無効化する攻撃「AnC」 6
整列 部門より
x86/ARM CPUの多くが行っているメモリ管理の仕組みを悪用し、アドレス空間配置のランダム化 (ASLR)をJavaScriptから無効化する攻撃が公表された(PC Watchの記事)。
ASLRはアドレス予測を困難にすることで攻撃を防ぐという技術で、2000年代前半から実装が進んでいる。ローカルからの攻撃により無効化する手法も発見されているが、Webブラウザーの脆弱性緩和などには有効な対策と考えられていた。記事によれば、CPUのキャッシュ階層を利用した「ASLR⊕Cache (AnC)」と名付けられた攻撃により、100秒未満という短い時間でアドレスのランダム化が解除されてしまったという。AnCはハードウェアの仕組みを使用した攻撃のため、ユーザー側では対処不能としている。
正直タレコミ子には説明が難しすぎて理解不能なのだが、技術レベルの高い攻撃者であれば公開された論文を元に数週間程度で攻撃コードが再現できるという事なので、今後はメモリ周りの脆弱性に一層注意が必要かもしれない。
AnCはソフトウェアの弱点を利用するものではないため修正は容易ではないが、CPU/OS/ブラウザーベンダーに対しては公表前に短期的・長期的な緩和策が通知されている。実際にAppleはiOS 10.2.1でWebKitの強化を行ったとのこと。ユーザーレベルでは信頼できないソースからのスクリプト実行をブロックするといった対策しかできないが、有効な攻撃を行うためには別途ブラウザーの脆弱性を利用することになるため、セキュリティ更新プログラム適用の重要性も増しているといえるだろう(VUSecの記事、 The Registerの記事、 Ars Technicaの記事)。
誰か三行にまとめてくれ (スコア:0)
対処しづらくて厄介な問題って事はわかったが、仕組みが何度読み返してもさっぱりわからん(;´д`)
Re:誰か三行にまとめてくれ (スコア:1)
ただの引き算でしょ。
テーブルページのオフセットが判れば9bit分の確定ができる。
ASLRの能力が36bit分あっても、36-9=25で25bit分しかないのと同じことになる。
25bit程度では、現代では安全ではない。
Re: (スコア:0)
ごめん引き算を間違えた。もう俺の脳は破壊されているかも
Re: (スコア:0)
このページには人の脳を攻撃するスクリプトが含まれている!
Re: (スコア:0)
ASLRを突破した後
どうやってバイナリ注入するんだろう?
Re: (スコア:0)
もうすでにブラウザ上、あるいは何かしらの方法で、native code を実行可能な段階なんでしょ。exploit があっても、ASLR があるから破壊行動ができなかった。でも今は Browser (というか JavaScript)の手助けがあれば、今まで悪用不能だった Exploit が悪用できるようになる、ということと、俺は理解した。