Releases
Posted By

WP Cerber Security 9.9.3


English version: WP Cerber Security 9.9.3


概要

バージョン9.9.3は、問題発生時に頼りになる箇所の正確性を重視して開発されました。今回のリリースでは、PHPの致命的なエラー発生時のWP Cerberの動作を修正し、アクセス制御リストにおけるIPv6範囲のマッチングを修正し、管理者通知をユーザー自身の言語で表示できるようにしました。

主なポイント

  • PHPの致命的なエラーが正しく処理されるようになりました。エラーログが有効になっていた場合、捕捉されなかったエラーによってWordPressの重大エラーページとリカバリモードのメールが送信されないことがありましたが、これを修正しました。
  • 信頼できる診断機能。リクエストを実際に終了させた致命的なエラーが、トラフィックインスペクターのログに確実に記録されるようになり、フォレンジック調査の精度が向上します。
  • IPv6 の範囲は決定論的に動作します。ダッシュ表記またはワイルドカード表記の有効な範囲は拒否されなくなり、範囲の境界は包括的に一致するようになりました。
  • 管理者通知は、お住まいの地域に合わせて表示されます。無人で実行されるバックグラウンドリクエストによって生成されたメッセージは、作成時ではなく、閲覧時に翻訳されるようになりました。

セキュリティの変更点

ACLにおけるIPv6アドレス範囲のマッチングが修正されました。以前は、範囲パーサーがIPv6アドレスの下位チャンクを比較していましたが、先頭チャンクが既に正しい順序になっている場合でも、下位チャンクが比較されていました。そのため、アクセス制御リストのエントリを追加したり、アクティビティおよびトラフィックログビューアでレコードをフィルタリングしたりする際に、ダッシュやワイルドカード表記で指定された有効なIPv6アドレス範囲が拒否されることがありました。今回の修正により、パーサーは両方の境界が同じ先頭チャンクを共有する場合にのみ残りのチャンクを比較するようになり、逆順の範囲や長さがゼロの範囲は引き続き拒否されます。これにより、ACLは有効な範囲をすべて受け入れるようになりました。

IPv6アドレス範囲の境界が、範囲全体を含むようになりました。境界比較を修正し、IPv6範囲の最初と最後のアドレスも範囲の一部として扱われるようにしました。これにより、範囲全体(境界アドレスを含む)におけるアクセス判定が確定的になりました。

管理者エクスペリエンス

メール送信エラーメッセージは、レンダリング時に翻訳されるようになりました。英語以外のウェブサイトでは、メール送信失敗に関する通知が、送信に失敗したリクエストのロケール(通常は、スケジュールされたレポートや訪問者によってトリガーされるアラートなど、無人リクエスト)で表示されていました。このメッセージは、表示される時点で管理者のロケールに合わせて修正されるようになりました。

設定復旧メッセージが正しくローカライズされるようになりました。以前は、英語以外のウェブサイトでプラグインの設定が破損した場合、復旧レポートが翻訳されずに管理者に表示されていました。私たちもこの状況に満足していませんでした。現在は、メッセージが表示される際に、閲覧する管理者のロケールに合わせてメッセージが再構築され、翻訳されるようになりました。

準備状況ウィジェットのメッセージに適切な国際化対応(i18n)が実装されました。ウィジェット内のいくつかのメッセージにはローカライズが欠落しており、翻訳できませんでした。この問題は解消されました。

信頼性の向上

頻繁に実行される処理におけるデータベース層の高速化を実現しました。クエリビルダーにおける識別子検証のオーバーヘッドを削減するため、正規表現に基づくチェックを軽量な文字スキャンに置き換えました。これにより、頻繁に実行されるデータベース操作の効率が向上し、既存の検証ルールとクエリ動作は完全に維持されます。

報告された問題の処理がよりスマートになりました。管理者向け問題通知を支えるレジストリは、問題が表示される直前に各問題を再評価し、解決済みであれば更新または完全に削除できるようになりました。重要な点として、障害発生時の処理を最初に設計しました。この段階でエラーが発生しても、問題が隠蔽されることはありません。

互換性テスト。このリリースは、PHP 7.4.33、8.0.30、8.1.34、8.2.33、8.3.33、8.4.24、および 8.5.9、ならびに WordPress 5.8.14、6.6.6、6.7.6、6.8.7、6.9.6、および 7.0.3 でテストされました。

バグ修正

捕捉されなかった致命的なエラーが WordPress のリカバリをバイパスしなくなりました。これは今回のリリースで最も重要な修正です。エラーログが有効になっているときに、未処理の例外、型エラー、構文エラーなどの捕捉されない Throwable が発生すると、ハンドラが通常の PHP 致命的エラー処理を終了していました。そのため、WordPress が重大なエラーページを表示したり、リカバリモードのメールを送信したり、組み込みのプラグインまたはテーマエディタで行われた破損した PHP 編集を元に戻したりすることができなくなる可能性がありました。WP_DEBUG_LOG WP_DEBUG_LOG有効になっている場合、影響を受けるエラーが debug.log に記録されない可能性もありました。致命的でない PHP エラーは、このバグの影響を受けませんでした。

致命的なエラーが確実にトラフィックインスペクターのログに記録されるようになりました。以前はすべてのPHPエラーがログに記録されていたわけではありませんでした。弊社独自のシャットダウンルーチンは、追加の診断情報を生成する可能性のあるデータベースおよびネットワーク操作を実行します。PHPは最後のエラーを1つしか保持しないため、後から発生した警告がリクエストを終了させた致命的なエラーを上書きしてしまう可能性がありました。そこで、シャットダウンコールバックの開始時に最後のエラーのスナップショットを作成するようにしました。これにより、弊社独自の管理処理によって上書きされることはなくなりました。ただし、透明性の観点から、弊社より前に他のコードによって登録されたシャットダウンコールバックは、弊社が実行する前に最後のエラーを変更する可能性があります。

クイックナビゲーションでPHPの警告が表示されなくなりました。以前は、クイックナビゲーションブロック内で複数値のクエリパラメータがスカラー文字列比較に到達すると、 Array to string conversion警告が発生する可能性がありました。PHPのエラー設定によっては、これらの警告がログに記録されたり、管理画面の出力に表示されたり、AJAXレスポンスが破損したりする可能性がありました。

結論

バージョン9.9.3では、障害の発生を予測しやすく、診断の信頼性が向上しました。致命的なエラーはWordPressの復旧ツールとログの両方に記録されるため、正確なデータに基づいてトリアージを開始できます。ACLとログフィルタでIPv6範囲が正しく機能します。管理者通知は、ユーザーが指定した言語で、指定した場所とタイミングで表示されます。


I'm a team lead in Cerber Tech. I'm a software & database architect, WordPress - PHP - SQL - JavaScript developer. I started coding in 1993 on IBM System/370 (yeah, that was amazing days) and today software engineering at Cerber Tech is how I make my living. I've taught to have high standards for myself as well as using them in developing software solutions.

View Comments
There are currently no comments.