Kerberos 5 FTPサーバーにバッファオーバーフローの脆弱性
◆概要:
マサチューセッツ工科大学(Massachusetts Institute of Technology)のKerberos 5 リリース1.2.xに含まれるFTPサーバーのフォーマットストリングの欠陥を利用して、攻撃者がリモートルートアクセスを実行できる可能性がある。
国際
海外情報
マサチューセッツ工科大学(Massachusetts Institute of Technology)のKerberos 5 リリース1.2.xに含まれるFTPサーバーのフォーマットストリングの欠陥を利用して、攻撃者がリモートルートアクセスを実行できる可能性がある。
Kerberosはネットワーク認証プロトコルで、クライアント/サーバーアプリケーション用の強力な認証機能を提供するために設計されている。Kerberosは、強力な秘密鍵暗号を利用して、不安定なネットワーク接続におけるクライアントとサーバー間の相互確認を可能にする。クライアントとサーバーがKerberosを利用して相互確認を終了した後は、全ての通信を暗号化して、機密性とデータの完全性を保護することができる。詳しい情報については、 http://web.mit.edu/kerberos/www を参照。
setproctitle システムコールの入力フィルタの安全性が低いために、バグの悪用が可能になる。setproctitle システムコールは、プロセス識別子情報の表示に利用するものである。このコールは、一部のシステム上でsetproctitle (char *fmt,...); として定義されており、vsnprintf() 関数を呼び出す。そのため、フォーマットストリング攻撃の影響を受けやすくなる。
この種のFTP脆弱性は、特に目新しいものではない。2000年7月には、多数のFTPディストリビューションで、setproctitle システムコールに関連した同一のセキュリティの問題が発見されている。詳しい情報については、CERT勧告 http://www.cert.org/advisories/CA-2000-13.html を参照。2000年7月に発見された脆弱性については、Mitre社のCommon Vulnerabilities and Exposures(CVE:一般的な脆弱性と暴露性)データベースへの追加が検討されており、CAN-2000-0574の識別番号が付与されている。詳細については、
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2000-0574+ を参照。
◆情報ソース:
・iDEFENSE Labs, May 14, 2002
・iDEFENSE Intelligence Operations, May 14, 2002
・CERT ( http://www.cert.org/advisories/CA-2000-13.html ),
July 07, 2000
・ Massachusetts Institute of Technology
( http://web.mit.edu/kerberos/www/ ), May 14, 2002
◆分析:
(iDEFENSE 米国) 今回のケースでも、他のフォーマットストリングの脆弱性と同様に、攻撃者がメモリーのロケーションを操作し、FTPホスト上で任意コードをルート実行できる。攻撃者は、匿名アクセスが可能であるとの仮定をもとに匿名ユーザーとしてシステムにログインすると同時に、異常な電子メールアドレスを提供してこの問題を悪用する可能性がある。
iDEFENSEには、この脆弱性のために特別に作成された悪用コードが公開されているとの情報は入手していない。しかし、この種の問題は広く知れ渡っているため、被害を懸念する管理者は、リリースされ次第パッチを適用する必要がある。iDEFENSEでは、この脆弱性についてマサチューセッツ工科大学に問い合わせ済みであり、本レポート作成の時点では回答を待っている状態である。ベンダーによる正式なパッチまたは回答が公表され次第、アップデートがリリースされる見込みである。
◆検知方法:
setproctitleシステムコールをサポートするオペレーティングシステム上にインストールされた、Kerberos 5リリース1.2.xの全てのディストリビューションで脆弱性が確認されている。ただし、匿名FTPアクセスをサポートしていないKerberos 5 FTP、またはsetproctitle() コールをサポートしていないオペレーティングシステムは、この問題の影響を受けていない。
◆暫定処置:
ftpd.cソースコードの全ての
setproctitle(proctitle); を
setproctitle("%s",proctitle);
に変更し再編成する。この変更を以下に示す。
─ setproctitle(proctitle);
+ setproctitle("%s", proctitle);
ftpd.c
──
if (guest) {
reply(230, "Guest login ok, access restrictions apply.");
#ifdef SETPROCTITLE
sprintf(proctitle, "%s: anonymous/%.*s", rhost_sane,
sizeof(proctitle) - strlen(rhost_sane) -
sizeof(": anonymous/"), passwd);
setproctitle(proctitle);
#endif /* SETPROCTITLE */
if (logging)
syslog(LOG_INFO,
"ANONYMOUS FTP LOGIN FROM %s, %s (%s)",
rhost_addra, remotehost, passwd);
} else {
if (askpasswd) {
askpasswd = 0;
reply(230, "User %s logged in.", pw->pw_name);
}
#ifdef SETPROCTITLE
sprintf(proctitle, "%s: %s", rhost_sane, pw->pw_name);
setproctitle(proctitle);
#endif /* SETPROCTITLE */
if (logging)
syslog(LOG_INFO, "FTP LOGIN FROM %s, %s (%s)",
rhost_addra, remotehost, pw->pw_name);
}
※この情報はアイ・ディフェンス・ジャパン
( http://www.idefense.co.jp/ )より提供いただいております。
アイディフェンス社の iAlert サービスについて
http://shop.vagabond.co.jp/p-alt01.shtml
情報の内容は以下の時点におけるものです。
【16:35 GMT、05、15、2002】
《ScanNetSecurity》