Tại sao phần mềm luôn có lỗ hổng và cách thức xử lý

Cuộc tấn công ransomware WannaCry gần đây lan nhanh chóng mặt, lợi dụng các lỗ hổng trong hệ điều hành Windows kiểm soát hàng trăm nghìn máy tính trên toàn thế giới. Nhưng điều đó có nghĩa là gì? Tại sao chúng có thể "chui" vào được các hệ thống máy tính đó?
Tại sao phần mềm luôn có lỗ hổng và cách thức xử lý
Tại sao phần mềm luôn có lỗ hổng và cách thức xử lý

Sẽ dễ hình dung hơn khi coi tin tặc như những kẻ trộm còn phần mềm độc hại là công cụ ăn cắp của chúng. Từng nghiên cứu về tội phạm mạng và các kỹ thuật tội phạm nói chung sử dụng hơn một thập kỷ qua, ta thấy rằng cả hai đều muốn tìm cách xâm nhập vào những nơi được bảo đảm an toàn  – đó là các máy tính và hệ thống mạng, là nhà cửa của người dân và các văn phòng làm việc. Chúng có nhiều cách để đột nhập.

Một số kẻ trộm chọn cách thức đơn giản là lấy gậy sắt đập vỡ cửa sổ hoặc cửa ra vào, trong khi những tên khác lại lén lút cậy ổ khóa hoặc lẻn vào qua cánh cửa để mở. Hacker hoạt động theo cách tương tự, mặc dù chúng có nhiều lối vào hơn những tên trộm vốn phải phụ thuộc vào cửa sổ hoặc cửa ra vào.

Những điểm yếu thường bị tin tặc khai thác không phải là cửa sổ hoặc bản lề gỉ sắt, mà là lỗi trong các chương trình phần mềm chạy trên máy tính. Chương trình do con người viết ra, do đó sẽ không thể hoàn hảo. Không ai có thể viết ra một phần mềm hoàn toàn không có lỗi, đây là kẽ hở để những kẻ tấn công xâm nhập.

Những lỗi này thực sự là gì?

Nói một cách đơn giản, lỗ hổng có thể là lỗi trong cách quản lý người dùng trên hệ thống, lỗi trong code hoặc lỗi xử lý một vài truy vấn. Một lỗ hổng phổ biến là SQL injection. Cuộc tấn công được thực hiện trên những website có truy vấn cơ sở dữ liệu, chẳng hạn như tìm kiếm theo từ khoá. Kẻ tấn công tạo một truy vấn có chứa code được viết bằng ngôn ngữ lập trình cơ sở dữ liệu có tên SQL.

Nếu một trang web không được bảo vệ đúng cách, chức năng tìm kiếm của website đó sẽ thực thi các lệnh SQL, điều này có thể cho phép kẻ tấn công truy cập vào cơ sở dữ liệu và kiểm soát trang web.

Tương tự, nhiều người dùng sử dụng các chương trình được hỗ trợ ngôn ngữ lập trình Java, chẳng hạn như Adobe Flash Player và các ứng dụng Android khác. Có rất nhiều lỗ hổng trong nền tảng Java và tất cả đều có thể bị khai thác theo những cách khác nhau, thông thường nhất là thông qua việc tải "plug-in" hoặc "codecs" vào phần mềm. Trên thực tế, những plug-in này chứa mã độc có khả năng tận dụng lỗ hổng để xâm nhập vào máy tính.

Lỗ hổng ở khắp mọi nơi

Lỗ hổng tồn tại trong tất cả các loại phần mềm. Một số phiên bản của hệ điều hành Microsoft Windows đã bị WannaCry tấn công. Từ năm 2009, trình duyệt web mã nguồn mở phổ biến Firefox có hơn 100 lỗ hổng trong code được xác định mỗi năm. 15 lỗ hổng khác nhau đã được ghi nhận trong các phiên bản trình duyệt của Microsoft là Internet Explorer kể từ đầu năm 2017.

Phát triển phần mềm không phải là một công việc "trong mơ". Các lập trình viên thường phải làm việc theo tiến độ do đội quản lý đặt ra, mặc dù việc hoàn thành đúng tiến độ có thể là cả một thử thách. Do đó, các nhà phát triển phải cố gắng hết sức để tạo ra được các sản phẩm đảm bảo tính an ninh nhưng không thể xác định được tất cả lỗi trước ngày phát hành dự kiến. Trì hoãn có thể rất tốn kém, thế nên nhiều công ty thường phát hành phiên bản đầu tiên và sau khi tìm thấy lỗi (hoặc nhận báo cáo từ người dùng hoặc các nhà nghiên cứu), họ sẽ vá lỗ hổng bằng việc phát hành bản cập nhật an ninh.

Tuy nhiên, các công ty phần mềm không thể hỗ trợ các sản phẩm của mình mãi mãi –  để duy trì hoạt động kinh doanh, họ phải tiếp tục cải tiến chương trình và bán các phiên bản cập nhật. Vì vậy, sau một thời gian phát triển, họ ngừng phát hành các bản vá cho các chương trình cũ.

Không phải mọi khách hàng đều mua phần mềm mới nhất. Nhiều người dùng vẫn đang chạy các chương trình cũ tồn tại những lỗ hổng chưa được vá. Điều đó cho phép kẻ tấn công có cơ hội tìm thấy những lỗ hổng trong phần mềm cũ.

Cách thức khai thác lỗ hổng

Một khi tin tặc xác định được lỗ hổng, hắn có thể viết ra một chương trình lợi dụng lỗi để xâm nhập và chiếm quyền kiểm soát thiết bị. Trong trường hợp này, cách thức khai thác tương tự như cách mà kẻ trộm sử dụng công cụ như gậy sắt, chìa khóa "vạn năng" hoặc các phương tiện khác tùy vào vị trí thực tế.

Tội phạm mạng tìm điểm yếu trong các phần mềm bảo vệ hệ thống, có thể là một kết nối mạng không được bảo vệ đúng cách. Nếu tin tặc có thể tiếp cận máy tính mục tiêu, chúng có thể tìm hiểu về hệ thống đó. Làm thế giúp chúng xác định các phương pháp tiếp cận riêng - truy cập các tệp tin cụ thể hay chạy các chương trình nhất định - từ đó chúng có thể kiểm soát máy tính và dữ liệu. Trong những năm gần đây, tin tặc bắt đầu nhắm mục tiêu vào các trình duyệt web bởi những phần mềm này được phép kết nối Internet và thường được cho phép để chạy các chương trình nhỏ; do đó tồn tại rất nhiều lỗ hổng có thể bị khai thác. Những lỗ hổng ban đầu có thể cho phép tin tặc kiểm soát máy tính mục tiêu, trước khi lấy đó làm bàn đạp để xâm nhập vào mạng lưới lớn hơn.

Đôi khi các lỗ hổng được chính các nhà phát triển phần mềm phát hiện hoặc do người dùng hay các nhà nghiên cứu cảnh báo. Có những trường hợp, tin tặc hoặc cơ quan gián điệp của chính phủ phát hiện cách thức xâm nhập vào hệ thống nhưng không thông báo với bên phát triển. Những lỗ hổng này được gọi là "zero day", bởi nhà phát triển chưa có cơ hội để vá. Do đó, phần mềm hoặc phần cứng sẽ dễ bị xâm nhập cho đến khi có bản vá hoặc bản sửa lỗi được tạo và phân phối tới người dùng.

Cách tốt nhất mà người dùng có thể tự bảo vệ mình là thường xuyên cài đặt bản cập nhật phần mềm ngay khi chúng được phát hành.

Theo Tạp chí Diễn đàn đầu tư
http://vnreview.vn/tin-tuc-an-ninh-mang/-/view_content/content/2195672/tai-sao-phan-mem-luon-co-lo-hong-va-cach-thuc-xu-ly