Vừa qua, các chuyên gia bảo mật vừa công bố lỗ hổng khá nguy hiểm mang tên File Inclusion cho phép các hacker lợi dụng tấn công vào những tập tin quan trọng trên các hệ thống server website qua việc thực thi các đoạn mã độc nằm trong các gói tập tin bằng chức năng include. Đây là một vấn đề thực sự quan trọng mà các công ty thuê máy chủ cần biết để giữ an toàn cho hệ thống website của khách hàng.
Cách thức tấn công File Inclusion
Như các bạn đã biết, hàm Include() là một hàm có chức năng gọi toàn bộ các file có chứa dữ liệu được sao chép qua một file khác để tránh việc code bị trùng lặp và có thể gọi để sử dụng bất cứ lúc nào cần thiết trong lập trình website code back end. CÁc lập trình viê ngày nay thường rất hay sử dụng hàm lệnh này để thêm dữ liệu, mã nguồn và sử dụng chúng cho các hàm cần thiết. Những nơi mà các lập trình viên hay sử dụng hàm này thường là ở menu files, footers.
Bảo mật là vấn đề rất quan trọng
Tuy đây là một tiện ích khi lập trình website tuy nhiên nếu để các hacker lợi dụng và khai thác triệt để thì chúng sẽ trở nên vô cùng nguy hiểm khi các hacker sử dụng RFI (Remote File Inclusion) cho phép chính các hacker này có thể truy cập từ xa một file trên máy chủ bị tấn công và thao tác nó từ xa hay khởi tạo một đoạn mã độc ngầm chạy trên cả máy chủ lẫn người dùng và điều này sẽ giúp các hacker có thể dễ dàng đánh cắp các session token hặc ngay cả các dữ liệu mà chúng ta thực hiện và phải duyệt qua để tãi lên webshell có thể gây hại nghiêm trọng đến toàn bộ hệ thống máy chủ và máy tính người dùng chưa kể đến các loại dữ liệu giao dịch có giá trị cao.
PHP là một loại ngôn ngữ lập trình có nguy cơ bị tấn công nhiều nhất do chúng thường xuyên sử dụng hàm include cho toàn bộ hệ thống code của mình và đó sẽ là một môi trường rất thuận lợi để các hacker này thực hiện và quan trọng hơn, theo thông kê thì có đến 70% các website bán hàng, website sản phẩm của các công ty hiện nay đang sử dụng những loại mã nguồn mở để làm web như wordpress,… và chúng đều được lập trình bằng PHP.
Lỗ hổng Include
Cách khắc phục cho vấn đề này cũng không phải quá khó khăn. Chúng ta cần phải chú trọng hơn đến việc kiểm tra đầu vào và hạn chế tối đa đặt tên các loại biến quá dễ đoán, như user_id, hay password… một điều mà lập trình viên rất hay mắc lỗi vì chúng quá quen thuộc và dễ nhớ khi lập trình vì đó có thể là một trong những biến đầu tiên mà hacker sẽ đoán ra để include. Các tên file bạn cũng cần phải thay đổi tên chẳng hạn như file để cấu hình trang admin, bạn không nên chỉ để tên là admin mà phải thay đổi chúng đi để hacker không thể dự đoán ra tên file mà truy cập vào.