きなこめもが偽CAPTCHA(ClickFix)に改ざんされた話(CVE-2026-26980)

当Ghostブログが、CVE-2026-26980を悪用した改ざんで個別記事に偽CAPTCHAを表示する状態に。発見から原因特定、対応、再発防止までの記録です。

きなこめもが偽CAPTCHA(ClickFix)に改ざんされた話(CVE-2026-26980)

Ghostで運用している当サイトで、特定の記事にアクセスすると「Botでないことを確認する」偽のCAPTCHA画面が表示される事象が発生しました。原因はGhost CMSの脆弱性CVE-2026-26980を悪用した記事改ざんで、2026年5月以降に700サイト以上が被害に遭っている大規模アタックの一部でした。本記事は、発見から対応までの記録です。

発生した事象

2026年6月24日、ある記事にアクセスすると、記事本文に被せてCAPTCHA画面が表示される事象に気づきました。この画面は次の操作を指示してきます。

  • Win + Xを押す
  • ターミナル(またはPowerShell)を選ぶ
  • Ctrl + Vで貼り付ける
  • Enterを押す

これはClickFixと呼ばれる手口で、ページが裏でクリップボードにコマンドを書き込み、ユーザー自身にそれを実行させてマルウェアに感染させるものです。

私の利用するMacbookでまず見ることのないWindowsアイコンがあり、Ctrl+VとEnterの組み合わせが貼り付けであることを知っていたこともあり、すぐ気付くことができました。

正規のreCAPTCHAがこの種の操作を要求することはありません。この指示は絶対に実行してはいけません。

脆弱性の詳細(CVE-2026-26980)

  • 種別: GhostのContent APIにおけるSQLインジェクション
  • CVSS: 9.4(Critical)
  • 影響: 認証なしの攻撃者がデータベースから任意のデータを読み取れる
  • 修正バージョン: 6.19.1(2026年2月リリース)
  • 悪用の観測: 2026年5月7日頃から
  • 被害規模: 大学・ブロックチェーン・AI・SaaS・フィンテック等、700サイト以上
  • 攻撃主体: 少なくとも2つのグループ

修正版6.19.1が2026年2月に出た後、5月7日頃から悪用が観測され始めています。これはパッチ公開後に未適用のサイトを狙う「Nデイ攻撃」です。パッチが公開されると修正差分から元の脆弱性を逆算できるため、攻撃者にとってはむしろ手がかりが増えます。SQLインジェクションのような単純な穴は武器化も早く、この件でも複数グループがパッチ未適用のサイトを機械的にスキャンして一斉に攻撃したとみられます。修正が出たから安心ではなく、修正の適用が遅れているサイトの危険度はむしろ上がるのです。

攻撃チェーン

  1. CVE-2026-26980を悪用し、DBからAdmin API Keyを窃取。
  2. 盗んだAdmin API KeyでGhost Admin APIを叩き、記事を一括改ざん。
  3. 各記事の本文末尾に、難読化されたJavaScriptローダーを注入。
  4. ローダーが実行時に外部ドメインから本体ペイロードを取得(報告例ではclo4shara[.]xyz/11z77u3.phpなど)。
  5. 対象と判定した訪問者に対し、iframe内で偽CAPTCHAを表示。
  6. 訪問者にBase64でエンコードされたコマンドをWindowsの「ファイル名を指定して実行」へ貼り付けさせます(ClickFix)。

調査で分かったこと

  • テーマのソースコードにもGhostのCode injection(Settings → Code injection)にも、不審なスクリプトは存在しませんでした。
  • ブラウザで実際にレンダリングしたページを調べたところ、外部のfucker/api.phpへの通信を確認しました。GhostはNode.jsで動作し.phpを持たないため、これは外部の攻撃者サーバーへの呼び出しです。
  • 注入コードがソースにもCode injectionにも無かった理由は、改ざん先が記事本文(post content)そのものであり、Admin API経由で書き込まれていたためでした。これはCVE-2026-26980の攻撃チェーンと一致します。

実施した対応

  1. Ghostを6.19.1以降にアップデートし、脆弱性を塞ぎました。
  2. Admin API Key / Integrationをすべて再生成しました。窃取された前提で既存キーを失効・再発行し、管理者パスワードも変更しました。
  3. 改ざんされた記事本文を清掃しました。各記事末尾に注入された<script>(難読化文字列・外部.php呼び出し)を削除しました。
  4. 身に覚えのない管理者アカウント・Integrationが追加されていないか確認しました。

なお、当サイトは購読者情報等の第三者の個人データを保持していないため、本件による個人情報の流出はありません。

反省

私のGhostブログはセルフホスト+独自テーマで、コンテンツも全て自分の管理下にあることから、本体の更新をあまり重視していませんでした。WordPressはプラグインの互換性の都合で常に最新版に保つ必要がありますが、Ghostはシンプルなので多少バージョンが古くても大丈夫だろうと考えていたのです。

しかし今回突かれたのはテーマでもプラグインでもなく、Ghost本体(Content API)の脆弱性です。自分の管理下だろうとシンプルだろうと、セキュリティ更新は常に監視しておくべきでした。

再発防止策

Ghost本体を最新に保つ!!

参考

CVE-2026-26980 - GitHub Advisory Database
Ghost has a SQL injection in Content API
  • The Hacker News: Ghost CMS CVE-2026-26980 Exploited to Hijack 700+ Sites for ClickFix Attacks
  • BleepingComputer: Ghost CMS SQL injection flaw exploited in large-scale ClickFix campaign
  • Malwarebytes: 700+ education and tech websites hijacked in huge ClickFix malware campaign
  • SecurityWeek: Ghost CMS Vulnerability Exploited to Hack Over 700 Websites