Tại Hội nghị Bảo mật BlueHat tại Israel bàn về bảo mật diễn ra vào cuối tuần qua, một kỹ sư của Microsoft đã tiết lộ rằng, trong hơn 12 năm qua số bản vá được Microsoft tung ra nhằm sửa các lỗi liên quan đến an toàn bộ nhớ chiếm khoảng 70%.
An toàn bộ nhớ là thuật ngữ được sử dụng để mô tả khi các ứng dụng truy cập vào bộ nhớ của hệ điều hành đúng với hướng dẫn của hệ thống và không gây ra lỗi. Khi các phần mềm (một cách vô tình hay cố ý) truy cập bộ nhớ hệ thống vượt ra khỏi các địa chỉ ô nhớ được cấp hoặc vượt ngoài giới hạn cho phép sẽ gây ra các lỗ hổng bảo mật liên quan đến an toàn bộ nhớ.
Nguyên nhân là do đa số mã nguồn của Windows được viết bằng ngôn ngữ C và C++. Cả hai ngôn ngữ lập trình này đều cho phép các lập trình viên giành quyền kiểm soát các địa chỉ ô nhớ để thực thi các đoạn mã của mình, chính vì vậy chúng được coi là "không an toàn đối với bộ nhớ". Hàng loạt các lỗi liên quan tới an toàn bộ nhớ có thể xảy ra nếu trong những đoạn mã quản lý bộ nhớ của các lập trình viên xuất hiện một lỗi nhỏ. Các kẻ tấn công có thể lợi dụng các lỗi này để thực thi mã từ xa hoặc kích hoạt các đặc quyền cấp cao… gây ra hậu quả nguy hiểm.
Ở thời điểm hiện tại, các lỗi bộ nhớ là một trong những kẽ hở được tin tặc tận dụng nhiều nhất. Các lỗi được những kẻ tấn công ưa chuộng nhất gồm các lỗ hổng dạng heap corruption (gây lỗi bộ nhớ heap) và use-after-free (cho phép kẻ xấu tấn công sau khi người dùng tương tác với phần mềm độc hại).
Biểu đồ tỉ lệ số lỗ hổng không liên quan đến an toàn bộ nhớ (màu xanh nhạt) so với số lỗ hổng liên quan đến an toàn bộ nhớ (màu xanh đậm) theo năm được vá (trục ngang).
Các lỗ hổng liên quan tới an toàn bộ nhớ gồm:
- Buffer overflow - Tràn bộ đệm.
- Race condition - Quá nhiều luồng truy cập vào dữ liệu/tài nguyên.
- Page fault - Lỗi trang nhớ.
- Null pointer - Chỉ báo rỗng.
- Stack exhaustion - Cạn kiệt vùng nhớ xếp tầng.
- Heap exhaustion/corruption - Cạn kiệt/lỗi vùng nhớ heap.
- Use after free hoặc double free - Cho phép thực thi mã từ xa nếu người dùng tương tác với nội dung độc hại.