
CVE-2020-11881: MikroTik SMBサービスの認証不要のリモートDoS
この報告書は CVE-2020-11881 について説明しています。これは、RouterOs 上で動作する MikroTik の SMB サービスに対する認証不要のリモート DoS 脆弱性です。 この脆弱性により、攻撃者は実行中の SMB サービスをクラッシュさせることが可能です。この問題は 2020 年 4 月 6 日に security<@>mikrotik.com に責任を持って開示されました。
Server Message Block (SMB) プロトコルは Microsoft によって導入され、Windows システムやサービスとのファイル交換互換性を維持するために複数のベンダーによって再実装されました。このプロトコルは一般的に Windows システム間のファイル交換に使用されます。
6.41.3 (長期リリース版)
6.45.8 (長期リリース版)
6.45.9 (長期リリース版)
6.46.4 (安定版)
6.47.2 (安定版)
6.47.3 (安定版)
7.0beta5 (ベータ版)
7.1beta2 以下
おそらく 2020 年 9 月 12 日より前にリリースされたさらに多くのバージョンが影響を受けます。ただしバージョン 6.47.0 は例外で、最初の責任ある開示プロセスに対応して 1 つのリリースサイクルで修正されたようです。
SMB サーバーは、negotiation-request パケットの後に改変された setup-request パケットを受信するとクラッシュします。この脆弱性を引き起こすには、setup-request パケットの MessageID フィールドを 1 に、SessionID フィールドを 0 に設定する必要があります。サービスは、SessionID フィールドを適切に処理できないためにクラッシュします。
バグを確実に再現するには、このリポジトリで提供されているテスト環境を再構築してください。
RouterOs 環境のダウンロードと起動
Ubuntu 18.04 の新規インストール環境で以下のスクリプトを実行してください。このスクリプトは必要なソフトウェアをすべてインストールします。スクリプトは RouterOs VM の IP アドレスを表示して終了します。
sudo ./setupMikroTikEnvironment.sh
RouterOs で SMB を有効化
SMB サービスを有効にするには、以下のコマンドを実行してください。
telnet <RouterOs IP>
(ユーザー: admin, パスワードなし)
ip smb set enabled=yes
ip smb print
サービスの状態はホストシステムから以下のコマンドで確認でき、サービスが稼働中であれば Anonymous login successful と応答します。
smbclient -N -L \\\\<RouterOs IP>
サービス拒否攻撃
Python3 スクリプト cve-2020-11881.py は、悪用プロセスの前後で SMB サービスの可用性を検証します。実行に成功すると、SMB サービスが利用不可になります。以下のようにスクリプトを実行してください。
python3 cve-2020-11881.py --ip <RouterOs Ip>
次のコマンドで SMB サービスをテストすると失敗します。
smbclient -N -L \\\\<RouterOs IP>
VM の削除
VM を削除するには、スクリプトをもう一度実行してください。
sudo ./setupMikroTikEnvironment.sh
バグは 2020 年 4 月 6 日に報告されましたが、複数回の要請にもかかわらず 2020 年 9 月 12 日時点では修正されていませんでした。
CVE に関する議論: https://forum.mikrotik.com/viewtopic.php?f=2&t=166137
現時点では、長期リリースチャンネル (v6.46.7) のみにこの CVE に対する必要な修正が全て含まれています。安定版およびテストチャンネルにも公開できるよう作業を進めています。ご不便をおかけして申し訳ありません。