どうやら、Shellshock Bashエクスプロイト CVE-2014-6271 は、SSH経由でネットワークを介して悪用される可能性があります。 Apache/CGIを介してエクスプロイトがどのように機能するか想像できますが、SSHを介してどのように機能するか想像できませんか?
誰かがSSHがどのように悪用されるのか、そしてシステムにどのような害を及ぼす可能性があるのか、例を挙げていただけますか?
AFAIU、認証されたユーザーのみがSSHを介してこの脆弱性を悪用できます。とにかくシステムへの正当なアクセス権を持つ誰かがこのエクスプロイトをどのように利用するのですか?つまり、このエクスプロイトには特権の昇格がないため(rootになることはできません)、SSHを介して正当にログインしただけでは、彼ができること以上のことはできません。
これが悪用される可能性がある1つの例は、authorized_keys
強制コマンドを実行しているサーバーです。 ~/.ssh/authorized_keys
にエントリを追加するときに、行の前にcommand="foo"
を付けて、ssh公開鍵が使用されているときにfoo
を強制的に実行することができます。このエクスプロイトでは、ターゲットユーザーのシェルがbash
に設定されている場合、エクスプロイトを利用して、強制されているコマンド以外のものを実行できます。
これはおそらく例の中でもっと理にかなっているので、ここに例を示します:
Sudo useradd -d /testuser -s /bin/bash testuser
Sudo mkdir -p /testuser/.ssh
Sudo sh -c "echo command=\\\"echo starting sleep; sleep 1\\\" $(cat ~/.ssh/id_rsa.pub) > /testuser/.ssh/authorized_keys"
Sudo chown -R testuser /testuser
ここでは、ユーザーtestuser
をセットアップします。これにより、sshキーを使用したssh接続でecho starting sleep; sleep 1
が実行されます。
これは次の方法でテストできます。
$ ssh testuser@localhost echo something else
starting sleep
echo something else
が実行されないことに注意してください。ただし、starting sleep
は、強制コマンドが実行されたことを示しています。
次に、このエクスプロイトの使用方法を示します。
$ ssh testuser@localhost '() { :;}; echo MALICIOUS CODE'
MALICIOUS CODE
starting sleep
これは、sshd
がSSH_ORIGINAL_COMMAND
環境変数を渡されたコマンドに設定するため機能します。したがって、sshd
はsleep
を実行しましたが、私が指示したコマンドは実行しませんでしたが、エクスプロイトが原因で、コードは引き続き実行されます。
Rameshの例を拡張-2要素認証を使用する場合、実装方法によっては、このエクスプロイトを使用して2番目の要素をバイパスすることが可能です。
—通常のログイン—
[10:30:51]$ ssh -p 2102 localhost
password:
Duo two-factor login
Enter a passcode or select one of the following options:
1. Duo Push to XXX-XXX-XXXX
2. Phone call to XXX-XXX-XXXX
3. SMS passcodes to XXX-XXX-XXXX (next code starts with: 2)
Passcode or option (1-3): 1
Pushed a login request to your device...
Success. Logging you in...
[server01 ~]$ logout
— 2FAなしでコードを実行—
[10:31:24]$ ssh -p 2102 localhost '() { :;}; echo MALICIOUS CODE'
password:
MALICIOUS CODE
2FAを要求せずにコードを実行したことがわかります。
— bashにパッチを適用した後—
[10:39:10]$ ssh -p 2102 localhost '() { :;}; echo MALICIOUS CODE'
password:
bash: warning: SSH_ORIGINAL_COMMAND: ignoring function definition attempt
bash: error importing function definition for `SSH_ORIGINAL_COMMAND’
ShellshockはSSHではなくbashの脆弱性です。これを悪用するには、攻撃者は脆弱なシステムにbashを実行させ、bashに渡される環境変数の値を制御する必要があります。
SSHを介してbashプロセスに到達するには、攻撃者は認証手順を通過する必要があります。 (他のネットワークサービスを介した攻撃ベクトルが存在する可能性がありますが、それらはこのスレッドの範囲外です。)とにかくアカウントが任意のシェルコマンドの実行を許可されている場合、攻撃はありません。この脆弱性は、アカウントが特定のコマンドの実行に制限されている場合に発生します。たとえば、SFTP専用アカウントやgit専用アカウントなどです。
SSHを使用して特定のコマンドを実行するようにアカウントを制限する方法はいくつかあります。sshd_config
のForceCommand
オプションを使用する方法と、command=
を使用する方法です。 authorized_keys
ファイルの制限。ユーザーのシェルがbashである場合、Shellshockの脆弱性により、通常は制限付きアカウントにのみアクセスできるユーザーが制限を回避して任意のコマンドを実行することができます。