Canonical snapd: bypass AppArmor làm lộ hash mật khẩu hệ thống

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-2024-5300 là gì?

Lỗ hổng CVE-2024-5300 là lỗ hổng Improper Removal of Sensitive Information Before Storage or Transfer ảnh hưởng tới Ubuntu 26.04 LTS, Ubuntu 24.04 LTS, Ubuntu 22.04 LTS và 3 sản phẩm khác. Lỗ hổng này được xếp hạng ở mức Trung bình, với điểm CVSS 5.6. 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

Một lỗ hổng bypass kiểm soát truy cập và làm lộ thông tin tồn tại trong cấu hình base AppArmor security profile của Canonical snapd. Các quy tắc abstraction nằm tại /etc/apparmor.d/abstractions/nss-systemd (được kế thừa thông qua ) vô tình cho phép các ứng dụng snap bị confinement nghiêm ngặt, vốn không có privileged account-control interface, tương tác trực tiếp với các UNIX domain socket io.systemd.Multiplexer và io.systemd.NameServiceSwitch bên dưới /run/systemd/userdb/. Trên các hệ thống đã cài đặt và đang vận hành systemd-userdbd, dịch vụ này không phân biệt được root không bị giới hạn trên hệ thống host với root bị hạn chế đang chạy trong sandbox của ứng dụng snap, chẳng hạn daemon hoặc configuration hook. Vì systemd-userdbd trả về các user record "complete", bao gồm cả hashed password nhạy cảm của người dùng từ /etc/shadow, khi được một process chạy với quyền root truy vấn, một snap bị confinement nghiêm ngặt đã bị xâm nhập hoặc độc hại, đang thực thi code với quyền root, có thể truy vấn Varlink interface để lấy toàn bộ password hash của hệ thống và vượt qua các hạn chế sandbox dự kiến của snap. Vấn đề này được giảm nhẹ vì systemd-userdbd không được cài đặt mặc định trên các triển khai Ubuntu tiêu chuẩn.

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

Phạm vi ảnh hưởng được ghi nhận như sau:

  • Generic snapd package: các phiên bản từ 0 đến trước 2.76.1 được đánh dấu affected theo phạm vi semver của CNA. Mục affected record vẫn giữ default_status là unaffected, vì vậy cần ưu tiên trạng thái của package theo từng bản phân phối thay vì áp dụng máy móc phạm vi generic.
  • Canonical Ubuntu 26.04 LTS: fixed tại 2.76+ubuntu26.04.3.
  • Canonical Ubuntu 24.04 LTS: fixed tại 2.76+ubuntu24.04.1.
  • Canonical Ubuntu 22.04 LTS: fixed tại 2.76+ubuntu22.04.1.
  • Canonical Ubuntu 20.04 LTS: fixed tại 2.67.1+20.04ubuntu1~esm3; bản sửa được cung cấp qua Ubuntu Pro.
  • Canonical Ubuntu 18.04 LTS: fixed tại 2.61.4ubuntu0.18.04.1+esm4; bản sửa được cung cấp qua Ubuntu Pro.
  • Canonical Ubuntu 16.04 LTS: fixed tại 2.61.4ubuntu0.16.04.1+esm4; bản sửa được cung cấp qua Ubuntu Pro và yêu cầu Legacy Support add-on.

Ubuntu cũng liệt kê các interim release đã hết vòng đời là ignored và không cung cấp trạng thái sửa lỗi được duy trì cho các nhánh đó.

Chi tiết kỹ thuật

Canonical snapd có lỗi trong cấu hình base AppArmor security profile. Các quy tắc của abstraction /etc/apparmor.d/abstractions/nss-systemd vô tình cho phép ứng dụng snap bị confinement nghiêm ngặt truy cập trực tiếp vào các UNIX domain socket io.systemd.Multiplexer và io.systemd.NameServiceSwitch dưới /run/systemd/userdb/, dù ứng dụng không có privileged account-control interface.

Điều kiện khai thác chính là một snap bị xâm nhập hoặc độc hại phải thực thi code với quyền root, chẳng hạn trong daemon hoặc configuration hook. Khi systemd-userdbd được cài đặt và đang hoạt động, dịch vụ không phân biệt được root không bị giới hạn trên host với root bị giới hạn bên trong sandbox của snap. Do đó, process root trong snap có thể truy vấn Varlink interface và nhận các user record đầy đủ, bao gồm hashed password từ /etc/shadow.

Luồng ảnh hưởng đã được xác nhận là vượt qua ranh giới AppArmor dự kiến để đọc dữ liệu nhạy cảm từ dịch vụ user database của host. Bản ghi không nêu chi tiết rule hoặc thay đổi nội bộ cụ thể đã sửa lỗi, vì vậy không nên suy diễn thêm về cơ chế triển khai của bản vá.

Khả năng khai thác

Đây là vấn đề có khả năng truy cập cục bộ thông qua các UNIX domain socket trên host, không phải một đường tấn công mạng từ xa độc lập. Kẻ tấn công cần có một snap bị xâm nhập hoặc độc hại có thể chạy code với quyền root; độ phức tạp được đánh giá là cao, không cần user interaction và yêu cầu quyền ban đầu ở mức thấp theo bản ghi.

Điều kiện systemd-userdbd phải được cài đặt và đang hoạt động làm giảm đáng kể phạm vi phơi nhiễm. Dữ liệu được cung cấp không xác nhận một public exploit và không ghi nhận trạng thái khai thác đã biết; điều này không chứng minh rằng chưa từng có khai thác ngoài thực tế.

Tác động kỹ thuật

Kết quả kỹ thuật là một process chạy với quyền root trong sandbox của snap có thể đọc user record từ dịch vụ của host, bao gồm các password hash nhạy cảm. Đây là một cross-boundary confidentiality impact: dữ liệu từ môi trường host trở nên có thể truy cập từ ứng dụng vốn bị confinement.

Lỗi không cho thấy khả năng trực tiếp sửa dữ liệu hoặc làm gián đoạn dịch vụ, và không tự nó chứng minh việc thu được plaintext password. Tuy nhiên, hash có thể hỗ trợ offline cracking hoặc password reuse attacks, từ đó có khả năng dẫn tới truy cập trái phép vào tài khoản cục bộ nếu thông tin xác thực yếu hoặc được tái sử dụng.

Ảnh hưởng bị giới hạn bởi yêu cầu có code root trong snap và yêu cầu systemd-userdbd được cài đặt, đang hoạt động. Các standard Ubuntu deployments không cài đặt dịch vụ này mặc định, nhưng các hệ thống đã bổ sung hoặc kích hoạt dịch vụ cần được ưu tiên kiểm tra.

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

Lỗi này có thể làm lộ toàn bộ password hash của hệ thống cho code root chạy trong một snap vốn bị sandbox hạn chế. Đây là sự rò rỉ dữ liệu vượt qua boundary bảo vệ giữa ứng dụng snap và user database của host.

Password hash không đồng nghĩa với việc mật khẩu plaintext đã bị lộ, nhưng hash bị thu thập có thể hỗ trợ offline password cracking nếu thuật toán hoặc mật khẩu yếu. Việc lộ hash có thể làm tăng rủi ro chiếm quyền các tài khoản cục bộ và tái sử dụng thông tin xác thực, nhưng bản ghi không xác nhận đã xảy ra account takeover, thay đổi dữ liệu hoặc gián đoạn dịch vụ. Rủi ro thực tế phụ thuộc vào việc systemd-userdbd có hoạt động và snap có code root bị xâm nhập hoặc chứa mã độc hay không.

Cách khắc phục

  1. Cập nhật snapd theo đúng nhánh hệ điều hành và package boundary đã xác nhận: 2.76+ubuntu26.04.3 cho Ubuntu 26.04 LTS, 2.76+ubuntu24.04.1 cho Ubuntu 24.04 LTS và 2.76+ubuntu22.04.1 cho Ubuntu 22.04 LTS.
  2. Với Ubuntu 20.04 LTS, sử dụng bản sửa 2.67.1+20.04ubuntu1~esm3 qua Ubuntu Pro. Với Ubuntu 18.04 LTS, sử dụng 2.61.4ubuntu0.18.04.1+esm4 qua Ubuntu Pro. Với Ubuntu 16.04 LTS, sử dụng 2.61.4ubuntu0.16.04.1+esm4 qua Ubuntu Pro cùng Legacy Support add-on.
  3. Nếu đang xử lý generic snapd package thay vì package backport của Ubuntu, cập nhật lên boundary 2.76.1, vì các phiên bản thấp hơn boundary này nằm trong phạm vi affected semver đã công bố. Không suy ra rằng boundary generic này thay thế cho các package version backport của Ubuntu.
  4. Sau khi cập nhật, xác minh package thực tế được cài đặt thuộc đúng Ubuntu branch và đạt fixed boundary tương ứng. Đồng thời kiểm tra xem systemd-userdbd có được cài đặt và đang hoạt động hay không để xác định mức độ phơi nhiễm còn lại.
  5. Nếu chưa thể cập nhật, ưu tiên xác định các snap có thể chạy code với quyền root và đánh giá sự cần thiết của systemd-userdbd. Việc dịch vụ không được cài đặt mặc định trên standard Ubuntu deployments làm giảm phơi nhiễm, nhưng bản ghi không cung cấp một workaround cấu hình tạm thời được vendor xác nhận.
  6. Nếu có bằng chứng password hash đã bị truy cập, xử lý chúng như thông tin xác thực bị phơi nhiễm và kích hoạt quy trình phản ứng credential của tổ chức. Không nên chờ log vắng mặt để kết luận rằng hash chưa bị đọc.

Cách phát hiện

Thực hiện các kiểm tra sau:

  1. Kiểm kê package snapd theo từng Ubuntu release và đối chiếu với các boundary đã sửa trong phần affected summary.
  2. Xác định systemd-userdbd có được cài đặt và đang hoạt động hay không, đồng thời kiểm tra sự hiện diện của các socket dưới /run/systemd/userdb/.
  3. Xác định các strictly confined snap có daemon hoặc configuration hook chạy code với quyền root, vì đây là điều kiện quan trọng của đường khai thác được mô tả.
  4. Kiểm tra effective AppArmor profile và abstraction /etc/apparmor.d/abstractions/nss-systemd để xác định liệu snap có được phép truy cập các interface io.systemd.Multiplexer hoặc io.systemd.NameServiceSwitch hay không.
  5. Có thể xem xét telemetry của host và systemd-userdbd liên quan đến truy cập các socket trên như một biện pháp giám sát thận trọng. Không có log event hoặc IOC cụ thể nào được cung cấp, và việc không thấy log không chứng minh hệ thống an toàn.
Nguồn (9)
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.