SAPは2026年11月10日のセキュリティパッチデーで、新規のセキュリティノート35件、既存ノートの更新3件、GitHubのセキュリティ勧告4件を公表しました。Criticalは9件あり、そのうち5件はICM・Web Dispatcher・Gatewayといったカーネル部品の脆弱性です。この記事では、SAP Basis担当者向けにカーネルリリースを対象CVEと照合する手順とスクリプトを示し、SAML2の認証迂回、BTPで使うSAP Cloud SDK for Pythonの更新までを整理します。内容は2026年11月12日時点の公開情報にもとづきます。
まとめ:カーネル更新を最優先にし、SAML2とCloud SDKを同じ週に片付ける
11月分は、カーネルを入れ替えれば重大9件のうち5件がまとめて塞がる月です。ICMとWeb DispatcherのCVSS 10.0の2件は認証なしでコードを実行される種類なので、インターネットに面したWeb DispatcherとICMを持つシステムから今週中にカーネルを更新してください。
ABAP側では、SAML2のサービスプロバイダー機能の認証迂回(CVE-2026-120017)がCVSS 10.0です。SAP_BASIS 702〜922と対象が広いため、SAML2でログインさせているシステムはノートを先に当てます。BTPのPythonアプリはSAP Cloud SDK for Pythonを0.63.1以上へ上げれば、10月と11月の勧告がすべて修正済みになるため、両月分への対応が可能です。カーネルとノートの適用計画を自社だけで組めない場合は、SAPコンサルティング・導入支援サービスで構成の棚卸しから相談できます。
2026年11月のSAPパッチデーで公表された42件の内訳と重大9件
まず公表ページの事実を並べ、どの部品に修正が集まったかを確かめます。
新規35件・更新3件・GitHub勧告4件のうちCriticalの9件一覧
SAP Security Patch Day(2026年11月)には、新規35件、更新3件、GitHubのセキュリティ勧告4件が載っています。Critical(Hot News)の9件は次のとおりです。
| ノート | CVE | 製品・機能 | 種別 | CVSS |
|---|---|---|---|---|
| 3778530 | CVE-2026-76964 | NetWeaver AS ABAP(ICM) | メモリ破損 | 10.0 |
| 3778556 | CVE-2026-89126 | Web Dispatcher | メモリ破損 | 10.0 |
| 3798345 | CVE-2026-89103 | Gateway | アクセス制御の不備 | 10.0 |
| 3849308 | CVE-2026-120017 | AS ABAP(SAML2 SP) | 認証の欠如 | 10.0 |
| 3809153 | CVE-2026-109803 | NetWeaver KM(XML Forms) | コードインジェクション | 9.9 |
| 3792735 | CVE-2026-76965 | ABAPアプリケーションサーバー | OSコマンド実行 | 9.9 |
| 3834842 | CVE-2026-109795 | S4CRM | 認可チェック漏れ | 9.9 |
| 3804858 | CVE-2026-89119 | Web Dispatcher・ICM | CSRF | 9.6 |
| 3799117 | CVE-2026-109798 | BusinessObjects BI(WebI) | XXE | 9.1 |
3804858にはCVE-2026-120014も含まれます。10月分は新規16件・Critical 4件で、中心はSAP Cloud SDKでした(SAPセキュリティパッチデー2026年10月の対応手順)。11月は新規ノートもCriticalも2倍を超えています。
重大9件のうち5件がカーネル部品に集中した11月の更新対象の特徴
ICM(CVE-2026-76964)、Web Dispatcher(CVE-2026-89126)、Gateway(CVE-2026-89103)、OSコマンド実行(CVE-2026-76965)、CSRF(CVE-2026-89119)の5件は、対象版の欄がKERNEL・KRNL64UC・WEBDISPのリリースで書かれています。どれもABAPのノートを当てる種類ではなく、カーネルの実行ファイルを入れ替えて直すものです。
CVE-2026-76964のレコードは、認証のない攻撃者が細工した通信でメモリ破損を起こし、任意のコードを実行できると書いています。Web Dispatcherの89126も同じ文面です。逆に言えば、カーネル更新を1回済ませるだけで5件が片付きます。High側にもMessage Server(7.5)やInternet Graphics Service(8.2)のメモリ破損が並んでおり、同じ更新でまとめて対処できる範囲です。
カーネル系5件の対象判定:sapcontrolでリリースを集めて照合する手順
判定に要るのは、各インスタンスが動かしているカーネルのリリース番号です。
sapcontrolで全インスタンスのカーネルリリースを集める3つのコマンド
SAPのヘルプStarting and Stopping SAP Systems Using SAPControlは、sapcontrolでインスタンスとプロセスを確かめる方法を載せています。SAPホストエージェントの入ったホストで、インスタンス番号を指定して実行します。
# システム内のインスタンス一覧(ホスト名・インスタンス番号・機能)
/usr/sap/hostctrl/exe/sapcontrol -nr 00 -function GetSystemInstanceList
# 各インスタンスのプロセスが動いているか
/usr/sap/hostctrl/exe/sapcontrol -nr 00 -function GetProcessList
# 実行ファイルの版(カーネルのリリースとパッチ番号)
/usr/sap/hostctrl/exe/sapcontrol -nr 00 -function GetVersionInfo
# 使える関数の一覧
/usr/sap/hostctrl/exe/sapcontrol --help
1つ目でシステム内のインスタンスを洗い出し、3つ目をインスタンスごとに流してリリースを控えます。別ホストのインスタンスは-hostと-userを付けて呼べます。Web Dispatcherを単独で立てている場合は、ABAPのシステム一覧に出てこないので、別に数えてください。
収集したリリースと対象CVEを突き合わせる照合スクリプトと実行結果
集めたリリースを「SID 種別 リリース」の形でテキストに並べ、公表ページの対象版と突き合わせます。標準ライブラリだけで動くPythonです。
import sys
# 2026年11月のSAP公表ページに載った対象リリース(カーネル側のCritical 5件)
AFFECTED = {
"CVE-2026-76964 ICM 10.0": {"KERNEL": {"7.53", "7.54", "7.77", "7.93", "9.16", "9.18", "9.20"}},
"CVE-2026-89126 Web Dispatcher 10.0": {
"KERNEL": {"7.53", "7.54", "7.77", "7.93", "9.16", "9.18", "9.20"},
"WEBDISP": {"7.53", "7.54", "7.77", "7.93", "9.16"},
},
"CVE-2026-89103 Gateway 10.0": {"KERNEL": {"7.22", "7.53", "7.54", "7.77", "7.93", "8.04", "9.16", "9.20", "9.21"}},
"CVE-2026-76965 OS command 9.9": {"KERNEL": {"7.22", "7.53", "7.54", "7.77", "7.93", "9.16"}},
"CVE-2026-89119 CSRF 9.6": {"KERNEL": {"7.93", "9.16", "9.20", "9.21"}, "WEBDISP": {"7.93", "9.16"}},
}
# 入力:1行に「SID 種別(KERNEL/WEBDISP) リリース」。例:PRD KERNEL 7.93
for line in sys.stdin:
if not line.strip() or line.startswith("#"):
continue
sid, kind, rel = line.split()
hits = [cve for cve, comp in AFFECTED.items() if rel in comp.get(kind.upper(), set())]
print(f"{sid:5} {kind:8} {rel:5} -> {len(hits)}件", *hits, sep="\n " if hits else " ")
2026年11月12日に、7.93・9.21・7.22・9.18のカーネルとWeb Dispatcher 9.16の5行を流しました。7.93は5件すべてに該当し、9.21はGatewayとCSRFの2件、9.18はICMとWeb Dispatcherの2件に分かれます。9.21がICMの対象版に無いなど、新しいリリースでも全件が外れるわけではありません。
対象リリースが一致しても安全かはノートのパッチ番号で決まる理由
公表ページの対象版はリリース単位でしか書かれていません。7.93も9.16も保守中のリリースそのものなので、照合で「該当」と出たら、それは修正済みのパッチ番号まで上げたかを確かめる対象という意味です。
修正が入ったパッチ番号はノート本文に書かれており、閲覧にはSAP for Meのログインが要ります。更新が必要なのは、GetVersionInfoで控えたパッチ番号をノートの番号と比べて、修正版の番号を下回るインスタンスだけです。カーネルの入れ替え手順そのものはSAP Basisの運用保守とカーネル適用の手順で解説しています。
Gateway・SAML2・ABAP側の重大4件を塞ぐ判断と当面の手当て
カーネル以外のCriticalは、設定の見直しやノート適用で直します。
Gatewayの既定ACLに頼る構成とsecinfo・reginfoの確認手順
CVE-2026-89103の説明文は、Gatewayが高い権限の既定ACLを有効にし、外部の攻撃者を内部のアプリケーションサーバーと見なしてしまうと書いています。SAPヘルプのGatewayのセキュリティパラメータでは、secinfoやreginfoのファイルが無いときの動きをgw/acl_modeが決め、既定値1は「同じシステムのアプリケーションサーバーだけを許可する」設定です。
2つの記述を合わせると、secinfoとreginfoを置かずに既定ACLへ任せているGatewayが影響の中心だと推定できます(ノート本文での確認は未了です)。カーネル更新までの間は、データディレクトリにsecinfo・reginfoがあるか、許可する外部プログラムを明示しているかを確かめ、Gatewayのポートを外部から届かない位置に置いてください。
SAML2のSP機能を有効にしたABAPで起きる認証の迂回と対象範囲
CVE-2026-120017は、特定の構成でSAMLのアサーションを十分に検証せず、認証なしで任意のユーザーになりすませる脆弱性です。CWEは署名の検証不備(CWE-347)で、管理者アカウントも対象に含まれます。SAP_BASIS 702から922までの16リリースが並んでおり、保守中のABAPはほぼすべて対象と見てよい範囲です。
影響が出るのは、ABAPをSAML 2.0のサービスプロバイダーとして構成し、IdPからのログインを受け付けているシステムです。SSOをSAMLで組んでいるなら、ノート3849308を最優先で当てます。アサーションの署名とAudienceを検証する仕組みはSAMLの認証フローとIdP・SPの仕組みで整理しています。
KM・S4CRM・BusinessObjectsの重大3件で確認する対象部品
残る3件は、使っている製品が限られます。表のWebIはWeb Intelligenceの略記で、正式な製品表記はBusinessObjects BI(Web Intelligence)です。KMのXML Forms(CVE-2026-109803)はJavaのKMC-CM 7.50、S4CRM(CVE-2026-109795)はS4CRM 204〜206・S4CEXT 107〜109・BBPCRM 713と714、BusinessObjects(CVE-2026-109798)はENTERPRISE 430・2025・2027です。
3件とも攻撃には低い権限のログインが要ります。ただし内部の利用者アカウントが乗っ取られれば足りる条件なので、入口が社内だけであっても適用期限は月内です。なおS4CRMの件は、SAPの一覧とCVEの説明文(「SAP NetWeaver」のリモート対応機能)とで製品の書き方が食い違っています。対象の判定はSAPの一覧にあるコンポーネントで行ってください。
SAP Cloud SDK for Pythonの勧告対応:0.63.1以上へ
GitHub勧告4件のうち2件は、10月にも勧告が出たSAP Cloud SDK for Pythonです。11月の2件と10月分の積み残しを、導入済みの版と照合します。
IASContextProviderのJWT署名未検証でなりすませる情報の範囲
GHSA-93m8-crj2-v997(CVE-2026-109799・CVSS 7.5)によれば、bootstrap(app)で既定登録されるIASContextProviderが、AuthorizationヘッダーのJWTから署名を検証せずにテナントIDとユーザーIDを取り出していました。攻撃者は自分で署名したJWTに別テナントの値を書くだけで、その名義になれます。
偽の名義はOpenTelemetryのスパン、ログ、監査イベント(AuditClient)、テナントの振り分け(CBCClient)へ伝わります。監査ログの記録者が書き換わる点が厄介です。修正版のv0.63.1は、JWKSで署名を確かめてから値を使い、検証できなければ空のコンテキストを返します。JWTの署名検証の仕組みはJWTの構造と署名検証の仕組みが参考になります。
もう1件のGHSA-28c8-457r-4cf6(CVE-2026-120013・7.5)は、Agent Memoryのcreate_clientに渡すtenantに「..」を混ぜると、別テナントのOAuthクライアントIDとシークレットを読めるパストラバーサルです。v0.50.0で直っています。
10月・11月の勧告4件を導入済みの版から1回で判定するスクリプト
10月分の判定スクリプトを、11月の2件を足して置き換えます。Python 3.11以上(PyPIのsap-cloud-sdkの要件)で動きます。
import importlib.metadata as md
import re
import sys
# (この版未満が影響, CVE, 内容) を2026年10月・11月の勧告から並べる
ADVISORIES = [
((0, 45, 2), "CVE-2026-89111", "OAuth2のSSRF(10月)"),
((0, 50, 0), "CVE-2026-120013", "Agent Memoryのパストラバーサル(11月)"),
((0, 58, 3), "CVE-2026-89111関連", "トークンURL置換の追加修正(10月)"),
((0, 63, 1), "CVE-2026-109799", "IASContextProviderのJWT署名未検証(11月)"),
]
def as_tuple(ver):
return tuple(int(re.match(r"\d+", x).group()) for x in ver.split(".")[:3])
def judge(ver):
t = as_tuple(ver)
left = [f"{cve} {what}" for fixed, cve, what in ADVISORIES if t < fixed]
return f"{ver}: " + ("未修正 " + " / ".join(left) if left else "0.63.1以上(11月時点の勧告はすべて修正済み)")
if len(sys.argv) > 1:
for v in sys.argv[1:]:
print(judge(v))
else:
try:
print(judge(md.version("sap-cloud-sdk")))
except md.PackageNotFoundError:
print("sap-cloud-sdk は入っていません")
引数なしなら導入済みの版を、引数に版を並べればその版を判定します。11月12日に0.44.0から0.66.1までの7つの版を流し、0.44.0は4件すべて、0.58.3から0.63.0までは11月のJWTの1件だけが残り、0.63.1以上で0件になることを確かめました。更新は pip install -U “sap-cloud-sdk>=0.63.1” で行い、requirements.txtの下限も書き換えます。11月12日時点のPyPIの最新は0.66.1です。
pip-auditとDependabotが11月12日時点で検出しない状態の確認
10月分と同じく、11月の2件もスキャナには出てきません。11月12日にPyPIのJSON APIを引いたところ、影響版の0.63.0と0.49.0で脆弱性の登録は空でした。GitHub Advisory Database側の同じIDのページは404を返し、Dependabotのアラートも上がらない状態です。
0.63.1のPyPI公開は10月28日で、勧告の13日前でした。SDKの版を固定したまま更新を止めている環境は、修正版の存在に気づけていません。CVE-2026-109799のレコードはあっても、スキャナが0件なら安全とは言えないので、上の判定を正にしてください。更新までの間は、勧告が示すとおりSDKに届く前の入口でJWTの署名を検証します。入口での検証の組み方はAPI不正アクセス対策の実装手順にまとめています。
対応の優先順位:外部に面したICMとWeb Dispatcherを今週中に
対象が複数ある場合の順番を、条件ごとに言い切ります。
外部から届くWeb DispatcherとICMのカーネルを最初に入れ替える条件
最優先は、インターネットから届くWeb Dispatcherと、ICMで直接HTTPを受けているABAPです。CVE-2026-76964と89126は、認証なし・利用者の操作なしでコードを実行される条件がそろっています。照合で該当したら今週中にカーネルを入れ替え、間に合わない場合は前段のロードバランサーやWAFで接続元を絞ります。
SAML2でSSOを受けているABAPも同じ週に当てます。ログイン画面は外部から届く入口であることが多く、なりすましの対象に管理者が含まれるからです。
社内限定のシステムでも月内に終えるべき範囲と後回しにしてよい範囲
Gatewayの89103とOSコマンド実行の76965は、社内ネットワークだけのシステムでも月内に済ませます。Gatewayは外部プログラムとの接続口で、社内の端末1台が乗っ取られれば届く距離にあるからです。KM・S4CRM・BusinessObjectsの3件も、該当製品があれば月内に当てます。
反対に、Mediumのノートまで同じ保守時間に詰め込んで、カーネル更新が来月へずれ込むのは避けてください。カーネルを1回入れ替えれば重大5件が消える月なので、件数を揃えるより入れ替えを先に終える方が穴の開く期間は短くなります。
SAPセキュリティパッチデー2026年11月でよくある質問と回答
11月のパッチデーへの対応で出てきやすい疑問に、公開されている一次情報の範囲で答えます。
SAPセキュリティパッチデーの次回はいつ公開されますか?
SAPは毎月第2火曜日をパッチデーとしており、2026年11月は10日でした。次回の12月は8日が第2火曜日にあたります。公開後に内容が改訂されるノートもあり、11月分でも10月・7月・2022年4月に出したノートの更新3件が載っています。前に当てたノートでも、更新が載った月は版を見直してください。
カーネルを更新するとシステムを止める必要がありますか?
カーネルは実行ファイルを入れ替えたあと、インスタンスを再起動して読み込ませます。そのため停止時間の確保が必要です。複数のアプリケーションサーバーを持つ構成なら、1台ずつ入れ替えて業務を止めずに進める方法もあります。Web Dispatcherを冗長化しているなら、片側ずつ切り離して入れ替えます。
RISE with SAPやSAPのクラウド上のシステムも自社で対応しますか?
カーネルの入れ替えを誰が行うかは契約の運用分担で決まるため、まず契約書と運用分担の資料を確認してください。基盤の作業がSAP側に含まれる契約でも、アドオンの動作確認と適用日の調整は利用企業側の作業として残ります。BTP上で自社が開発したPythonアプリのSDK更新は、どの形態でも自社の作業です。
悪用は確認されていますか?公表を待たずに対応すべきですか?
11月12日時点で、SAPの公表ページとGitHubの勧告に悪用を確認したとの記載はありません。ただしCVSS 10.0の4件は、ネットワーク経由で認証なしに狙える条件です。Cloud SDKの修正差分は公開リポジトリで誰でも読めます。悪用の報告を待ってから動く理由はありません。
SAP for Meにログインできない場合は何を見れば判断できますか?
公表ページの対象コンポーネントと版、CVEの説明文は誰でも読めます。自社のカーネルとWeb Dispatcherのリリースをsapcontrolで集め、本文の照合スクリプトで該当の有無まで判断することが可能です。修正済みのパッチ番号の確認とノートの取得は、保守契約を持つ部署かパートナーに依頼します。
関連記事
- SAP BTPとは:CAPでS/4HANAの拡張を作りCloud Foundryへデプロイする手順と料金【2026年10月】:Cloud SDKを使うBTPアプリの作り方です。
- パッチ管理とは:KEVで優先度を決め、Patch Managerとapt・dnfで自動適用する手順:SAP以外も含めた更新の優先度付けです。
- CVEとCWEの違いとは?CWEの意味と、1件のCVEにCWEが付く仕組みを実例で解説:表のCVSSとCWEの読み方を整理しています。
- 脆弱性診断とは?種類・費用相場・進め方と外注時の判断基準を解説:外部から届く入口をまとめて洗い出す方法です。
- SAPの2027年問題とは?ERP保守終了の影響とS/4HANA移行・延命の判断を解説:保守が切れるとカーネルとノートの提供も止まります。