プロフィール

kosaki

Author:kosaki
連絡先はコチラ

ブログ検索
最近の記事
最近のコメント
最近のトラックバック
リンク
カテゴリー
月別アーカイブ
RSSフィード
FC2ブログランキング

スポンサーサイト このエントリーをはてなブックマークに追加

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


スポンサー広告 | 【--------(--) --:--:--】 | Trackback(-) | Comments(-)

AKARI がどうやって、LSMフックの乗っ取っているのか調べてみた このエントリーをはてなブックマークに追加

NTTデータのTOMOYO Linuxのチームから (熊猫さくらさんの個人プロジェクトだったみたい。失礼しました)AKARIというセキュリティーモジュールがリリースされたようです。

http://permalink.gmane.org/gmane.linux.tomoyo.user.japanese/257

RHEL6でも動くと謳っていたので、軽く解析してみました。

モジュールロード時にsecurity_opsを使っている関数のアドレスを/proc/kallsyms
から取得し、その関数に対しバイナリ解析を行うことでsecurity_opsのアドレスを
算出し、上書きしているようです。

興味がある人は、ccs_find_security_ops() 近辺を読んでみるといいと思います。
バイナリ手法が面白いというか奇抜というか、いい感じなのですが、
Linuxカーネル本体に


int security_file_alloc(struct file *file)
{
return security_ops->file_alloc_security(file);
}

という関数があるので、


static int lsm_addr_calculator(struct file *file)
{
return ccs_security_ops->file_alloc_security(file);
}


というほぼ同じ関数を作ったら security_ops のアドレス以外は一致する
命令が出力される「はず」だから、関数の命令列を比較していって、不一致箇所を
security_opsだと仮定するという。そんなん。

# security_file_alloc()は公開関数なので/proc/kallsymsでアドレス取得できるしね

たぶん、コンパイラのバージョン合わせないとだめよね。これ。


関連記事


linux | 【2010-10-14(Thu) 10:52:25】 | Trackback:(0) | Comments:(0)
  1. 無料アクセス解析
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。