[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

security/1997/の残件



長めなので
http://www.debian.org/security/1997/19970220
http://www.debian.org/security/1997/19970409
---19970220
#use wml::debian::translation-check translation="1.9"
<define-tag description>「screen」プログラムが gecos フィールド複製時にオーバフロー</define-tag>
<define-tag moreinfo>
<p>オーバフローは存在しますが screen はコードの実行前に root 権限を破棄します</p>

<p>最初の報告提出者: Khelbin &lt;khelbin@xxxxxxxxxx&gt;</p>

<p>Screen 3.07.02 で (通常どおりに) setuid root
した場合、少なくとも特定のプラットホームでバッファオーバフローに [陥りやすく]
なります。ソース全体を読んだわけではなく簡単に見てみただけですが、
attacher.c が:</p>

<pre>
      struct passwd ppp;
      char fullname[100];

      strcpy(fullname, ppp-&gt;pw_gecos);
</pre>

<p>のようにしていることがわかりました。
簡単な悪用方法を作ることはできましたが、chpass/chfn
が特定の文字を除外しないため BSDI 1.1 では機能しませんでした。
このようにして、シェルコードでフルネームフィールドを読み込むことで
「Illegal Character found in the Full Name field, re-edit [y]?」
というようなエラーメッセージを出しています。</p>

<p>OS やバージョンを問わず、フィールドに入力される情報について
「不正な文字」や長さを確認していない chfn/chpass
(BSDI 1.1 は長さを確認しておらず、不正な文字だけを確認しています)
は脆弱な可能性があります (suid root 権限を取ることは、
シェルコード文字列でオーバフローさせることで\
実現しようとしていましたがまだ確認していません)。</p>

<p>やってみたことは、シェルコード文字列を環境変数にセットして (NOP と NOP
への戻りアドレスを付加して) 環境変数をファイルに書き込みます。それから新しい
gecos 情報として chpass/chfn が存在するときにそのファイルを読み込むだけです。</p>
</define-tag>

# do not modify the following line
#include '$(ENGLISHDIR)/security/1997/19970220.data'

---19970409
#use wml::debian::translation-check translation="1.9"
<define-tag description>metamail に任意のコマンドを実行にできる可能性</define-tag>
<define-tag moreinfo>
<p>最初の報告提出者: Olaf Kirch &lt;okir@xxxxxx&gt;</p>

<p>この欠陥は、タイプが message/external-body であるメッセージに対して
metamail に showext を実行させている場合に悪用可能である可能性があります。
少なくとも tcsh と、もしかすると他の csh
の一部でコマンドラインの引数を展開する際に恐ろしいことをしているようです。
スクリプトに引数として「foo FTP=/tmp/evilcmd」を与えると、</p>

<pre>
	set var=$1
</pre>

<p>を実行します。これは foo を $var に、/tmp/evilcmd を
$FTP に割り当てます。残念ながら、metamail はコマンドラインに
MIME 属性を付加して showext を呼び出すので、基本的に</p>

<pre>
   Content-type:  message/external-body;
	   access-type="anon-ftp";
	   name="passwd";
	   site="monad.swb.de";
	   directory="/etc";
	   mode="image FTP=/tmp/evilcmd"
</pre>

<p>のようなヘッダを送ります。さらに続いて、スクリプトは $FTP を実行して FTP
接続を開始します。今のところ、引数をコマンドに渡すことはできていませんが、
それは上記のようにしてひどいことができないという意味ではありません。</p>

<p>[時間が過ぎたためパッチは削除されました。]</p>

</define-tag>

# do not modify the following line
#include '$(ENGLISHDIR)/security/1997/19970409.data'

-- 
victory
no need to CC me :-)
http://userscripts.org/scripts/show/102724