0
0

More than 3 years have passed since last update.

ASLRの有効bit数

Posted at

32bitOSにおいてASLRは16bit分しか提供しない といった旨の記述がReturn-to-libc攻撃のwikipediaに書いてあり、理由が気になったので雑にメモ。
2通りで調べたのでそれぞれ書きます。

  1. まず、英語版の出典はスタンフォードの論文pdfでした。
    この3.3.2によれば、32bitのうち12bitはオフセットに(後述)、残り20bitのうち、4bitは仮想メモリ空間のフラグメンテーションを防ぐためにランダム化できないため、残りの16bit分のみASLRが提供される とのこと。 (これは最大16ということで、実際は12bitなども見られるようで....)
    64bitOS上の32bit互換で実行する場合も同様に脆弱であると述べてあります。
    64bitOSにおいては最低でも40bitがランダム化されるとのことです。

  2. また、32bitOS(x86)のメモリ管理の観点から、まずセグメント方式について知る必要がありそうだと考えました。 結果として間違いではありませんでしたが....
    元々、ASLRは12bitに働いていたという検証も見ており、セグメントのリアルモードのオフセット12bitをランダム化しているのかな などと思っていたのですが全く的を射ない思考でした。
    実際は上記の通り、残りの20bitの中から一部ランダム化されているようです。

32bitの半分だから16bit という訳ではなくメモリ管理との兼ね合いがあるようですね。
ソース: https://web.stanford.edu/~blp/papers/asrandom.pdf

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