Debian セキュリティ勧告
screen -- 「screen」プログラムが gecos フィールド複製時にオーバフロー
- 報告日時:
- 1997-02-20
- 影響を受けるパッケージ:
- screen
- 危険性:
- なし
- 参考セキュリティデータベース:
- 現時点では、その他の外部参考セキュリティデータベースはありません。
- 詳細:
-
オーバフローは存在しますが screen はコードの実行前に root 権限を破棄します
最初の報告提出者: Khelbin <khelbin@connix.com>
Screen 3.07.02 で (通常どおりに) setuid root した場合、少なくとも特定のプラットホームでバッファオーバフローに [陥りやすく] なります。ソース全体を読んだわけではなく簡単に見てみただけですが、 attacher.c が:
struct passwd ppp; char fullname[100]; strcpy(fullname, ppp->pw_gecos);
のようにしていることがわかりました。 簡単な悪用方法を作ることはできましたが、chpass/chfn が特定の文字を除外しないため BSDI 1.1 では機能しませんでした。 このようにして、シェルコードでフルネームフィールドを読み込むことで 「Illegal Character found in the Full Name field, re-edit [y]?」 というようなエラーメッセージを出しています。
OS やバージョンを問わず、フィールドに入力される情報について 「不正な文字」や長さを確認していない chfn/chpass (BSDI 1.1 は長さを確認しておらず、不正な文字だけを確認しています) は脆弱な可能性があります (suid root 権限を取ることは、 シェルコード文字列でオーバフローさせることで実現しようとしていましたがまだ確認していません)。
やってみたことは、シェルコード文字列を環境変数にセットして (NOP と NOP への戻りアドレスを付加して) 環境変数をファイルに書き込みます。それから新しい gecos 情報として chpass/chfn が存在するときにそのファイルを読み込むだけです。