Craft CMSに認証なしで管理者になれる脆弱性、修正版あり
Craft CMS 4系と5系に、ログインなしでデータベースを書き換えられ管理者権限を奪われる脆弱性が公表されました。4.18.9か5.11.2に更新し、管理者アカウントの不審な変更も確認してください。
急ぎ度: 至急
CVSS v3は9.8、CVSS v4は9.3で、認証なしにネットワークから管理者権限まで到達でき、修正版も出ているため、早く更新する価値が高い脆弱性です。
関係があるか
Craft CMSの4系または5系で、修正版より前の版を動かしているサイトが対象です。コーポレートサイトやキャンペーンサイトを制作会社に任せている場合も、版を確認する必要があります。
| 製品 | 影響を受ける版 | 修正版 |
|---|---|---|
| Craft CMS 4系(craftcms/cms) | 4.0.0以上、4.18.9未満 | 4.18.9 |
| Craft CMS 5系(craftcms/cms) | 5.0.0以上、5.11.2未満 | 5.11.2 |
確かめ方
- 1プロジェクトのディレクトリで
composer show craftcms/cmsを実行し、表示された版を上の表と照らします。 - 2
composer.lockに記録されたcraftcms/cmsの版でも確認できます。本番環境と検証環境で版が違うことがあるため、両方を見てください。 - 3制作や運用を外部に任せているサイトは、委託先にCraft CMSの採用有無と版を問い合わせます。
何が起きたか
Craft CMSの検索機能を受け持つエンドポイントに、SQLインジェクションの脆弱性が見つかりました。ログインしていない相手でもデータベースを読み書きでき、ユーザー情報の表を書き換えて管理者になれます。
原因は、エンドポイントが受け取った値をそのままSQL文に連結していることです。加えて、PDOが擬似プリペアドステートメントで動くため、複数のSQL文を続けて実行できてしまいます。
GitHubの勧告によると、報告者はユーザーIDが1の管理者フラグを書き換え、その値を読み戻して権限昇格を確認しました。Craftはこの1つの列だけで権限チェックを省略するため、ほかの変更は要りません。同じ手段で、任意のアカウントのパスワードハッシュも上書きできます。
攻撃の流れ
-
1
検索機能へ到達
外部の相手が、検索用エンドポイントに細工した値を送ります。
-
2
SQL文として実行
値がSQL文に連結され、複数のSQL文が続けて実行されます。
-
3
ユーザー表の改ざん
管理者フラグの設定やパスワードハッシュの上書きが行われます。
-
4
管理者として操作
管理者権限を得た相手が、サイトとデータベースを操作できる状態になります。
どう悪用されるか
ログインは不要です。エンドポイントにネットワークから届けば、利用者の操作を待たずに悪用できます。
成功すると、データベースの内容を読まれ、書き換えられます。管理者権限を握られれば、サイトの内容変更や、データベースに保存された情報の取得まで広がるおそれがあります。
今すぐやること
-
1
使用中の版を確認する
本番・検証を含むすべての環境で、Craft CMSの版が4.18.9未満(4系)または5.11.2未満(5系)かどうかを見ます。
composer show craftcms/cms -
2
修正版に更新する
4系は4.18.9以上、5系は5.11.2以上に更新します。更新前にデータベースとファイルのバックアップを取り、検証環境で表示と管理画面の動作を見てから本番に反映してください。
-
3
管理者アカウントを点検する
usersテーブルで、管理者フラグが意図しないアカウントに付いていないか、パスワードハッシュが最近書き換わっていないかを調べます。管理画面のログイン履歴にも、心当たりのない記録がないか目を通してください。GitHubの勧告は2026年10月22日付なので、そのころ以降のアクセスログも見ておくと手がかりになります。
-
4
不審な点があれば認証情報を入れ替える
改ざんの跡があれば、管理者のパスワードを変更し、既存のセッションを無効にします。サイトのコンテンツやテンプレートに見覚えのない変更がないかも確認してください。
-
5
ベンダーの告知を確認する
Craft CMSのGitHubにあるセキュリティ勧告を見て、更新手順や追加の注意事項が出ていないかを確かめます。
すぐ更新できないとき
勧告に回避策の記載はありません。更新までのつなぎとしては、WAFの導入や接続元IPの制限で、サイトの公開範囲を狭める方法があります。ただし、これは一般的な対策であり、脆弱性を塞ぐものではないので、更新を先延ばしにする理由にはなりません。
背景
Craft CMSはPHPで動くCMSで、コーポレートサイトやメディアサイトの構築に使われます。公開サイトと管理画面が同じアプリケーションにあり、問い合わせの内容や会員情報をデータベースに持たせている構成もあります。
今回の脆弱性が厄介なのは、権限の判定が管理者フラグという1つの列に頼っていることです。データベースの書き込みを許すと、権限昇格の手間がほとんど要りません。SQLインジェクションは入力を連結する書き方が原因の古い型ですが、PDOの擬似プリペアドステートメントで複数のSQL文が続けて実行できる構成だと、読み出しだけでなく書き換えにまで被害が及びます。
よくある質問
Q.Craft CMSを使っているのか、情シスでは把握できていません。どう調べますか。
composer.json があり、craftcms/cmsの記載があるかを見てください。この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。
影響パッケージ
| 種類 | パッケージ | 影響を受ける版 | 修正版 |
|---|---|---|---|
| craftcms | cms |
5.0.0 以上 5.11.2 未満 |
5.11.2 |
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
Craft CMS 4.0.0 before 4.18.9 and 5.0.0 before 5.11.2 contains an unauthenticated SQL injection vulnerability in the element search endpoint because the attribute parameter is concatenated into the query unsanitized and emulated PDO prepares allow stacked statements. Remote attackers can read and write the database, setting the admin flag or overwriting password hashes in the users table to gain administrator access.
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory
参照URL
- web github.com
- web vulncheck.com
- web nvd.nist.gov
- web github.com