nmapによるUbuntu SSH脆弱性の誤検知:CVE-2024-6387実例で学ぶ対処法
この記事は初心者が直面した状況をもとに手順資料としてまとめた内容です。
本番環境やそれに準ずる環境にポートスキャンを行う場合は、リスクを理解した上で自己責任で実施してください。
免責と注意事項
本記事で取り上げているポートスキャンや脆弱性スキャンは、筆者が管理するAWS EC2環境に限定して実施しています。
AWSや各クラウドベンダーでは、利用規約で「許可なく第三者のリソースをスキャン・攻撃しない」ことが明記されています。
他者環境や無許可のシステムに対するスキャンは、不正アクセス禁止法違反やアカウント停止のリスクがあるため、絶対に避けてください。
序論
ペネトレーションテストでnmapを使用すると、最新のUbuntuシステムでSSHの脆弱性が検出されることがあります。
今回、筆者の環境でCVE-2024-6387(regreSSHion)が検出されました。
ただし、Ubuntuではバックポート修正が行われるため、nmapの結果が誤検知となるケースがあります。
そのため、スキャナー結果を鵜呑みにせず、パッケージの実際のバージョンや公式セキュリティ公告を確認することが重要です。
本記事では、AWS EC2 Ubuntu 24.04環境で遭遇した事例をもとに、誤検知の原因と正しい対応方法を解説します。
実際に遭遇した事例
テスト環境
- 対象: AWS EC2インスタンス(Ubuntu 24.04 LTS)
- テスト日: 2024年9月15日
実行したnmapコマンド
$ sudo nmap -sV -Pn -T2 --script=vuln -p 22,80,443 <TARGET_IP>
検出結果(抜粋):
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.6p1 Ubuntu 3ubuntu13.14 (Ubuntu Linux; protocol 2.0)
| vulners:
| cpe:/a:openbsd:openssh:9.6p1:
| CVE-2024-6387 8.1 https://vulners.com/cve/CVE-2024-6387
| [その他50以上のエクスプロイト参照]
OpenSSH更新手順(実施例)
脆弱性検出を受けて、安全策として以下の手順でOpenSSHの更新を実施しました:
1. 更新前のバージョン確認
ubuntu@host:~$ ssh -V
OpenSSH_9.6p1 Ubuntu-3ubuntu13.11, OpenSSL 3.0.13 30 Jan 2024
2. パッケージリスト更新
ubuntu@host:~$ sudo apt update
3. OpenSSHアップデート実行
ubuntu@host:~$ sudo apt upgrade openssh-server
4. SSHサービス再起動
ubuntu@host:~$ sudo systemctl restart ssh
5. 更新後の確認
ubuntu@host:~$ ssh -V
OpenSSH_9.6p1 Ubuntu-3ubuntu13.14, OpenSSL 3.0.13 30 Jan 2024
結果: バージョン表示は 9.6p1
のままですが、パッケージ番号は 13.11
→ 13.14
に更新されました。
更新後も脆弱性が検出される謎
パッケージ情報の確認
対象サーバーで確認したコマンド:
ubuntu@host:~$ apt show openssh-server
Package: openssh-server
Version: 1:9.6p1-3ubuntu13.14
→ 最新バージョンが適用済みであることが確認できます。
更新後の再スキャン結果
$ sudo nmap -sV -Pn -T2 --script=vuln -p 22,80,443 <TARGET_IP>
結果: 依然として同じ脆弱性が検出される
疑問: 最新パッケージを適用したのに、なぜ脆弱性が検出されるのか?
この疑問を解決するため、技術的なメカニズムを調査した結果を以下にまとめました。
誤検知が発生する技術的メカニズム
nmapの判定プロセス
- SSH接続でバナー情報を取得
例:SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.14
- バージョン部分を抽出 →
OpenSSH 9.6p1
- Vulners.com APIに問い合わせ → 「9.6p1は脆弱ですか?」
- API応答 → 「9.6p1は9.8p1未満なので脆弱」
- nmapが「脆弱」と報告
Ubuntuのバックポート仕組み
Ubuntuはセキュリティ修正をバックポートで提供します:
基本バージョン: OpenSSH 9.6p1 (変更なし)
↓
セキュリティパッチ適用: debian/patches/CVE-2024-6387.patch
↓
パッケージ番号更新: 1:9.6p1-3ubuntu13.3 (修正済み)
↓
SSHバナー: "OpenSSH_9.6p1" のまま
つまり: バナー情報と実際のセキュリティ修正状況に齟齬が生じるため、誤検知が発生します。
CVE-2024-6387の公式修正情報
Ubuntu Security Notice (USN-6859-1)
- USN-6859-1
- リリース日: 2024年7月1日
修正済みパッケージバージョン:
Ubuntu 24.04 LTS: openssh-server – 1:9.6p1-3ubuntu13.3
Ubuntu 23.10: openssh-server – 1:9.3p1-1ubuntu3.6
Ubuntu 22.04 LTS: openssh-server – 1:8.9p1-3ubuntu0.10
Ubuntu Changelog からの確認
抜粋:
openssh (1:9.6p1-3ubuntu13.3) noble-security; urgency=medium
* SECURITY UPDATE: remote code execution via signal handler race condition
(LP: #2070497)
- debian/patches/CVE-2024-6387.patch applied
実際のバージョン判定
筆者のケースでの分析:
公式修正バージョン: 1:9.6p1-3ubuntu13.3
更新前のパッケージ: 1:9.6p1-3ubuntu13.11 ← 実は既に修正済み
更新後のパッケージ: 1:9.6p1-3ubuntu13.14
ubuntu13.11 > ubuntu13.3 → 元から修正済み
ubuntu13.14 > ubuntu13.3 → 更新後も修正済み
重要な発見: 元のバージョン(13.11)も既に修正済みでした。つまり、最初からCVE-2024-6387は修正済みであり、nmapの検出は一貫して誤検知だったということです。
結論:
- OpenSSHの更新作業自体は不要でした
- ただし、疑問を持って確認作業を行ったことで、nmapの誤検知メカニズムを理解できました
- セキュリティに対する慎重なアプローチとしては適切な判断でした
誤検知に惑わされないための対応フロー
Mermaidで段階的確認フロー
まとめ & チェックリスト
まとめ
- nmapのvulnersスクリプトはバナー情報頼りのため誤検知が発生する
- Ubuntu/Debian系列はバックポートパッチを利用するため「バージョン番号≠脆弱性有無」
- 正確な判定にはAPTパッケージ情報と公式セキュリティ公告を参照することが必要
チェックリスト
-
nmapで脆弱性が出たら、慌てず
apt show
を確認 - Ubuntu/Debianはバナーに惑わされない
- USNとChangelogでCVE修正を確認
- 未修正なら即アップデート
参考資料
関連記事