Skip to content

release-1.2.4J

Latest

Choose a tag to compare

@github-actions github-actions released this 26 Oct 16:20
· 1460 commits to main since this release
e6672e7

1.2.4J(セキュリティ修正版)

セキュリティの問題と、PHP 8 などでの不具合を直したリリースです。すべてのバージョンのサイトで、1.2.4J へのアップデートをお願いします。

今回直した問題には、インターネット上の誰でも、管理画面のアカウントを持っていなくても、外部からサイトを攻撃できるものが含まれます。次に当てはまるサイトでは、データベースのパスワードを盗まれる、会員や管理画面のアカウントを乗っ取られる、といった被害につながるおそれがあります。できるだけ早く更新してください。

  • install/ フォルダが残っているサイト(install/ は、インストール・アップデートが済んだら削除してください)
  • WebLogin(会員ログイン)で、パスワードの再設定を使えるようにしているサイト
  • 管理画面のパスワード再設定(fmp プラグイン)を有効にしているサイト

修正内容

誰でも外部から攻撃できる問題(重大)

  • インストーラー: install/ が残ったサイトで、ログインせずにインストーラーの画面と接続の確認に入れ、データベースの接続情報を読み出せた問題を直しました。インストール済みのサイトでは、インストーラーは必ず管理画面のログインを求めます。(GHSA-gmhv-6mpx-4gj6)
  • WebLogin のパスワード再設定: 再設定のメールが、登録と異なるアドレスへ送られることがあった問題を直しました。メールは登録されたアドレスにだけ送ります。(GHSA-27mv-fjjh-c3m7)
  • WebLogin のログイン失敗のロック: 失敗が続くと、期限を過ぎてもロックされたままになっていた問題を直しました。(GHSA-fhm6-wgmj-pp9p)
  • 管理画面のパスワード再設定(fmp プラグイン): 再設定のトークンを推測されにくくし、照合の値を安全化しました。再設定のリンクで、リンクの対象でない利用者としてログインできた問題、有効期限の判定がタイムゾーンでずれる問題も直しました。(GHSA-p6m2-6hg7-hhf9)
  • WebLogin のログイン後の戻り先: 戻り先を自サイトの URL に限りました。
  • Ditto の request 拡張(&extenders=request): URL から変えられるパラメータを、表示まわり(表示件数・ページ送りなど)に限りました。
  • eForm: ブラウザに返すページ(再表示・エラー・完了ページ)で、入力値をエスケープして出すようにしました。

管理画面にログインしたまま、細工されたリンクを開くと被害が出る問題

  • 外部サイトからの操作の要求: 削除などの状態を変える操作へのリンクを、外部のサイトから開かれたと判断できるときは拒否するようにしました。(GHSA-ch5g-xhh4-7m28)
  • URL の値の SQL への組み込み: リソースツリー、テンプレートの編集、リソースの移動で、URL の値を安全化してから使うようにしました。(GHSA-4w88-rcxh-4vc6)
  • URL やフォームの値の出力: リソースの選択画面・リソースツリー・一覧のページ送り・ユーザー編集・検索などで、画面に戻す値をエスケープするようにしました。(GHSA-xvmf-qvh8-qx9j、GHSA-8j39-xgj9-q39h)
  • 管理画面のログインのブロック: 解除日のないブロックがログインの試行で解除されていた問題などを直し、ブロック・失敗ロックの扱いを 1.3 系にそろえました。

PHP 8 での不具合

  • グローバル設定の「ファイル管理」タブを開くと、型エラーで表示が止まることがあった問題を直しました(#937)
  • eForm の問い合わせメールの送信が止まることがあった問題を直しました(#938)

古い版からのアップデート

  • 1.0.25J などの古い版からファイルを置き換えた直後、DB の更新前に管理画面へログインできず、アップデートへ進めなかった問題を直しました(#873)
  • アップデートの最終画面で「アップデート」を押すと、サーバーの設定によっては最初の画面に戻ってしまう問題を直しました(#875)

アップデートの手順は、どのバージョンからでも通常と同じです(アップデート方法:全ファイルを上書きし、/install/ でアップデートを実行。終わったら /install/ は削除してください)。

アップグレード時の注意

  • WebLogin で、更新前の動きでロックされたままの Web ユーザーは、更新しても自動では戻りません。管理画面の Web ユーザーの編集でブロックを解除してください。管理画面のユーザーで解除日のないブロックが残っている場合も同じです。
  • WebLogin の失敗ロックは、システム設定の「ブロックする時間(分)」が 0 のときは掛かりません(設定どおり)。
  • Ditto の request 拡張で、URL から親・抽出の条件・並べ替え・テンプレート(tpl など)を変えていたサイト: 更新後は変わらなくなります。引き続き使う場合は、Ditto の &good に使うパラメータ名を書いてください。並べ替えの列(sortBy)を &good に足すときは、公開してよい列だけで使ってください。
  • eForm: フォームの項目名に validationmessage・debug・disclaimer は使えません(値を取り込みません)。
  • WebLogin のログイン後の戻り先に、ほかのサイトの URL を指定していた場合は、ログイン後の既定のページへ戻ります。
  • 管理画面で状態を変える操作のリンクを、ほかのサイトやブックマーク以外の外部のページから開くと、拒否されることがあります。管理画面の中から操作してください。
  • install/ を残したまま運用しているサイトでは、更新後にインストーラーを開くと管理画面のログインを求められます。インストールやアップデートが済んだら install/ は削除してください。

1.2 系の今後について

1.2 系は、外部から攻撃される重大なセキュリティの問題に限って更新しています。管理画面にログインできる利用者が関わる問題の中には、1.3 系だけで直しているものがあります。1.3 系への移行をおすすめします。 PHP 8 への対応も 1.3 系で進めています。

1.3 系(main ブランチ)をお使いの場合

1.3 系の配布リリースはまだありませんが、main ブランチから直接運用している場合も、同じ問題への対策は main に取り込み済みです。最新の main に更新してください。

Full Changelog: release-1.2.3J...release-1.2.4J