
UpdatedJul 31, 2026
NotCVE-2026-0009 — Updated!
NitroShare v0.3.4 におけるパストラバーサル脆弱性
nitroshare のパストラバーサル脆弱性
説明
NitroShare Desktop v0.3.4 は、LAN ファイル転送サーバーにパストラバーサル脆弱性が存在します。サーバーは認証なしで全ネットワークインターフェース(ポート 40818)で待ち受けます。ファイルを受信する際、送信者の JSON アイテムヘッダーにある name フィールドは、解決されたパスが転送ルートディレクトリ C:\UserName\Downloads\NitroShare 内に留まるかどうかを検証せずに渡されます。同じ LAN 上の攻撃者は、../(古典的なドットドットスラッシュ攻撃)シーケンスを含む細工されたファイル名を送信することで、現在のユーザーがアクセスできる任意の場所にファイルを書き込むことができます。これには、次回ログイン時にコードを実行するための Windows スタートアップフォルダも含まれます(そのため、作成された POC があります)。ユーザーの操作は不要です。さらに、TLS はデフォルトで無効(アプリケーションが提供する認証方法)であるため、デフォルトでは認証が不要です。IT および情報セキュリティの分野で長年働いてきた経験から、ほとんどのユーザーがそのまま(無効の状態で)使用するだろうと私は想定しています。
再現手順
- LAN から NitroShare の転送サーバー(TCP ポート 40818)に接続します。
- JSON 転送ヘッダーパケットを送信します:
{"name":"attacker","size":"<n>","count":"1"}。 - パストラバーサルファイル名を含む JSON アイテムヘッダーパケットを送信します:
{"name":"../../AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/payload.exe","directory":false,"created":"0","last_modified":"0","last_read":"0","size":"<n>"} - 悪意のあるファイルコンテンツを含むバイナリパケットを送信します。
- ファイルはダウンロードディレクトリの外部の、攻撃者が選択したパスに書き込まれます。
- スタートアップフォルダを標的とした場合、ペイロードは次回のユーザーログイン時に自動的に実行されます。
動作する PoC が提供されており(poc_path_traversal_via_lan_transfer___arbitrary_file_w.py)、Windows 上の NitroShare 0.3.4 に対して検証済みです。
推奨される修正方法
- 受信したファイル名をサニタイズする — パス区切り文字(
/、\)と..シーケンスを除去または拒否します。QDir::absoluteFilePath()で解決した後、結果が転送ルートディレクトリで始まることを検証してから処理を続行します。 - パスワードを必須にするか、TLS をデフォルトで有効にする — TLS を有効にした状態で出荷し、初回実行時に証明書を自動生成するか、パスワードを設定するオプションを用意します。
- 転送承認プロンプトを追加する — 受信したファイルをディスクに書き込む前に、ユーザーに確認を求めます。
- 認証を実装する — 転送を受け入れる前に、ペアリングメカニズム(共有シークレット、QR コード、または証明書交換)を必須にします。
開示経緯
- 2026年4月13日 - Github リポジトリに公開された電子メールで開発者に連絡しました。返答なし。
- 2026年4月19日 - 2回目の試み。返答なし。
- 2026年5月3日 - 3回目の試み。返答なし。
- 2026年7月22日 - NotCVE-2026-0009 が割り当てられました
- 2026年7月28日 - CVE-2026-66050 が割り当てられました