Snowflake driver có thể làm lộ workload identity token tới host không tin cậy

Lưu ý: Dữ liệu này chỉ có tính chất tham khảo, phục vụ nghiên cứu an ninh mạng.CyStack khuyến nghị người dùng không sử dụng các thông tin này nhằm các mục đích bất hợp pháp

Lỗ hổng CVE-2026-86600 là gì?

Lỗ hổng CVE-2026-86600 là lỗ hổng thuộc các loại Insufficiently Protected Credentials và Unintended Proxy or Intermediary ('Confused Deputy'), ảnh hưởng tới Snowflake Connector for Python (phiên bản bị ảnh hưởng: 3.14.1 – < 4.7.3), Snowflake Go Driver (phiên bản bị ảnh hưởng: 1.15.0 – ≤ 1.19.1 và 2.0.0 – < 2.2.0), Snowflake JDBC Driver (phiên bản bị ảnh hưởng: 3.24.0 – < 4.3.4) và 7 sản phẩm khác. Lỗ hổng này được xếp hạng ở mức Cao, với điểm CVSS 8.2. Các nguồn hiện có chưa ghi nhận lỗ hổng này bị khai thác.

Giới thiệu chung

Dữ liệu gốc

Trong các Snowflake driver bị ảnh hưởng, cơ chế xác thực WORKLOAD_IDENTITY yêu cầu một cloud workload-identity token và gắn token đó vào yêu cầu đăng nhập mà không xác minh host đã cấu hình có phải là endpoint Snowflake hay không. Kẻ tấn công có thể sửa connection configuration để khiến driver tạo một attestation mới và gửi nó tới host do kẻ tấn công kiểm soát. Token bị thu thập có thể được replay tới Snowflake trong thời gian còn hiệu lực, trong các account nơi workload identity đó đã được đăng ký. Trên Azure, audience của token cũng được lấy từ connection configuration. Khi kết hợp với host do kẻ tấn công kiểm soát, driver có thể yêu cầu một Managed Identity access token được giới hạn cho một tài nguyên Azure không phải Snowflake và gửi token đó cho kẻ tấn công. Đây là trường hợp duy nhất mà tác động mở rộng ra ngoài Snowflake; phạm vi của nó bị giới hạn bởi thời hạn token và quyền của managed identity. Khai thác thành công yêu cầu xác thực WORKLOAD_IDENTITY trên một workload đã có ambient cloud identity. Các driver đã được vá giới hạn authenticator này vào các host Snowflake được nhận diện. Người dùng phải tự nâng cấp.

Sản phẩm và phạm vi ảnh hưởng

  • Snowflake Connector for Python: package snowflake-connector-python, từ 3.14.1 đến nhỏ hơn 4.7.3 là affected. Bản ghi xác định 4.7.3 là bản đã được vá.
  • Snowflake Go Driver, v1: package github.com/snowflakedb/gosnowflake, từ 1.15.0 đến và gồm 1.19.1 là affected. Bản ghi không cung cấp bản vá cụ thể cho nhánh v1.
  • Snowflake Go Driver, v2: package github.com/snowflakedb/gosnowflake/v2, từ 2.0.0 đến nhỏ hơn 2.2.0 là affected. Bản vá được xác định là 2.2.0.
  • Snowflake JDBC Driver, gồm các artifact standard, FIPS và Thin: từ 3.24.0 đến nhỏ hơn 4.3.4 là affected. Bản vá được xác định là 4.3.4.
  • Snowflake Node.js Driver: package snowflake-sdk, từ 2.1.1 đến nhỏ hơn 3.3.0 là affected. Bản vá được xác định là 3.3.0.
  • Snowflake Connector for.NET: package Snowflake.Data, từ 4.7.0 đến nhỏ hơn 6.1.0 là affected. Bản vá được xác định là 6.1.0.
  • Snowflake ODBC Driver: từ 3.9.0 đến nhỏ hơn 3.20.0 là affected. Bản vá được xác định là 3.20.0.
  • Snowflake PHP PDO Driver: từ 3.6.0 đến nhỏ hơn 4.2.0 là affected. Bản vá được xác định là 4.2.0.
  • Snowflake Libsnowflakeclient: từ 2.2.0 đến nhỏ hơn 2.10.0 là affected. Bản vá được xác định là 2.10.0.
  • Các bản phát hành ngoài những boundary được nêu trên không nên được suy luận là an toàn nếu không thuộc branch đã được vendor xác nhận.

Chi tiết kỹ thuật

Trong các Snowflake driver bị ảnh hưởng, cơ chế xác thực WORKLOAD_IDENTITY lấy attestation từ cloud workload identity rồi gắn token đó vào yêu cầu đăng nhập trước khi xác minh host đích có phải endpoint Snowflake hay không. Nếu kẻ tấn công sửa được connection configuration, driver có thể tạo attestation mới và gửi nó tới host do kẻ tấn công kiểm soát. Token bị thu thập có thể được replay tới Snowflake trong thời gian còn hiệu lực, nếu workload identity đó đã được đăng ký trong tài khoản Snowflake tương ứng. Trên Azure, audience của token cũng lấy từ connection configuration, nên host do kẻ tấn công kiểm soát có thể khiến driver yêu cầu Managed Identity access token cho một tài nguyên Azure không phải Snowflake rồi gửi token đó cho kẻ tấn công. Đây là trường hợp duy nhất được mô tả có thể mở rộng tác động ra ngoài Snowflake, và phạm vi vẫn bị giới hạn bởi thời hạn token cùng quyền của managed identity. Bằng chứng hiện có không xác định các hàm nội bộ hoặc đường đi mã cụ thể ngoài việc lỗi xảy ra trong luồng WORKLOAD_IDENTITY trước bước xác thực host.

Khả năng khai thác

  • Đường tấn công có thể được kích hoạt qua kết nối mạng, nhưng kẻ tấn công trước hết phải có khả năng sửa connection configuration của workload.
  • Điều kiện khai thác gồm việc driver sử dụng WORKLOAD_IDENTITY và workload có sẵn ambient cloud identity. Vector được cung cấp mô tả yêu cầu đặc quyền thấp, độ phức tạp cao và không cần user interaction.
  • Khi điều kiện phù hợp, driver tự tạo attestation và gửi nó tới host được cấu hình, vì vậy người dùng không cần xác nhận thêm trong lúc kết nối.
  • Bản ghi được cung cấp đánh dấu public_exploit là false và không đánh dấu khai thác đã biết. Đây chỉ là trạng thái của dữ liệu hiện có, không chứng minh rằng việc khai thác chưa từng xảy ra.

Tác động kỹ thuật

Lỗi làm biến đổi driver thành một confused deputy: driver dùng ambient cloud identity của workload để tạo credential rồi gửi credential tới host do cấu hình chỉ định. Kẻ tấn công có thể replay token thu được để truy cập Snowflake trong thời gian token còn hiệu lực nếu identity đã được đăng ký trong tài khoản đích. Quyền truy cập và khả năng thay đổi dữ liệu bị giới hạn bởi các role Snowflake của identity đó. Trên Azure, việc cấu hình audience phù hợp có thể tạo token cho tài nguyên Azure không phải Snowflake, nhưng tác động vẫn bị giới hạn bởi thời hạn token và quyền của managed identity. Bằng chứng hiện có không xác định việc thực thi mã tùy ý, gián đoạn dịch vụ hoặc quyền vượt quá các quyền đã cấp.

Tác động đến tổ chức

  • Token workload identity bị đánh cắp có thể cho phép truy cập các tài khoản Snowflake nơi identity đó đã được đăng ký, với quyền tương ứng của identity. Điều này có thể làm lộ dữ liệu hoặc cho phép thay đổi dữ liệu và đối tượng Snowflake mà identity được phép thao tác.
  • Trên Azure, một token Managed Identity có audience trỏ tới tài nguyên không phải Snowflake có thể mở rộng tác động sang tài nguyên Azure khác. Khả năng này bị giới hạn bởi thời hạn token và quyền của managed identity.
  • Sự cố có thể yêu cầu điều tra nhiều workload, connection profile và cloud identity cùng lúc, đặc biệt khi cấu hình được phân phối qua file, secret hoặc hệ thống triển khai.
  • Bản ghi không thiết lập tác động làm gián đoạn dịch vụ. Tác động cụ thể về dữ liệu và quyền truy cập phụ thuộc vào các role, account và cloud permissions gắn với workload identity.

Cách khắc phục

  1. Nâng cấp thủ công lên bản đã vá theo đúng driver branch đang sử dụng:
  • snowflake-connector-python: nâng lên 4.7.3.
  • github.com/snowflakedb/gosnowflake/v2: nâng lên 2.2.0.
  • Snowflake JDBC Driver, FIPS hoặc Thin: nâng lên 4.3.4.
  • snowflake-sdk: nâng lên 3.3.0.
  • Snowflake.Data: nâng lên 6.1.0.
  • Snowflake ODBC Driver: nâng lên 3.20.0.
  • Snowflake PHP PDO Driver: nâng lên 4.2.0.
  • Snowflake Libsnowflakeclient: nâng lên 2.10.0.
  1. Với Snowflake Go Driver v1, bản ghi xác định các bản từ 1.15.0 đến 1.19.1 là affected nhưng không nêu bản vá cụ thể. Không nên coi một bản v1 khác là an toàn nếu chưa có xác nhận của Snowflake; hãy lấy bản v1 đã chứa host validation từ vendor hoặc chuyển sang branch được xác nhận là đã vá.
  2. Nếu chưa thể nâng cấp, tạm thời vô hiệu hóa WORKLOAD_IDENTITY ở các workload phù hợp hoặc ngăn nguồn không tin cậy sửa host và các tham số liên quan trong connection configuration. Đây là biện pháp giảm thiểu tạm thời, không thay thế việc nâng cấp.
  3. Giữ host validation ở chế độ giới hạn cho các host Snowflake đã được nhận diện. Chỉ sử dụng SNOWFLAKE_WIF_ALLOWED_HOST_SUFFIXES để thêm suffix nội bộ đã được kiểm soát và không cho phép giá trị do kẻ tấn công cung cấp.
  4. Nếu có khả năng attestation hoặc token đã bị gửi tới host không tin cậy, điều tra log kết nối và cloud audit log, đánh giá các Snowflake role và cloud permissions liên quan, đồng thời thực hiện quy trình thu hồi, thay thế hoặc giới hạn identity theo chính sách ứng phó sự cố của tổ chức.

Cách phát hiện

  • Kiểm kê mọi Snowflake driver đang được triển khai, xác định package, driver branch và phiên bản thực tế trên từng workload.
  • Tìm các connection profile hoặc DSN sử dụng WORKLOAD_IDENTITY, đặc biệt trên workload có ambient cloud identity từ AWS, Azure hoặc Google Cloud.
  • Kiểm tra host trong connection configuration có thuộc các host Snowflake được tin cậy hay không. Rà soát SNOWFLAKE_WIF_ALLOWED_HOST_SUFFIXES và xác nhận không có suffix do người dùng hoặc nguồn không tin cậy thêm vào.
  • Với JDBC, rà soát lỗi WORKLOAD_IDENTITY_FLOW_ERROR và host bị từ chối nếu hệ thống ghi lại thông báo này.
  • Rà soát proxy, DNS, egress và cloud audit log để tìm việc gửi login request hoặc yêu cầu cloud identity tới host bất thường. Đây là biện pháp giám sát phòng ngừa, và việc không có log không chứng minh workload an toàn.
  • Trên Azure, kiểm tra các yêu cầu Managed Identity token có audience hoặc tài nguyên đích khác với Snowflake. Khả năng quan sát phụ thuộc vào log được bật trong môi trường.
Nguồn (16)
Tìm hiểu thêm

Kiểm tra chuyên sâu cùng giải pháp quản lý rủi ro Web toàn diện

Giải pháp CyStack VulnScan liên tục phát hiện tài sản, xác minh lỗ hổng và giúp đội ngũ bảo mật ưu tiên khắc phục cho toàn bộ doanh nghiệp.

Khám phá CyStack VulnScan