Trong hoạt động theo dõi giám sát diễn biến an toàn thông tin trên không gian mạng, Team CyberSec CMC Telecom ghi nhận một kỹ thuật mới cho phép kẻ tấn công vượt qua cờ ‘noexec’ trong hệ thống Linux.
Trong Linux, cờ noexec
được sử dụng trên hệ thống tệp để ngăn không cho thực thi các tệp nhị phân trực tiếp từ hệ thống tệp mà cờ này được đặt. Đây là tính năng bảo mật nhằm giới hạn khả năng thực thi phần mềm độc hại. Khi noexec
được áp dụng cho một mount point, mọi nỗ lực để thực thi một tệp nhị phân lưu trữ trên hệ thống tệp đó sẽ bị chặn, kể cả khi tệp đó có quyền thực thi. Biện pháp này được thiết kế để tăng cường an ninh bằng cách giảm bề mặt tấn công có sẵn cho các mối đe dọa tiềm tàng.
Các nhà nghiên cứu bảo mật đã tiết lộ một kỹ thuật mới cho phép kẻ tấn công bypass cờ noexec. Kỹ thuật mới được phát hiện này đã phá vỡ sự bảo vệ bằng cách sử dụng kết hợp thông minh giữa các tập lệnh Perl, Bash và PHP. Điều khiến kỹ thuật này đặc biệt đáng lo ngại là khả năng thực thi tệp nhị phân được tải xuống trực tiếp từ Internet, ngày cả trên phân vùng đã bật noexec. Điều này đạt được bằng cách tận dụng các lệnh gọi hệ thống như memfd_create
và execveat
để đưa shellcode vào các tiến trình đang chạy và tải tệp nhị phân từ bộ nhớ. Hơn nữa, phương pháp này không yêu cầu quyền root, tiềm tàng nhiều rủi ro cao.
**Khuyến nghị
Thực hiện kiểm tra, rà soát và xác minh đối với cảnh báo, nếu có sử dụng hệ thống Linux thì cần áp dụng các biện pháp như sau:
- Kiểm soát truy cập: Tăng cường kiểm soát truy cập tệp tin và thư mục, đảm bảo rằng chỉ những người dùng và ứng dụng đáng tin cậy mới có quyền ghi vào các phân vùng hệ thống quan trọng.
- Cập nhật: Thường xuyên cập nhật bản vá tất cả các hệ thống để bảo vệ khỏi các lỗ hổng đã biết có thể bị khai thác cùng với kỹ thuật này.
- Sử dụng các cơ chế kiểm soát thực thi bổ sung như AppArmor hoặc SELinux, có thể cung cấp khả năng kiểm soát chi tiết hơn về những tệp nhị phân nào có thể được thực thi.
- Có thể vô hiệu hóa system call có thể bị khai thác, cụ thể là
ptrace()
,mmap()
hoặcmemfd_create()
. Việc vô hiệu hóa một hoặc nhiều lời gọi hệ thống có thể giảm đáng kể rủi ro của kỹ thuật này. Chẳng hạn, vô hiệu hóaptrace()
có thể ngăn chặn truy cập trái phép vào/proc/self/mem
, một phương pháp được sử dụng trong nhiều kỹ thuật khai thác để viết hoặc thực thi mã trong bộ nhớ.
**Liên quan