Điểm chính
- Lỗ hổng bảo mật tồn tại 37 năm trong mã nguồn BSD liên quan đến cơ chế quản lý bộ nhớ chia sẻ System V.
- Kẻ tấn công có thể tận dụng lỗi tràn số nguyên để tạo điều kiện chạy đua và khai thác lỗi Use-After-Free nhằm chiếm quyền root.
- OpenBSD đã phát hành bản vá và khuyến cáo quản trị viên hệ thống cần cập nhật cũng như khởi động lại thiết bị ngay lập tức.
Các nhà nghiên cứu bảo mật vừa công bố một mã khai thác khái niệm (PoC) cho phép người dùng cục bộ leo thang đặc quyền lên mức cao nhất là root trên hệ điều hành OpenBSD, bắt nguồn từ một lỗi đã tồn tại suốt gần bốn thập kỷ.
Nguồn gốc lỗ hổng 37 năm tuổi
Điểm cốt lõi của lỗ hổng nằm trong cơ chế quản lý bộ nhớ chia sẻ System V, 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 mã nguồn BSD suốt 37 năm qua. Do giới hạn của kiểu dữ liệu này, biến đếm không thể xử lý các giá trị vượt quá 32.767.
Bằng cách liên tục tạo ra các tiến trình con thông qua hàm fork kết hợp với các bản ghi bộ nhớ chia sẻ, kẻ tấn công cục bộ có thể ép giá trị của biến đếm vượt ngưỡng tối đa. Khi vượt quá giới hạn, giá trị này sẽ bị tràn và chuyển thành số âm, tạo ra điều kiện chạy đua dẫn đến lỗi Use-After-Free (UAF) nghiêm trọng ngay bên trong nhân hệ điều hành.
Chuỗi tấn công vượt qua các cơ chế phòng thủ
Mặc dù OpenBSD nổi tiếng với các lớp bảo vệ phần cứng và phần mềm rất chặt chẽ như KARL (Kernel Address Randomized Link), SMAP và SMEP, các nhà nghiên cứu vẫn thành công trong việc thực thi mã khai thác.
Cụ thể, dù KARL có nhiệm vụ ngẫu nhiên hóa địa chỉ mã và dữ liệu nhân sau mỗi lần khởi động, các chuyên gia phát hiện ra rằng một số khu vực của bộ cấp phát bộ nhớ nhân vẫn có độ dự đoán khá cao trên cùng một phần cứng. Kẻ tấn công tiến hành đặt các đối tượng socket IP nằm sát vùng bộ nhớ vừa được giải phóng, sau đó sử dụng tùy chọn IP_MULTICAST_TTL để khởi tạo đối tượng struct ip_moptions.
Thông qua kỹ thuật ghi ngoài phạm vi (out-of-bounds write), mã khai thác có thể điều chỉnh các bộ đếm thành viên. Thao tác này dẫn đến việc thay đổi ánh xạ bảng trang tự tham chiếu của OpenBSD, cho phép ghi đè trực tiếp lên con trỏ nhân để thực thi mã tùy ý và đạt được quyền root.
Biện pháp khắc phục và khuyến nghị
Nhằm ứng phó với nguy cơ này, dự án OpenBSD đã nhanh chóng phát hành các bản vá lỗi chính thức. Đội ngũ quản trị hệ thống được khuyến cáo cần tiến hành cập nhật hạ tầng ngay lập tức để bịt kín lỗ hổng.
Đối với các kiến trúc được hỗ trợ bao gồm amd64, i386 và arm64, quản trị viên có thể áp dụng bản vá nhanh chóng thông qua công cụ dòng lệnh syspatch. Tuy nhiên, một lưu ý quan trọng là hệ thống bắt buộc phải được khởi động lại sau khi vá; nếu không, phiên bản nhân cũ vẫn tiếp tục duy trì hoạt động và để ngỏ nguy cơ bị tấn công.
Bên cạnh việc vá lỗi tức thời, giới nghiên cứu cũng đề xuất các giải pháp củng cố dài hạn như tích hợp cơ chế kiểm tra liên kết an toàn cho danh sách liên kết, tăng cường ngẫu nhiên hóa vị trí bảng trang, cũng như áp dụng chính sách cô lập bộ cấp phát bộ nhớ nhằm triệt tiêu các kỹ thuật khai thác tương tự trong tương lai.



