web-dev-qa-db-ja.com

プロセスの途中でユーザー名を変更することで機能するsshエクスプロイトはどれですか?

数時間ごとに、サーバーログにそれらのいくつかが記録されます。

sshd[...]: Disconnecting: Change of username or service not allowed: (httpd,ssh-connection) -> (http,ssh-connection) [preauth]
sshd[...]: Disconnecting: Change of username or service not allowed: (identd,ssh-connection) -> (ident,ssh-connection) [preauth]
sshd[...]: Disconnecting: Change of username or service not allowed: (administrator,ssh-connection) -> (admin,ssh-connection) [preauth]
sshd[...]: Disconnecting: Change of username or service not allowed: (admins,ssh-connection) -> (admin,ssh-connection) [preauth]
sshd[...]: Disconnecting: Change of username or service not allowed: (admissions,ssh-connection) -> (adm,ssh-connection) [preauth]

...other attempts of the same kind: tony -> to, users -> user, wwwrun -> www, ...

どうやら、誰かが最初にfooとして識別し、次にsomePrefixOfFooとして識別して、私のsshデーモンを混乱させようとしているようです(明らかに、成功しませんでした)。

SSHに、このような攻撃を成功させる特定の脆弱性はありますか?

7
Heinzi

少なくともopensshには、この脆弱性はありませんでした。このエラーの原因となったコードは this commit に追加され、ietf-draftsからの推奨を参照しています。たぶん RFC4252 、今日はこう述べています:

「ユーザー名」と「サービス名」は、新しい認証を試行するたびに繰り返され、変更される場合があります。サーバー実装は、すべてのメッセージでそれらを注意深くチェックしなければならず、それらが変更された場合、蓄積された認証状態をすべてフラッシュしなければなりません。 認証状態をフラッシュできない場合は、「ユーザー名」または「サービス名」が変更されたときに切断する必要があります。

だから私はそれが強調されたケースだと思います。

8
Jakuje