Microsoft SharePoint Serverにおいて、認証された攻撃者がリモートで任意のコードを実行できる深刻な脆弱性「CVE-2026-45659」が確認されました。この脆弱性は既に悪用が確認されており、米CISA(サイバーセキュリティ・インフラセキュリティ庁)のKnown Exploited Vulnerabilities(KEV)カタログに7月1日に追加され、連邦政府機関に対して迅速な修正が義務付けられています。広く利用されているSharePoint Serverの性質上、多くの組織に影響が及ぶ可能性があり、緊急の対策が必要です。
脆弱性の概要と影響範囲
CVE-2026-45659は、Microsoft SharePoint Serverにおける「信頼できないデータの逆シリアル化(Deserialization of Untrusted Data)」に起因する脆弱性です。CVSSv3.1のスコアは8.8(HIGH)と評価されています。この脆弱性は、SharePoint Server Subscription Edition、SharePoint Server 2019、およびSharePoint Enterprise Server 2016に影響を及ぼします。攻撃者は、ネットワーク経由でこの脆弱性を悪用し、認証された状態で任意のコードを実行することが可能です。
具体的な影響・攻撃シナリオ
この脆弱性の悪用には認証が必要ですが、Microsoftによると「サイトメンバー」の最低限の権限を持つ認証済み攻撃者でも、追加の昇格された特権なしに悪用が可能とされています。攻撃者は、細工されたデータをSharePoint Serverに送信することで、サーバー上で任意のコードを実行できます。これにより、機密情報の窃取、システムの改ざん、さらには組織ネットワーク全体への侵入の足がかりとなる可能性があります。特に、CISAが既知の悪用されている脆弱性としてカタログに追加したことで、現実世界での攻撃リスクが非常に高い状態にあると認識すべきです。
エンジニアが今すぐ取るべき対策
最も重要な対策は、Microsoftが提供するセキュリティ更新プログラムを速やかに適用することです。この脆弱性に対するパッチは2026年5月にリリースされています。 SharePoint Serverを運用している組織は、利用している製品バージョンに対応する最新の更新プログラムを適用し、システムを常に最新の状態に保つよう強く推奨されます。
また、追加の防御層として、WAF(Web Application Firewall)を導入し、不正なリクエストパターンをブロックする設定を検討してください。以下に、Nginxで不審なPOSTリクエストをブロックする基本的な設定例を示します。これは一般的な防御策であり、特定の脆弱性を完全に防ぐものではないため、必ずベンダーが提供するパッチを適用してください。
location / {
# 一般的なWebshellアップロードやコマンドインジェクションパターンをブロック
# SharePointの脆弱性対策としては限定的ですが、不正なペイロードを含む可能性のあるリクエストをフィルタリングします。
# このルールは厳しすぎる場合があるため、環境に合わせて調整が必要です。
if ($request_method = POST) {
set $block_attack 0;
# 実行可能ファイル拡張子のアップロードを試みる不審なContent-Typeをブロック
if ($http_content_type ~* "application/(x-php|x-perl|x-python|x-ruby|x-sh)") {
set $block_attack 1;
}
# 実行可能なマジックバイトを含むファイルアップロードをブロック (例: PHP)
if ($request_body ~* "^<\?php" || $request_body ~* "eval\(|"shell_exec\(|"system\(|"passthru\(") {
set $block_attack 1;
}
# 信頼できないシリアル化データとして疑わしいパターン (例: Java/PHPのオブジェクトシリアライゼーションの典型的なマジックバイトやキーワード)
# SharePointは.NETですが、攻撃が他のシリアライゼーション技術を模倣する可能性も考慮
if ($request_body ~* "^rO0AB" || $request_body ~* "O:[0-9]+\":" || $request_body ~* "__destruct") {
set $block_attack 1;
}
# 特定のパスに対する異常なPOSTリクエストをブロック(必要に応じてSpecific Pathを追加)
# if ($uri ~* "/(_layouts|forms)/" && $request_body ~* "<script") {
# set $block_attack 1;
# }
if ($block_attack = 1) {
return 403;
}
}
try_files $uri $uri/ =404;
}