Eio WP Expansion v1.2.8 アップデート情報
セキュリティ上の問題を6点修正しました。二要素認証またはSVGアップロードを使っているサイトは、早めの更新をおすすめします。
セキュリティ修正
二要素認証を飛ばしてログインできる問題
二段階目のコード入力を求める処理を、WordPressが認証Cookieを発行した後のタイミングで行っていました。打ち消し処理は入れていたものの、発行済みのCookieはレスポンスに残るため、パスワードを知っている相手がそれを取り出せば、コードを入力せずに管理画面へ入れる状態でした。
認証Cookieが作られる前の段階で止めるように変更しました。二段階目を突破するまでCookie自体が発行されません。
XML-RPC・REST API経由で二要素認証が求められない問題
上記の処理はブラウザからのログインだけを見ており、XML-RPCやREST API(アプリケーションパスワード)経由の認証では二要素認証が要求されませんでした。
これらの経路ではコード入力画面を出せないため、二要素認証が有効なアカウントは認証自体を拒否するようにしました。該当する場合はブラウザからログインしてください。
SVGの安全確認を回避できる問題
アップロードされたファイルがSVGかどうかを、ブラウザが申告した種別で判定していました。この値は送信側で自由に変えられるため、SVGファイルを「JPEG画像」と偽って送ると、スクリプトの検出も危険なタグの除去もすべて素通りしていました。
ファイル名の拡張子で判定するように変更し、あわせて次の2点も塞ぎました。
- 安全確認を通っていないファイルが、拡張子だけでSVGとして登録されてしまう経路
- 記事インポートなど、メディアライブラリ以外からの取り込み経路
SVG内のスクリプトリンクが残る場合があった問題
SVGの中のリンク先から javascript: を取り除く処理に漏れがあり、次の2つの書き方では除去できていませんでした。
- 属性名の書き方を変えた場合(
xlink:hrefではなくxl:hrefなど) - リンク先の途中に改行やタブを混ぜた場合
リンク先の判定方法を見直し、通常のURL・ページ内リンク・画像データ以外はすべて取り除くようにしました。
投稿の並び替えで他の人の投稿を操作できる問題
並び替え機能の権限確認が大まかで、寄稿者権限のユーザーが他の人の投稿の表示順を書き換えられる状態でした。投稿ごとに編集権限を確認するようにしました。
ライセンス認証の権限確認を追加
ライセンスキーの登録・解除の処理に、管理者権限の確認を追加しました。
動作環境
- PHP: 8.0 〜 8.3
- WordPress: 6.0 以上
アップデート方法
WordPress管理画面の「プラグイン」→「更新」からアップデートできます。ライセンスが有効なサイトでは自動更新通知が届きます。