68user's page 掲示板

Prev< No. 2973〜2974> Next  [最新発言に戻る] [過去ログ一覧]
No. 2973 # 68user 2002/12/06 (金) 00:21:32
>>2969 kiki
シェルって何をしているか知っていますか? 簡単に言うと、ユーザが
入力した文字列を解析し、execve(2) を実行することです。

シェルのソースをいじっていいのならば、execve(2) を発行している
部分を探して、そこで su を実行しようとしているかどうかのチェックを
行えばよいのでは、という話です。

>>2970 ふくし
入力が XML なら、
    http://member.nifty.ne.jp/hippo2000/perltips/xml/dom.htm#XML_DOM_NODE
の removeChild で一発なような気がします。

XML でないなら構文解析してスタックに積んで…といきたいところですが、
僕は軟弱なので
    - s|<tag .*?>.*?</tag>||
    - 削除したのが足りなかった
            (例えば <tag a>in1<tag b>in2<tag c>in3</tag> しか取れなかった)
        なら、追加であと 2個の </tag> をするため s|.*?</tag>.*?</tag>|| とする。
とします。

No. 2974 # 68user 2002/12/06 (金) 01:04:43
>>2967 68user
> 別の解としては、システムコールの発行を hook して安全性をチェック、
> というのもありますが、UNIX でこういうのってできるのかなーと思って
> 調べてみたら、なんかできるようですね。
>   http://www.caj.co.jp/support/etrustac_faq.htm
>     Q6: eTrust Access ControlのSoft Hook技術とは何ですか?
> カーネルを置き換えているのか、あるいは libc のシステムコール発行部分を
> 置き換えているのか…(できるのかな?)

最近これに激しく惹かれているのですが、libc 置き換えで可能なんでしょうか。
詳しい人がいらっしゃったら教えてください。

全てのシステムコールは
      http://home.jp.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/i386/sys/syscall.S?rev=1.8
を経由するんじゃないかと思っているのですが、もしそれが正しいなら
ここにチェック機能を入れた libc を用意して置き換えるか、あるいは
LD_PRELOAD で既存 libc に置き換えることは可能なのかなぁ。

どちらにせよアセンブラができないので、
      http://www.ascii.co.jp/books/detail/4-7561/4-7561-0213-1.html
を買って勉強かな…。

Prev< No. 2973〜2974> Next  [最新発言に戻る] [過去ログ一覧]