WordPress Plugin Vulnerability Opens Door to SQL Injection Exploits
2025/03/24 gbhackers — 人気の WordPress プラグイン GamiPress に発見された、深刻な脆弱性が悪用されると、未認証の脅威アクターによる SQL インジェクション攻撃にいたる可能性がある。この脆弱性 CVE-2024-13496 (CVSS3.1:7.5) の悪用の可能性が懸念されている。
GamiPress バージョン 7.2.1 のセキュリティ評価中に、この CVE-2024-13496 は発見されたという。この脆弱性が影響を及ぼす範囲は、バージョン 7.3.1 以下となり、すべてのユーザーにとって必要なことは、最新の安全なリリースへの更新となる。

初期分析
Abrahack のレポートによると、この脆弱性が特定された場所は、未認証でのアクセスを許可する wp_ajax_nopriv_{$action} フックである。
具体的に言うと、ユーザー・インタラクションのログを取得し、いくつかのパラメータを受け入れる gamipress_get_logs AJAX エンドポイントに、欠陥が存在することが判明した。つまり、それらのパラメータにより、データベース・クエリに影響が与えられる可能性が生じている。
このコンテキストでは、gamipress_ajax_get_logs 関数が重要となる。この関数は、$_REQUEST 配列を使用し、それが gamipress_logs_shortcode 関数に渡される。続いて、この関数は、gamipress_logs_shortcode_query 関数を使用して、CT_Query クラス経由でデータベースをクエリする。
function gamipress_ajax_get_logs() {
// Security check
check_ajax_referer( 'gamipress', 'nonce' );
// Set current page
if( isset( $_REQUEST['page'] ) && absint( $_REQUEST['page'] ) > 1 ) {
set_query_var( 'paged', absint( $_REQUEST['page'] ) );
}
$atts = $_REQUEST;
// Sanitize
foreach( $atts as $attr => $value ) {
$atts[$attr] = sanitize_text_field( $value );
}
// Send successful response
wp_send_json_success( gamipress_do_shortcode( 'gamipress_logs', $atts ) );
}
この脆弱性を標的とする攻撃者は、安全が確保されない方法で SQL クエリに渡される、orderby HTTP リクエスト・パラメータの悪用を試行する。
セキュリティ・レイヤーとして、空白の削除や、一重引用符と二重引用符の禁止などの制限があるが、攻撃者はペイロードを慎重に作成することで、この欠陥を悪用できる。
このエクスプロイトのデモンストレーションでは、ブール値の時間ベースの SQLi ペイロードが使用されている。このタイプのペイロードを悪用する攻撃者は、データをダイレクトに抽出せずに、データベースに関する情報を推測できる。
すでにベンダーは、orderby パラメータにホワイトリスト方式を実装するバージョン 7.3.2 のリリースで、この脆弱性に対処している。
この防御策により、gamipress_logs テーブル内で定義されたカラム値のみが使用可能となるため、SQL インジェクション攻撃に効果的に対処できる。
この脆弱性が浮き彫りにするのは、特に WordPress プラグインで、ユーザー入力が安全に処理されることの重要性である。
潜在的な SQL インジェクション攻撃から保護するために、ユーザーに対して強く推奨されるのは、GamiPress のバージョン 7.3.2 以降へと、速やかに更新することだ。
ゲーミフィケーション・プラグインである GamiPress の脆弱性が FIX とのことです。この脆弱性の存在が、ユーザーからの報告ではなく、開発者側のセキュリティ評価中に発見されたのは、素晴らしいことだと思います。GamiPress をご利用のチームは、アップデートをご確認ください。よろしければ、WordPress で検索も、ご利用ください。
You must be logged in to post a comment.