Lỗ hổng

Lỗ hổng 37 năm tuổi trên OpenBSD bị khai thác để leo thang đặc quyền Root

Các nhà nghiên cứu bảo mật vừa công bố PoC khai thác lỗ hổng 37 năm tuổi trong nhân OpenBSD, cho phép kẻ tấn công leo thang đặc quyền lên root thông qua lỗi tràn số nguyên.

RSS Source
RSS SourceAI Rewrite
~1 phút đọc•10 lượt xem
37-Year-Old Kernel Flaw Exploited to Gain Root Access on OpenBSD — PoC Released
  • Phát hiện lỗ hổng: Một lỗ hổng tồn tại 37 năm trong nhân OpenBSD liên quan đến cơ chế xử lý bộ nhớ chia sẻ System V.
  • Cơ chế khai thác: Kẻ tấn công sử dụng lỗi tràn số nguyên (integer overflow) để tạo điều kiện cho lỗi Use-After-Free (UAF) trong nhân hệ điều hành.
  • Tác động: Cho phép người dùng cục bộ leo thang đặc quyền lên root mà không cần kỹ thuật rò rỉ thông tin phức tạp.
  • Khắc phục: Người dùng cần cập nhật hệ thống ngay lập tức thông qua syspatch theo các bản vá Errata 018 và 026.

Các nhà nghiên cứu bảo mật vừa công bố một mã khai thác (PoC) cho phép leo thang đặc quyền lên quyền root trên hệ điều hành OpenBSD. Điểm đáng chú ý là lỗ hổng cốt lõi này đã tồn tại trong mã nguồn BSD suốt 37 năm qua, xuất phát từ việc sử dụng kiểu dữ liệu số nguyên có dấu 16-bit cho biến đếm shm_nattch trong cơ chế quản lý bộ nhớ chia sẻ System V.

Phân tích kỹ thuật về lỗ hổng nhân hệ điều hành

Lỗ hổng bắt nguồn từ việc biến đếm shm_nattch không thể xử lý các giá trị vượt quá 32.767. Bằng cách liên tục thực hiện các tiến trình con (fork) với các bản ghi bộ nhớ chia sẻ, người dùng cục bộ có thể đẩy giá trị này vượt ngưỡng tối đa, khiến nó bị tràn (wrap) sang giá trị âm. Sự cố tràn số nguyên này tạo ra một điều kiện chạy đua (race condition) dẫn đến lỗi Use-After-Free (UAF) nghiêm trọng trong nhân.

Để chuyển đổi lỗi hỏng bộ nhớ này thành quyền truy cập root, các nhà nghiên cứu đã thực hiện chuỗi tấn công phức tạp:

  • Giai đoạn 1: Ánh xạ 127 phân đoạn bộ nhớ chia sẻ, sau đó xóa các ánh xạ này và thực hiện 259 tiến trình con để ép buộc biến đếm bị tràn.
  • Giai đoạn 2: Định hình bộ nhớ heap của nhân và theo dõi dữ liệu bộ cấp phát thông qua sysctl(KERN_MALLOCSTATS).
  • Giai đoạn 3: Sử dụng IPC_RMID để đánh dấu đối tượng bộ nhớ chia sẻ chờ xóa, đồng thời thực hiện race condition với một tiến trình hỗ trợ để tạo ra một phân bổ nhân bị nhầm lẫn về kích thước.

Kỹ thuật khai thác và vượt qua cơ chế bảo vệ

Mặc dù OpenBSD tích hợp các cơ chế bảo vệ mạnh mẽ như KARL (Kernel Address Randomized Link), SMAP và SMEP, mã khai thác vẫn có thể thực thi thành công. KARL thường thay đổi địa chỉ mã và dữ liệu nhân khi khởi động, tuy nhiên, các nhà nghiên cứu phát hiện rằng một số phần của bộ cấp phát bộ nhớ nhân vẫn có tính dự đoán cao trên cùng một phần cứng.

Kẻ tấn công đặt các đối tượng socket IP gần vùng bộ nhớ đã giải phóng và sử dụng IP_MULTICAST_TTL để tạo đối tượng struct ip_moptions. Việc ghi ngoài phạm vi (out-of-bounds write) cho phép thay đổi các bộ đếm thành viên, từ đó thay đổi ánh xạ bảng trang tự tham chiếu của OpenBSD, cho phép ghi đè con trỏ nhân và thực thi mã tùy ý.

Loại thực thểGiá trị / Chỉ sốMô tả tác động
Lỗ hổng 1Tràn số nguyên (Integer Overflow)Gây lỗi UAF trong nhân
Lỗ hổng 2Out-of-bounds writeCho phép leo thang đặc quyền
Cơ chế bảo vệKARL, SMAP, SMEPBị vượt qua bởi tính dự đoán của bộ cấp phát

Hướng dẫn khắc phục và phòng thủ

OpenBSD đã phát hành các bản vá chính thức cho lỗ hổng này. Quản trị viên hệ thống cần thực hiện cập nhật ngay lập tức để đảm bảo an toàn cho hạ tầng. Các bản vá bao gồm:

  • Errata 018: Khắc phục lỗi tràn số nguyên trong quản lý bộ nhớ chia sẻ.
  • Errata 026: Khắc phục lỗi Use-After-Free liên quan đến đếm tham chiếu.

Để áp dụng bản vá, hãy sử dụng công cụ syspatch trên các hệ thống hỗ trợ (amd64, i386, arm64):

# Kiểm tra và áp dụng các bản vá mới nhất cho OpenBSD 7.9
syspatch
# Khởi động lại hệ thống để áp dụng thay đổi nhân
reboot

⚠️ Cảnh báo quan trọng: Việc không khởi động lại hệ thống sau khi áp dụng syspatch sẽ khiến nhân hệ điều hành cũ vẫn đang hoạt động, để lại lỗ hổng mở cho kẻ tấn công. Hãy đảm bảo quy trình bảo trì được thực hiện đầy đủ theo hướng dẫn từ OpenBSD Errata.

Các nhà nghiên cứu cũng đề xuất các biện pháp phòng thủ chuyên sâu hơn như kiểm tra liên kết an toàn (safe unlink) cho danh sách liên kết, ngẫu nhiên hóa vị trí bảng trang và cô lập bộ cấp phát bộ nhớ để ngăn chặn các kỹ thuật khai thác tương tự trong tương lai.

Tổng hợp, và phân tích kỹ thuật từ:Cyber Security News
Xem bài gốc

Mạng Lưới An Ninh Mạng & Cộng Đồng

24/7 Alerts

Nhận cảnh báo 0-Day khẩn cấp, phân tích mã độc và tham gia thảo luận kỹ thuật cùng chuyên gia.

RSS Source

Ban biên tập nội dung và phân tích an ninh mạng tại ADSECVN.COM.

Bài Viết Liên Quan

Cùng chuyên mục & chủ đề