サーバにlibsshを使ってSSHでリモートアクセスをしていると、実際の認証を飛ば(バイパス)して、接続できるという脆弱性が発見されました。

つまり、「SSH2_MSG_USERAUTH_SUCCESS」メッセージをクライアント側からサーバに送信するだけで認証を回避できるというのです。とても怖い、脆弱性です。

問題は、libsshを使っているのかということです。SSH2やOpenSSHを使ってSSHでリモートアクセスしている場合は影響を受けないようです。

では、libssh-scannerを利用して調べてみます。

〔参考サイト〕

  1. github.com
  2. libssh 0.8.4 and 0.7.6 security and bugfix release
  3. libssh において認証を回避して遠隔から任意のコードが実行可能となる脆弱性(Scan Tech Report)

【前提】

  1. サーバはCentOS5,6で運用。
  2. クライアントはUbuntu18.04LTS。
  3. クライアントからサーバへSSHでリモートアクセスして運用。
    (ただし、認証はパスワードではなく、公開鍵暗号方式のプライベートキーによるパスフレーズ。)

<手順>

  1. githubからスキャナーをダウンロード。
  2. インストール。
  3. 検査。

1. githubからスキャナーをダウンロード。

Ubuntu18.04LTSの端末で下記コマンドを実行します。ダウンロードディレクトリはどこでもよいのですが、ホームディレクトリ内のダウンロードディレクトリにしました。

ダウンロードした中身を見ます。

2. インストール。

libssh-scannerをダウンロードしたgithubのサイトの下の方に、インストール方法と使い方が簡単に掲載されています。それを参考にインストールしました。

まず、「pip」を利用するのでインストールしておきます。

では、libssh-scannerをインストールします。

3. 検査。

では、サーバを検査します。

libssh-scannerディレクトリ内を見ると、libsshscan.pyが実行コマンドのようです。SSHは22番ポートを使っています。

コマンドは、

のように入力し実行しました。

not vulnerable to authentication bypass」(認証のバイパスの脆弱性はない)となりました。

同様に、残るサーバもすべてチェックし、脆弱性がないことを確認しました。私の場合、SSHには、SSH2、OpenSSHを利用していおり、libsshは使われていないようです。

もし、脆弱性がある場合は、参考サイト「2.libssh 0.8.4 and 0.7.6 security and bugfix release」内にpatchへのリンクがあるのでそれで対処できるようです。