suとsshを追跡すると、パスワードが表示されます。これはセキュリティ上の欠陥ですか、それとも何か抜けましたか?

suとsshを追跡すると、パスワードが表示されます。これはセキュリティ上の欠陥ですか、それとも何か抜けましたか?

私は現在これにこだわっており、strace初心者として試してみることにしました。質問のタイトルからわかるように、私は試してみてstrace suくださいstrace ssh。どちらのコマンドも、strace出力に入力したパスワードを表示します。su引き続きパスワードが間違っているというのにssh正常にログインになります。
私の質問:

  • これはセキュリティ上の欠陥ですか、それとも何か抜けましたか?
  • 間違ったパスワードを報告することは、suパスワードが実行されていることを検出するためのセキュリティ対策ですかstrace?それでは、どのようにして呼び出されたのか、どうすればわかりますかstrace?確認してみましょう/proc/self/cmdlineか?
  • そんなことがどれくらいダメージを与えることができますか?
    alias su="strace -o /tmp/output.log su"

答え1

これはセキュリティ上の欠陥ではありません。あなたのプロセスなので、プロセスを追跡できます。strace実行中のプロセスにしか接続できません。たとえば、

$ sudo sleep 30 &
[1] 3660

$ strace -p 3660
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted

su読み取り権限が不足しているため、無効なパスワードが報告されました/etc/shadow/etc/shadowパスワードハッシュが保存される場所であり、セキュリティ上の理由からルートのみ読み取れるように設定されています。susetuid ビットがセットされ、実行する人は root として効果的に実行されますが、実行すると機能しないため、最終的にはstraceユーザーアカウントで実行されます。

「どれくらいダメージを与えることができるのか」という言葉がどういう意味なのかよく分からない。ご覧のとおり、内部suでは動作しないため、strace動作しないようにします。 「誰かがこれを使って自分のパスワードを盗むことができる」という意味であれば、彼らはシェルにエイリアスを設定できるはずです。ログインファイルを誰でも書き込むように設定したり、それに類似したものに設定しない限り、エイリアスを設定しないでください。方法。エイリアスを設定する権限がある場合は、suパスワードを直接記録するパッチバージョンのエイリアスを使用できます。strace

答え2

私はあなたがこれを見ている理由は、まずプレーンテキストを入力し、suパスワードsshを入力してからハッシュして処理する必要があるためだと思います。を実行すると、straceすべてのシステムコールを受信し、それをハッシュして処理する前にプレーンテキストパスワードをキャプチャします。端末にテキストが表示されないとしても、プレーンテキストを入力しないという意味ではありません。

答え3

http://blog.vpetkov.net/2013/01/29/sniffing-ssh-password-from-the-server-side/潜在的なセキュリティ問題を示す攻撃者がopensshを実行しているサーバーに対するroot権限を持っている場合は、strace「net」プロセスで実行して、サーバーにSSHを介して接続しているユーザーのパスワードを収集できます。

ps aux | grep ssh | grep net | awk {‘ print $2′} | xargs -L1 strace -e write -p

...

Process 17681 attached – interrupt to quit
write(4, “\0\0\0 \v”, 5) = 5
write(4, “\0\0\0\33thisismysupersecretpassword“, 31) = 31
write(3, “\345+\275\373q:J\254\343\300\30I\216$\260y\276\302\353″…, 64) = 64
Process 17681 detached

答え4

これはroot権限でのみ実行できますが、依然として非常に危険です。そのシステムから他の重要なシステムにSSHを介して接続すると、root権限を持つ悪意のある人がユーザーの知らない間にユーザーのパスワードやパスワードのフレーズを盗む可能性があります。

関連情報