Đường dẫn tìm kiếm PKCS#11 không đủ tin cậy cho phép thực thi mã từ xa trong OpenBSD OpenSSH ssh-agent

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

Giới thiệu chung

Dữ liệu gốc

Tính năng PKCS#11 trong ssh-agent của OpenSSH trước 9.3p2 có đường dẫn tìm kiếm không đủ đáng tin cậy, dẫn đến thực thi mã từ xa nếu một agent được chuyển tiếp đến hệ thống do kẻ tấn công kiểm soát. (Mã trong /usr/lib không nhất thiết an toàn để nạp vào ssh-agent.) LƯU Ý: vấn đề này tồn tại do bản sửa lỗi không hoàn chỉnh cho CVE-2016-10009.

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

  • OpenBSD OpenSSH: các bản trước 9.3p2 bị ảnh hưởng. Dữ liệu affected được cung cấp đánh dấu rõ 9.3 và 9.3p1 là bị ảnh hưởng; 9.3p2 là bản sửa lỗi upstream.
  • Fedora: bản ghi chuẩn hóa đánh dấu Fedora 37 và 38 là bị ảnh hưởng. Bản ghi không cung cấp ranh giới package đã sửa cụ thể cho hai nhánh này, vì vậy cần dùng advisory hoặc bản cập nhật bảo mật của Fedora để xác định gói đã được sửa.
  • Gentoo: advisory của Gentoo xác định net-misc/openssh trên mọi kiến trúc bị ảnh hưởng khi thấp hơn 9.3_p2, và không bị ảnh hưởng tại 9.3_p2 trở lên.
  • Qualys đã chứng minh khả năng khai thác trên các môi trường Ubuntu Desktop, nhưng nghiên cứu đó không phải là danh sách đầy đủ cho mọi bản phân phối. Downstream package có thể backport bản sửa lỗi, nên số phiên bản upstream không đủ để kết luận trạng thái của mọi gói hệ điều hành.

Chi tiết kỹ thuật

Lỗ hổng nằm trong cơ chế nạp PKCS#11 provider của ssh-agent, nơi đường dẫn tìm kiếm thư viện không đủ đáng tin cậy. Khi agent được forward đến một máy chủ do kẻ tấn công kiểm soát, các yêu cầu PKCS#11 từ xa có thể khiến thư viện trong /usr/lib* trên máy nạn nhân được mở bằng dlopen() rồi đóng bằng dlclose(). OpenSSH thực hiện việc nạp trong tiến trình riêng ssh-pkcs11-helper thay vì không gian địa chỉ chính của agent, nhưng các side effect của loader, chẳng hạn constructor và destructor của thư viện, vẫn được thực thi trong một tiến trình nhạy cảm về bảo mật. Qualys đã chứng minh rằng có thể kết hợp các side effect này để biến thao tác nạp và dỡ thư viện thành thực thi mã từ xa đáng tin cậy, bất chấp ASLR, PIE và NX. Khai thác cần các thư viện cụ thể tồn tại trên hệ thống nạn nhân và cần agent socket được forward đến hệ thống do kẻ tấn công kiểm soát. Tập thư viện có thể khai thác phụ thuộc vào hệ điều hành và các gói đã cài; nghiên cứu công khai không xác lập cùng một kết quả cho mọi bản phân phối.

Khả năng khai thác

Lỗ hổng có thể bị khai thác qua mạng thông qua agent socket đã được forward. Kẻ tấn công cần có quyền truy cập vào hệ thống từ xa đang nhận socket của agent, nhưng sau khi điều kiện này tồn tại, bản ghi chuẩn hóa mô tả rằng không cần thêm quyền đặc biệt, tương tác người dùng hoặc thao tác phức tạp đáng kể. Sự hiện diện của các thư viện phù hợp trên máy nạn nhân và việc bật agent forwarding là các điều kiện quan trọng. Exploit công khai tồn tại, và nhóm Qualys đã công bố phân tích kỹ thuật cùng bằng chứng thực thi mã từ xa. Bản ghi không xác định liệu lỗ hổng đã được khai thác trong thực tế hay chưa.

Tác động kỹ thuật

Khai thác thành công cho phép thực thi mã do kẻ tấn công kiểm soát trong ngữ cảnh của agent hoặc tiến trình trợ giúp PKCS#11 bị ảnh hưởng. Điều này có thể làm mất tính bí mật, toàn vẹn và khả dụng của workstation hoặc phiên làm việc trong phạm vi quyền mà tiến trình agent có được. Vì agent forwarding làm cho agent cục bộ có thể được truy cập từ máy chủ từ xa, một máy chủ bị kiểm soát có thể trở thành điểm khởi đầu cho hành động tiếp theo trên máy người dùng. Mức độ ảnh hưởng sau đó phụ thuộc vào quyền tài khoản, các khóa đang được agent quản lý, quyền truy cập máy chủ và biện pháp phân đoạn mạng. Sự hiện diện của thư viện phù hợp và việc agent socket được forward là các giới hạn quan trọng; không phải mọi hệ thống OpenSSH đều tự động ở trạng thái có thể khai thác.

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

  • Workstation của quản trị viên, nhà phát triển và các máy chạy automation có forward agent có thể bị thực thi mã với quyền của tiến trình agent, gây ảnh hưởng đến dữ liệu, công cụ phát triển và quy trình build hoặc triển khai.
  • Việc kiểm soát máy chủ nhận agent socket có thể trở thành điểm khởi đầu để tác động đến máy workstation hoặc phiên làm việc của người dùng. Quyền truy cập tiếp theo phụ thuộc vào khóa đã nạp, quyền của tài khoản, phân đoạn mạng và các kiểm soát cục bộ.
  • Các môi trường không forward agent đến hệ thống không đáng tin cậy có điều kiện phơi nhiễm khác đáng kể so với môi trường sử dụng agent forwarding thường xuyên.
  • Bằng chứng được kiểm tra không nêu một chiến dịch, nạn nhân hoặc vụ xâm nhập cụ thể, nên tác động thực tế đối với từng tổ chức cần được đánh giá từ cấu hình forwarding và trạng thái gói cài đặt.

Cách khắc phục

  1. Nâng cấp bản upstream OpenBSD OpenSSH lên 9.3p2. Với Gentoo, sử dụng net-misc/openssh tại 9.3_p2 hoặc phiên bản phù hợp theo advisory. Với Fedora 37 và 38, cài bản cập nhật bảo mật do Fedora cung cấp; không suy ra một số phiên bản package cụ thể khi chưa có dữ liệu xác nhận.
  2. Nếu chưa thể cập nhật ngay, khởi chạy ssh-agent với PKCS#11/FIDO allowlist rỗng bằng ssh-agent -P '', hoặc cấu hình allowlist chỉ chứa các provider library cụ thể đã được phê duyệt. Biện pháp này có thể làm gián đoạn việc sử dụng provider hợp lệ.
  3. Không forward agent đến máy chủ không đáng tin cậy. Khi phù hợp, dùng jump host thay cho việc để agent socket có thể truy cập trực tiếp từ hệ thống đích.
  4. Nếu bắt buộc duy trì khả năng nạp provider từ xa, cần hiểu rằng bản sửa lỗi mặc định từ chối yêu cầu nạp PKCS#11 từ client từ xa. Không bật lại hành vi cũ bằng -Oallow-remote-pkcs11 trừ khi có nhu cầu đã đánh giá và kiểm soát rõ ràng.
  5. Kiểm tra các công cụ không phải OpenSSH dùng để forward agent socket, vì cơ chế kiểm soát client từ xa có thể bị vượt qua khi socket được chuyển tiếp bằng công cụ khác.

Cách phát hiện

  • Kiểm kê mọi cài đặt OpenSSH, ssh-agent và gói hệ điều hành, đồng thời xác định các bản cập nhật bảo mật đã được áp dụng thay vì chỉ dựa vào số phiên bản upstream.
  • Tìm các cấu hình hoặc lệnh bật agent forwarding, đặc biệt là ForwardAgent và tùy chọn -A, sau đó lập danh sách các máy chủ có thể truy cập agent socket.
  • Kiểm tra tùy chọn khởi chạy ssh-agent để xác định PKCS#11/FIDO allowlist có rỗng hoặc chỉ chứa các provider library được phê duyệt hay không.
  • Xác định agent có dùng ssh-pkcs11-helper và client có hỗ trợ nhận diện yêu cầu từ xa hay không. Các công cụ không phải OpenSSH dùng để forward socket có thể làm suy yếu hoặc vượt qua kiểm soát này.
  • Có thể theo dõi hoạt động bất thường của ssh-pkcs11-helper và các sự kiện nạp shared library trong các phiên agent forwarding như một biện pháp phòng ngừa. Nguồn hiện có không cung cấp IOC hoặc mẫu log riêng cho lỗ hổng này.
  • Không coi việc không thấy log đáng ngờ là bằng chứng hệ thống an toàn; cần đối chiếu inventory, cấu hình forwarding và trạng thái bản vá.
Nguồn (38)
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.