แจ้งเตือน พบช่องโหว่ระดับ Critical ใน SAP Cloud SDK for Python เสี่ยงข้อมูลรับรอง OAuth2 รั่วไหล - Thailand Computer Emergency Response Team (ThaiCERT)警报:SAP Cloud SDK for Python 中发现严重漏洞,可能导致 OAuth2 凭证泄露。——泰国计算机应急响应小组 (ThaiCERT)
ศูนย์ประสานการรักษาความมั่นคงปลอดภัยระบบคอมพิวเตอร์แห่ง

ศูนย์ประสานการรักษาความมั่นคงปลอดภัยระบบคอมพิวเตอร์แห่งชาติ (ThaiCERT) ได้ติดตามสถานการณ์ภัยคุกคามทางไซเบอร์ พบรายงานช่องโหว่ด้านความมั่นคงปลอดภัยใน SAP Cloud SDK for Python ที่เป็นชุดเครื่องมือสำหรับพัฒนาแอปพลิเคชันที่เชื่อมต่อบริการบน SAP Business Technology Platform (BTP) โดยช่องโหว่ดังกล่าวมีหมายเลข CVE-2026-89111 มีคะแนน CVSS v3.1: 10.0 โดยผู้โจมตีที่สามารถควบคุมค่า tenant_subdomain ซึ่งใช้ระบุองค์กรผู้ใช้งาน อาจเปลี่ยนปลายทางการร้องขอ OAuth2 Token ไปยังเซิร์ฟเวอร์ของผู้โจมตี ส่งผลให้ข้อมูลรับรองของแอปพลิเคชัน ได้แก่ Client ID และ Client Secret รั่วไหล [1]
1. รายละเอียดช่องโหว่ CVE-2026-89111 (CVSS v3.1: 10.0) [2] – Server-Side Request Forgery (SSRF) เป็นช่องโหว่จากการตรวจสอบค่า tenant_subdomain ไม่เหมาะสม ก่อนนำไปสร้าง URL สำหรับร้องขอ OAuth2 Token ในแอปพลิเคชันที่รองรับหลายองค์กรผู้ใช้งาน (Multi-tenant) ผู้โจมตีที่ควบคุมค่าดังกล่าวได้อาจทำให้ระบบส่งข้อมูลรับรองไปยังปลายทางที่ผู้โจมตีกำหนด และอาจนำข้อมูลที่ได้รับไปใช้เข้าถึงบริการตามสิทธิ์ของแอปพลิเคชันนั้น
2. ผลิตภัณฑ์ที่ได้รับผลกระทบ [3] ช่องโหว่ส่งผลกระทบต่อ SAP Cloud SDK for Python หรือแพ็กเกจ sap-cloud-sdk ในเวอร์ชันต่อไปนี้ 2.1 SAP Cloud SDK for Python ต่ำกว่า version 0.45.2 รวมถึง version 0.36.1 และ version 0.36.2 ตามขอบเขตที่ SAP ระบุ 2.2 SAP Cloud SDK for Python ตั้งแต่ version 0.53.0 ถึง 0.55.0 ควรตรวจสอบและอัปเดตเพิ่มเติม เนื่องจากพบว่าขาดการตรวจสอบค่า tenant_subdomain เมื่อเรียกใช้ Destination service และพบปัญหาลักษณะเดียวกันกับ Document Management Service ใน version 0.55.0
ทั้งนี้ SAP ยังไม่ได้ระบุในประกาศว่า version 0.53.0–0.55.0 อยู่ภายใต้ CVE เดียวกัน อย่างไรก็ตาม Release Notes ของ version 0.55.1 ระบุการเพิ่มการตรวจสอบค่าดังกล่าวในส่วนร้องขอ Token [3]
3. แนวทางการแก้ไข 3.1 ตรวจสอบ Version ของแพ็กเกจ sap-cloud-sdk ในแอปพลิเคชันทุกระบบภายในหน่วยงาน รวมถึงระบบทดสอบ ระบบใช้งานจริง และ Container Image พร้อมตรวจสอบการใช้งานค่า tenant_subdomain 3.2 เร่งอัปเดต SAP Cloud SDK for Python เป็นรุ่นที่ได้รับการแก้ไข ดังนี้ – สำหรับ version ต่ำกว่า 0.45.2 ให้อัปเดตเป็น version 0.45.2 ซึ่งเป็นรุ่นแก้ไขตามประกาศ CVE-2026-89111 หรือพิจารณา version 0.55.1 หลังทดสอบความเข้ากันได้ – สำหรับ version 0.53.0 ถึง 0.55.0 ให้อัปเดตเป็น version 0.55.1 ซึ่งเพิ่มการตรวจสอบ tenant_subdomain ในส่วนร้องขอ Token – หากเลือก version ใหม่กว่า ควรตรวจสอบ Release Notes และความเข้ากันได้กับแอปพลิเคชัน โดยไม่เลือก version 0.53.0–0.55.0 เป็นปลายทางการอัปเดต เนื่องจากมีประเด็นการตรวจสอบข้อมูลข้างต้น 3.3 ปรับปรุงไฟล์กำหนด Dependencies และ Lock File พร้อม Build และนำแอปพลิเคชันขึ้นใช้งานใหม่ เพื่อให้ระบบที่ทำงานอยู่ใช้แพ็กเกจที่ได้รับการแก้ไขจริง 3.4 สำรองค่าการตั้งค่าที่สำคัญและเตรียมแผนกู้คืนบริการก่อนอัปเดต พร้อมทดสอบการร้องขอ Token และการเชื่อมต่อบริการ SAP BTP ที่แอปพลิเคชันใช้งาน 3.5 หลังอัปเดต ให้ตรวจสอบหมายเลขเวอร์ชันในระบบที่ใช้งานจริง และทดสอบว่าระบบปฏิเสธค่า tenant_subdomain ที่ไม่ถูกต้อง โดยใช้ข้อมูลทดสอบแทนข้อมูลรับรองจริง 3.6 ตรวจสอบ Log ของแอปพลิเคชันและการเชื่อมต่อขาออก เพื่อค้นหาการร้องขอ Token ไปยังโดเมนที่ไม่รู้จัก หรือค่า tenant_subdomain ที่ไม่ตรงกับองค์กรผู้ใช้งานที่ลงทะเบียนไว้ 3.7 หากพบหรือสงสัยว่า Client Secret รั่วไหล ให้เปลี่ยนข้อมูลรับรองที่เกี่ยวข้อง ตรวจสอบการใช้งานย้อนหลัง และพิจารณาเพิกถอน Token ตามความสามารถของบริการ พร้อมดำเนินการตามกระบวนการตอบสนองเหตุการณ์ของหน่วยงาน
4. แนวทางปฏิบัติกรณีไม่สามารถอัปเดตได้ทันที 4.1 ตรวจสอบค่า tenant_subdomain เทียบกับรายการองค์กรผู้ใช้งานที่ลงทะเบียนและได้รับอนุญาต (Allowlist) ก่อนส่งค่าให้ SDK ทุกครั้ง ตามแนวทางชั่วคราวที่ SAP แนะนำ 4.2 กำหนดค่า tenant_subdomain จากข้อมูลที่เชื่อถือได้ฝั่งเซิร์ฟเวอร์ และตรวจสอบว่าผู้ใช้งานมีสิทธิ์เข้าถึงองค์กรที่ระบุ ไม่รับค่าจากผู้ใช้แล้วส่งต่อให้ SDK โดยไม่มีการตรวจสอบ 4.3 จำกัดการเชื่อมต่อขาออกของแอปพลิเคชันให้เฉพาะปลายทาง OAuth2 และบริการที่จำเป็น โดยประเมินผลกระทบต่อการให้บริการก่อนดำเนินการ 4.4 ทบทวนสิทธิ์ของ OAuth2 Client ให้มีเฉพาะสิทธิ์ที่จำเป็นต่อการทำงาน และแยกข้อมูลรับรองระหว่างระบบทดสอบกับระบบใช้งานจริง 4.5 เพิ่มการเฝ้าระวังการร้องขอ Token ไปยังปลายทางผิดปกติ และหลีกเลี่ยงการบันทึก Client Secret หรือ Access Token ลงใน Log 4.6 หากไม่สามารถตรวจสอบหรือจำกัดค่า tenant_subdomain ได้อย่างเหมาะสม ให้พิจารณาระงับฟังก์ชันที่รับค่าดังกล่าวชั่วคราวจนกว่าจะติดตั้งการแก้ไข 4.7 หากพบพฤติกรรมน่าสงสัย ให้เก็บรักษา Log และหลักฐานที่เกี่ยวข้อง จำกัดการเชื่อมต่อไปยังปลายทางต้องสงสัย และเข้าสู่กระบวนการตรวจสอบเหตุการณ์ทันที
แหล่งอ้างอิง [1] https://dg.th/u7w0vcs9rg [2] https://dg.th/gu0l68diqm [3] https://dg.th/fas8jplwci
泰国国家计算机安全事件响应中心 (ThaiCERT) 一直在监测网络威胁形势,并发现 SAP Cloud SDK for Python 存在安全漏洞。该 SDK 是一套用于开发连接到 SAP 商业技术平台 (BTP) 服务的应用程序的工具集。该漏洞编号为 CVE-2026-89111,CVSS v3.1 评分为 10.0。攻击者如果能够控制用于识别用户组织的 tenant_subdomain 值,就可以将 OAuth2 Token 请求的目标地址更改为攻击者的服务器,从而导致应用程序凭据(包括客户端 ID 和客户端密钥)泄露 [1]。
1. 漏洞详情 CVE-2026-89111 (CVSS v3.1: 10.0) [2] – 服务器端请求伪造 (SSRF) 漏洞源于在多租户应用程序中,用于创建请求 OAuth2 令牌的 URL 之前,对 tenant_subdomain 值验证不当。控制此值的攻击者可能导致系统向攻击者定义的端点发送凭据,并可能利用接收到的信息,根据应用程序的权限访问服务。
2. 受影响产品 [3] 此漏洞影响以下版本的 SAP Cloud SDK for Python 或 sap-cloud-sdk 软件包:2.1 版本低于 0.45.2 的 SAP Cloud SDK for Python,包括 SAP 指定的 0.36.1 和 0.36.2 版本。2.2 版本 0.53.0 至 0.55.0 的 SAP Cloud SDK for Python 应进一步检查和更新,因为发现其在调用目标服务时缺少 tenant_subdomain 验证,并且版本 0.55.0 的文档管理服务中也存在类似问题。
SAP 尚未在其公告中明确指出 0.53.0 至 0.55.0 版本受同一 CVE 的影响,但 0.55.1 版本的发行说明表明,已在令牌请求部分添加了此类验证 [3]。
3. 解决方案 3.1 验证所有本地应用程序(包括测试系统、生产系统和容器镜像)中的 sap-cloud-sdk 软件包版本。同时,验证 tenant_subdomain 的使用情况。3.2 加快 SAP Cloud SDK for Python 更新至修正版本,具体如下:– 对于低于 0.45.2 的版本,请更新至 0.45.2 版本,该版本已修复 CVE-2026-89111 漏洞;或在进行兼容性测试后考虑更新至 0.55.1 版本。– 对于 0.53.0 至 0.55.0 版本,请更新至 0.55.1 版本,该版本在令牌请求部分添加了 tenant_subdomain 验证。– 如果选择更新的版本,请查看发行说明和应用程序兼容性信息。由于上述数据验证问题,请勿选择 0.53.0 至 0.55.0 版本作为更新目标。3.3 更新依赖项和锁定文件,然后重新构建并部署应用程序。为确保运行系统使用官方更新的软件包:3.4 更新前备份关键设置并制定服务恢复计划。测试应用程序上的令牌请求和 SAP BTP 服务连接。3.5 更新后,验证生产系统上的版本号,并使用测试数据(而非实际凭据)测试系统是否会拒绝错误的 tenant_subdomain 值。3.6 检查应用程序日志和出站连接,是否存在针对未知域的令牌请求或与注册用户组织不匹配的 tenant_subdomain 值。3.7 如果发现或怀疑存在客户端密钥泄露,请替换相关凭据,进行回顾性审查,并根据服务能力考虑撤销令牌,同时执行组织的事件响应流程。
4. 立即更新失败时的行动计划:4.1 始终按照 SAP 的临时指南,在将 tenant_subdomain 值提交给 SDK 之前,对照已注册和已授权用户组织列表(允许列表)验证该值。4.2 使用可信的服务器端数据定义 tenant_subdomain,并验证用户是否拥有对指定组织的访问权限。未经验证,请勿接受用户提供的值并将其转发到 SDK。4.3 将应用程序的出站连接限制为仅必要的 OAuth2 端点和服务,并在采取行动前评估对服务的影响。4.4 审查 OAuth2 客户端权限,确保仅授予必要的权限,并在测试系统和生产系统之间使用不同的凭据。4.5 加强对异常令牌请求的监控,并避免记录客户端密钥或访问令牌。4.6 如果无法正确验证或限制 tenant_subdomain 值,请考虑暂时中止接受此类值的功能,直到修复程序安装完毕。 4.7 如果检测到可疑行为,则保留相关日志和证据,限制与可疑端点的连接,并立即启动事件调查。
参考文献 [1] https://dg.th/u7w0vcs9rg [2] https://dg.th/gu0l68diqm [3] https://dg.th/fas8jplwci