###linux のセキュリティについて
##ASLRについて
通常、同じプログラムであれば、関数のアドレスや、変数の格納先アドレス等、何度実行しても変化することはない。これを利用して任意のアドレスを実行することが可能となってしまう。
そこでASLRは、heap領域以降のアドレスをランダム化(アドレス空間配置のランダム化)することで、これらの攻撃を防ぐのが目的。
ASLRだと起動するたびにheap領域以降のアドレスが変化する。
ただし、ランダム化されるのheap領域以降と限定されるため、アドレスが固定化されている部分を利用した攻撃に対するリスクは残っている。
通常のheapの開始アドレスは、0x0804XXXXとかになるが、ASLRだと0xfXXXXXXXで始まるアドレスになる。
##PIEについて
ASLRが有効な場合、スタック領域・ヒープ領域や共有ライブラリが置かれるアドレスは一定の範囲の中でランダムに決められる。
一方、実行ファイルそのものが置かれるアドレスは基本的には固定であるが、PIE (Position-Independent Executables) となるようにコンパイル・リンクすることでランダムなアドレスに置けるようにできる。
ASLRでは行われない実行ファイルの配置アドレスもランダム化されるようになる
#PIEが有効になっている場合
アドレスが小さな値をとっている。これは相対アドレスとしてリンクされるため
#PIEが無効になっている場合
アドレスが大きな値をとっている。これは絶対アドレスで指定されているため