EFingerd のリモート・バッファ・オーバーフロー
[翻訳:関谷 麻美]
2002年3月9日
国際
海外情報
2002年3月9日
概要
EFingerd は man ページの記述にある通り、あなたのコンピュータに関して表示しようとすることをコントロールするフィンガー・デーモンだ。しかしこれは、全てのローカル・ユーザが当初管理者により意図された以上の情報を(たとえ故意ではないにしても)晒してしまうため、完全には正しくない。さらに問題なのは、その製品が悪用可能なバッファー・オーバーフローを含んでいる点だ。
詳細
脆弱なシステム:
Debian Linux 配布バージョン 1.3 (安定バージョン) と1.6.1 (開発バージョン)。
リモート・バッファ・オーバーフロー
安定バージョンにおいて、コードのリバースルックアップ部分を利用して、リモートでバッファ・オーバフロー状態を引き起こすことは可能:
static char *lookup_addr (struct in_addr in)
{
static char addr[100];
struct hostent *he;
if (resolve_addr) {
he = gethostbyaddr ((char *)&in, sizeof(struct in_addr),AF_INET);
if (he == NULL)
strcpy(addr, inet_ntoa(in));
else
strcpy(addr, he->h_name);
}
else
strcpy (addr, inet_ntoa (in));
return addr;
}
通常 efingerd は 'nobody'として動作する。
危険な機能
(両方のバージョンの)efingerd に関連したセキュリティ問題がもう一つある。既存のユーザの情報が検索されている時、efingerd はユーザのホームディレクトリの ".efingerd" ファイルを探す。それが存在し、そして実行可能な場合に、 'nobody'で実行を試みる。 .efingerd の出力は、fingerer に返送される。
つまり、ローカルユーザが自身の .efingerd ファイルにあるものなら何でも nobody UID/GID によって、単にユーザ自身の情報検索をするだけで実行されるのだ。つまりユーザ nobody およびグループ nobody シェルを取得することは、容易だ。これは、ローカルの DoS 攻撃などの悪事を働いている間、自分のアイディンティティを隠そうとする潜在的悪人にとっては非常に興味深いことだろう。ログファイルは、efingerd の UID により書き込み可能なので、容易に改ざんされる。
この機能は、 -u オプションで無効にすることが可能。
追加情報
Spybreak がこの情報を提供した。
[情報提供:SecuriTeam]
http://www.securiteam.com/
《ScanNetSecurity》