セキュリティ
ワンクリックで入るNextcloudアプリは、誰も知らされないまま5週間バックドアを置かれ続けた。無効化では止まらない
CVE-2026-110447は、Collaboraの内蔵CODEアプリを通じて、認証なしのリクエスト一つでNextcloudサーバー上でコマンドを実行させる。修正は9月11日にセキュリティの記載なしで出荷され、ログに残る最初の攻撃は9月10日、アドバイザリの公開は10月14日だった。
MAI
Collaboraは10月14日、CVE-2026-110447のセキュリティアドバイザリを公開した。Nextcloudのアプリストアに「Collabora Online – Built-in CODE Server」として並ぶアプリ、richdocumentscodeにおける、認証不要のOSコマンドインジェクションである。CVSS v4の基本値は9.2、分類はCWE-78。認証情報を持たないリモートリクエストが、Webサーバーの実行ユーザー権限でコマンドを走らせる。26.4.303より前のすべてのバージョンが影響を受ける。
日付がこの話の中心だ。修正は9月9日にマージされた。管理者たちがログの中から見つけた最初の攻撃リクエストは9月10日に届いている。26.4.303は9月11日にリリースされたが、リリースノートはセキュリティについて何も触れていない。アドバイザリが出たのは10月14日だった。5週間にわたり、この欠陥は修正済みでありながら悪用されている状態に置かれ、穴を閉じたのは、たまたま更新していた管理者だけだった。
影響範囲
| コンポーネント | 影響 | 状況 |
|---|---|---|
richdocumentscode — Built-in CODE Server | 26.4.303より前のすべて | 26.4.303で修正 |
richdocuments — Nextcloud Office(内蔵サーバーなし) | なし | — |
| 単体構成のCollabora Onlineサーバー | なし | — |
修正版はNextcloud 30以降を要求する。報告者はGitHubユーザーのwwwshellcodeit、アドバイザリの公開はCollaboraのCaolán McNamaraによる。
アプリを無効にしても緩和にはならない
アドバイザリはこの点をはっきり書いている。
問題を避けるにはアプリを無効にするだけでは不十分であり、26.4.303以上へのアップグレードか、削除が必要である。
脆弱な入口はproxy.phpというPHPスクリプトで、これはアプリ自身のディレクトリに置かれ、Webサーバーから直接配信される。アプリが有効かどうかというNextcloud側の管理情報は、その判断に一切関与しない。「任意アプリの重大な欠陥」と読んで無効化ボタンを押し、先へ進んだ管理者は、いまも露出したままだ。
アドバイザリのもう一つの条件も同じだけ注意に値する。攻撃が成立するのは、内蔵のCODEサーバーが動いていない時間帯 — コンテナの再起動後、アップグレード中、あるいはクラッシュ後 — である。通常の直感では、攻撃されるにはサービスが動いている必要がある。ここでは平常の保守再起動が入口になる。つまり露出は断続的で、確かめようとする者の手元では再現しない。
実際に刺さるのは誰か
CODEはCollabora Online Development Editionの略で、Collaboraが本番用ではなく評価や小規模導入向けに提供している無償ビルドだ。アドバイザリのスレッドで、CollaboraのMichael Meeksは「これはDevelopment Editionにのみ影響する」と答えている。これは正確であり、同時に露出を小さく見せている。
内蔵CODEサーバーが存在するのは、別立ての文書サーバーを用意するのが手間だからだ。Nextcloudのアプリストアでワンクリックで入る選択肢であり、したがって運用担当のいない環境にこそ載っている。小さな非営利団体、学校、部門のファイル共有、自宅サーバーである。そうした環境は同時に、Nextcloud 30を動かしている可能性が最も低い。Nextcloud 29以前 — すでにサポート終了 — では、インストールできる修正版のアプリがそもそも存在しない。公式の答えはプラットフォーム全体をアップグレードするか、アプリを削除するかだ。Nextcloudのメジャーアップグレードを静かな週末まで待っていた管理者は、その時まで、現に悪用されているリモートコード実行の欠陥を抱えることになる。
修正版より上の経路もきれいではない。9月24日にリリースされた26.4.402は、一部の環境でCODEサーバーが起動しない、または文書が開けないという報告があり、管理者は26.4.303へ戻している。標準的な指示は「最新版に上げる」だが、ここでの正しい指示は、特定のバージョンに上げてそこで止めることだ。
取るべき対応
richdocumentscodeを26.4.303以降にアップグレードするか、アプリを削除する。無効化では足りない。
9月10日以降のどこかの時点で、このアプリが26.4.303未満のままインターネットから到達可能だったのなら、見逃されたと仮定するのではなく、侵害された可能性があるものとして扱う。アドバイザリのスレッドで攻撃を報告した管理者は、アプリのディレクトリにshx*.phpに合致する名前のWebシェルが残されているのを見つけている。存在を確認し、あれば削除する。Webサーバーのアクセスログを9月10日以降までさかのぼり、当該アプリのプロキシエンドポイントへのリクエストを確認する。検索すべき具体的なリクエストの特徴は、Collaboraのアドバイザリと公開されている解説記事に載っている。最後に、Webサーバーの実行アカウントが読めたもの — 設定ファイルや保存された文書を含む — はすべて露出した可能性があるものとして扱う。これまでに報告された事例はrootには達していない。被害の上限は定まるが、被害がなくなるわけではない。
上流で直すべき部分
CVE-2026-110447は、同じプロキシにおけるCVE-2025-66208とは別のコードパスであり、アドバイザリは以前の修正ではこれを防げないと明記している。同じ小さなスクリプトに対する認証不要のコマンドインジェクションのアドバイザリが約1年のうちに2本出たということは、その中の1行についてではなく、そのコンポーネントの設計についての言明である。
公表の遅れがもう半分だ。静かに出した修正が、攻撃者が気づく前に管理者がパッチを当てる時間を稼ぐ、という慣行は、攻撃者がまだ気づいていないことを前提にしている。今回、彼らはリリースの前日にすでに入っていた。そうなった時点で、静かなパッチは時間を稼がない。防御側が必要としていた唯一の情報を伏せるだけだ。
Sources: Collabora Online advisory GHSA-g3vx-3m76-fghh, The Hacker News, BleepingComputer, IT-Connect, CVE-2026-110447 record