タグ

ブックマーク / yupo5656.hatenadiary.org (2)

  • ASLR, setarch -RL, prelink, PIE and LD_USE_LOAD_BIAS - memologue

    独り言です。(慣れないkernelの)コードをざーっと調べて、あまりまじめには検証しないで書いてます。FC5限定なので細かい記述の賞味期間はあと30日くらいでしょうか。 ASLR 私の使っているFC5のkernel/glibcには、一般にASLR(address space layout randomization)とか呼ばれている、日々のhackの邪魔になるセキュリティ的に大変よろしい機能があります。ASLRをフルに機能させると、プロセスの動作するアドレス空間において DSOをどこに貼り付けるか (glibcの elf/dl-load.c の _dl_map_object_from_fd()) ELFのinterp (/lib/ld.so) をどこに貼り付けるか (kernel の fs/binfmt_elf.c の load_elf_interp()) 実行ファイルをどこに貼り付けるか

    ASLR, setarch -RL, prelink, PIE and LD_USE_LOAD_BIAS - memologue
  • ld -z relro で GOT overwrite attack から身を守る - memologue

    GOT overwrite? "GOT overwrite" という、(ここでは特にLinuxの)プログラムに対する攻撃方法があります。攻撃が成功すると、そのプロセスの権限での任意コード実行等、深刻な被害を受けます。最近のGNU ld(リンカ)のオプションを用いると、この攻撃から身を守ることができるそうですので、紹介します。 最初にまとめ (こまかいことはあとで) GOT overwrite から身を守るには、gccでプログラムをリンクするときに、 -Wl,-z,now,-z,relro をつけるだけです。起動時間が遅くなるというトレードオフがありますが、GOTがreadonlyになります。GOTがreadonlyなら、GOT overwrite attack を受けたときに、プロセスがSEGVしてくれますので、安全性が高まります。プロセスのメモリマップを確認すると、きちんと w が落ちて

    ld -z relro で GOT overwrite attack から身を守る - memologue
  • 1