Bashを終了するとsudoに発生する可能性があるセキュリティリスク

Bashを終了するとsudoに発生する可能性があるセキュリティリスク

私は最近、bashが終了したときにコマンドを実行するためにbashの組み込みtrapコマンドを使用する方法を読んだ。たとえば、trap "notify-send test" EXITbashが終了したらすぐにデスクトップ通知を送信します。最初に思い浮かぶのは、攻撃者がこれを利用できるかということです。いくつかの研究と試行錯誤の最後に、以下を発見しました。

sudo のマニュアルページは次のように述べています。

セキュリティポリシーは、ユーザーが認証なしで一定期間 sudo を再実行できるように、資格情報キャッシュをサポートできます。デフォルトでは、sudoersポリシーは端末ごとに15分間資格情報をキャッシュします。

私はこれら2つの情報を組み合わせて、次のコマンドを思いつきました。ユーザーが15分以内にsudoを使用すると、trap 'printf "" | sudo -S COMMAND &>/dev/null' EXITbashが終了したときにこのコマンドが自動的に実行されます。COMMAND

例えば。 sudoがbashセッションで15分以内に使用されている場合、〜/ .bashrcなどのファイルにコマンドを入れると、ユーザーが所有するtrap 'printf "" | sudo -S touch ~/test &>/dev/null' EXITユーザーのホームディレクトリにtestファイルが作成されます。root

私が知っている限り、攻撃者は起動時にbashが実行されている場所にこのコマンドを挿入して権限の昇格を実行し、誰かがbashセッションでsudoを使用するのを待ってから、新しい権限を悪用してバックドアをインストールするなどのタスクを実行しますできます。注意すべき点は、このコマンドがbashの終了を遅らせるため、ユーザーは長いコマンドまたは無限ループの実行を知ることができますが、コマンドを実行すると簡単に回避できることです。背景

ここで何か抜けましたか?私が知らないいくつかのセキュリティ制限がありますか? Linux 5.19.0-31-generic x86_64カーネルを使用してUbuntu 22.10ノートブックでテストしたところ、期待どおりに機能してファイルが生成されました。また、システムディレクトリにファイルを作成し、aptを介してパッケージをインストールしてみましたが、すべてが機能しました。 (パッケージの設置には多少の遅延がありますが、これは予想される現象です。)

ありがとうございます。

ベストアンサー1

いいえ、可能な悪用の面で何も見逃していません。ユーザーにパススルー権限がある限り機能しますsudo

しかし、ここには3つの重要なことがありません。

  • これは簡単に隠された攻撃ではありません。前述の終了時間の問題に加えて、デフォルトはsudoロギングです。みんなコマンドはそれを介して実行されるため、ほとんど常に明確な紙の跡があり、すべてのコマンド出力もユーザーに表示されます。
  • ターゲットユーザーのシェル起動ファイルを操作できることは、実際にはかなり深刻な悪用を意味します。攻撃者がこのポイントに達した場合、おそらく問題のユーザーとしてランダムなコードを実行する別の方法があるため、これより隠しやすい他の特権昇格オプションがある可能性があります。
  • 資格証明キャッシュがsudoある任意に選択できる。この機能をオフにすることができ、正気でセキュリティに敏感なほとんどのユーザーはそうします。 Ubuntuは、これを高リスクの攻撃ベクトルと見なすことなく(上記の2つの理由で)怠惰なユーザーの生活をより簡単にするため、デフォルトで有効にすることを選択します。

おすすめ記事