Linuxシステムでの実行フラグの破壊。なぜこれが可能ですか?
これを読んでいると、次のエクスプロイトが見つかりました。 % cp /usr/bin/id ~ % chmod -x ~/id % ls -al ~/id -rw-r--r-- 1 edd edd 22020 2012-08-01 15:06 /home/edd/id % ~/id zsh: permission denied: /home/edd/id % /lib/ld-linux.so.2 ~/id uid=1001(edd) gid=1001(edd) groups=1001(edd),1002(wheel) このスニペットは、通常の非特権ユーザーとしてファイルシステムの実行許可を簡単に回避できることを示しています。これをUbuntu 12.04で実行しました。 Linuxローダーはfile(1)によると共有オブジェクトですが、直接実行できるエントリポイントもあります。この方法で実行されると、LinuxローダーはELFバイナリのインタープリターとして機能します。 ただし、私のOpenBSDマシンでは、ローダーをプログラムとして実行できないため、このエクスプロイトは効果的ではありません。OpenBSDのマニュアルページには、「ld.so自体が、カーネルによって最初にロードされる共有オブジェクトです」と書かれています。 これをSolaris 9で試してみると、セグメンテーション違反が発生します。他の場所で何が起こるかわかりません。 したがって、私の質問は次のとおりです。 なぜ(直接実行)のLinuxローダはないではない ELFバイナリを解釈する前に、ファイルシステム属性をチェック! ファイルの実行を許可しないように設計されたメカニズムを実装するのはなぜですか?私は何かを見逃しましたか?