NOKUBI Takatsugu
knok****@daion*****
2014年 11月 6日 (木) 15:09:56 JST
いろいろと条件を変えて試してみたのですが、思ったより再現性が
ないというか、toolchain側に原因がありそうな気もしてきました。
arch | dist | groonga | result
i386 | wheezy | source | OK
| | package | OK
| sid | source | OK
| | package | NG
こんな感じで、i386, sid, groonga packageという組み合わせ
の時だけ問題が発生するようです。amd64での再現はできませんでした。
amd64環境でも、以下のようにすればchroot i386環境を作成できます。
debootstrap --arch=i386 unstable ./chroot-dir
hardeningに関してですが、hardening-wrapperパッケージを入れる
ことで各種フラグを勝手に設定するようになっています。条件は結構複雑な
ようだったので、straceで指定されるオプションを確認したところ、
"-fstack-protector-strong", "-fPIE", "-pie",
"-D_FORTIFY_SOURCE=2", "-Wformat", "-Wformat-security",
"-Werror=format-security", "-dumpmachine"
これらが指定されていました。
Debianのhardeningそのものに関する説明はDebian Wikiにあります。
https://wiki.debian.org/Hardening
hardening-includesパッケージに入っているhardening-checkコマンド
を使うと状況を確認できます。
# hardening-check /usr/bin/groonga
/usr/bin/groonga:
Position Independent Executable: yes
Stack protected: yes
Fortify Source functions: yes (some protected functions found)
Read-only relocations: yes
Immediate binding: yes
確かにi386パッケージはhardenedなバイナリーのようなのですが、
amd64でもそれは同じなんですよね…なのでtoolchain側が怪しいかなあ、
と思っているところです。