Libhijack is a shared object to make injecting arbitrary code

「libhijack」の最新版が登場した。今回のアップデートでFreeBSD amd64に対応。libhijackはプログラムの実行中、動的にシェルのバイナリをメモリ上に展開して処理をシェルへ移行させるライブラリ。OSがプログラムを実行する仕組みを利用して、実行時にシェルを読み込んで処理をそちらへ移している。

バッファオーバーフローなどのバグを利用することで任意の処理が実行されるというセキュリティ脆弱性がしばしば報告されるが、libhijackはそうした処理をOSの提供する仕組みにそって実行するようなアーキテクチャになっている。BSDCan 2013でlibhijackの開発者から概要の説明やデモンストレーションが実施され、動作中のnginxに対して外部からシェルを起動するようすが紹介された。

libhijackはどのようにプログラムが読み込まれ実行中にプログラムに処理を挟み込むのか知るための資料として参考になるほか、プログラムに故意に脆弱性を作りこみ、外部からプログラムが乗っ取られたケースを想定してセキュリティチェックをするといった用途で活用できる。構築したサーバが外部から不正に乗っ取られた場合でも被害を最小限に抑えるといった確認をするために利用できる。