Bài viết tổng hợp lại 10 lỗ hổng phần mềm phổ biến nhất, theo thống kê từ tổ chức phi lợi nhuận Open Web Application Security Project (OWASP)
Lỗ hổng bảo mật luôn là vấn đề đau đầu của các Doanh nghiệp. Những lỗ hổng này cho phép tin tặc khai thác – tấn công – xâm nhập – vi phạm dữ liệu của Doanh nghiệp. Bài viết tổng hợp lại TOP 10 lỗ hổng bảo mật phổ biến nhất theo tiêu chuẩn OWASP (OWASP TOP 10). Các lỗ hổng này xảy ra trong môi trường phần mềm mà Doanh nghiệp cung cấp, bao gồm ứng dụng web và ứng dụng dành cho thiết bị di động. Các loại lỗ hổng được lựa chọn dựa trên nhiều tiêu chí, như mức độ phổ biến của các mối đe dọa, mức độ dễ dàng phát hiện và khắc phục, cũng như các tác động tiềm ẩn về kỹ thuật và kinh doanh của chúng.
SQL injection
Trong SQL injection, kẻ tấn công gửi code thông qua việc điền các form (Biểu mẫu) hoặc dữ liệu khác gửi đến ứng dụng. SQL injection là một trong những loại lỗ hổng phần mềm nổi tiếng nhất, một phần vì nó rất dễ hiểu và dễ khai thác. Ví dụ, kẻ tấn công có thể nhập SQL database code vào một biểu mẫu yêu cầu username ở dạng plaintext. Nếu việc điền các biểu mẫu đó không được bảo mật đúng cách, điều này sẽ dẫn đến việc SQL code đó được thực thi. Kiểu tấn công này rất đơn giản và dễ dàng, bất cứ ai truy cập được vào Internet đều có thể thực hiện – các tập lệnh SQLi luôn có sẵn để download hoặc rất dễ dàng mua được. Chính vì vậy, mặc dù đã được nghiên cứu và tìm hiểu phương án đối phó từ cách đây hơn 2 thập kỷ, lỗi này vẫn hết sức phổ biến trong thời điểm hiện nay.
Buffer overflow
Buffer overflows (tràn bộ nhớ đệm) là một trong những lỗ hổng phổ biến nhất, lỗi này xảy ra khi một tiến trình lưu dữ liệu vượt ra ngoài giới hạn của bộ nhớ đệm có chiều dài cố định. Các ngôn ngữ ứng dụng Web phổ biến như Java có cơ chế bảo vệ lỗ hổng bảo mật này. Tuy nhiên nhiều ứng dụng mobile được viết bằng C/C++, họ ngôn ngữ rất dễ bị khai thác bởi buffer overflow lỗi tính toán kích thước bộ nhớ đệm không chính xác.
Directory traversal
Còn được gọi là “path traversal”, loại lỗ hổng bảo mật này cho phép những kẻ tấn công có quyền truy cập vào các tệp và thư mục bị giới hạn, thực thi lệnh bên ngoài chỉ mục gốc của máy chủ web. Kẻ tấn công chỉ cần gửi một yêu cầu tệp hoặc thư mục với chuỗi ký tự “../” (do đó có tên gọi khác là “dot dot slash attack”), trỏ đến thư mục mẹ. Lỗ hổng phần mềm này đặc biệt nguy hiểm khi kết hợp với các lỗ hổng khác, chẳng hạn như lưu trữ dữ liệu nhạy cảm một cách không an toàn.
Lộ dữ liệu nhạy cảm
Việc mất kết nối chỉ đe dọa khách hàng tạm thời, thế nhưng việc mất dữ liệu nhạy cảm sẽ gây hậu quả nghiêm trọng ảnh hưởng đến doanh nghiệp trong khoảng thời gian dài. Việc tiếp xúc dữ liệu nhạy cảm xảy ra khi các kiểm soát bảo mật, chẳng hạn như HTTPS không được thực hiện chính xác và để lại lỗ hổng, giúp tin tặc có thể ăn cắp thông tin tài khoản, mật khẩu, địa chỉ hay bất cứ thông tin có giá trị nào khác. Vì vậy, các ứng dụng cần đảm bảo truy cập được xác thực và dữ liệu đã được mã hóa mạnh mẽ.
Các vấn đề về thư viện, thành phần, và dependencies
Ngày nay, không ai viết code từ đầu hoàn toàn. Tất cả các codebase hiện đại đều chứa một số code hiện có, cho dù ở dạng frameworks, mô-đun độc lập, hoặc code được “mượn” từ các nguồn khác. Nhưng sự tiện lợi của việc tái sử dụng code lại đi kèm với các mối đe dọa: Các lỗ hổng bảo mật mới luôn được phát hiện. Các tác nhân độc hại có thể tiếp quản các thành phần đáng tin cậy. Và nếu bạn không biết những gì có trong cơ sở mã của mình, bạn không thể theo dõi hoặc sửa chữa nó.
Các vấn đề về web services và APIs
API ngày càng trở nên phổ biến trong thế giới ứng dụng ngày nay bởi các ứng dụng thường được viết bằng JavaScript và sử dụng API để lấy dữ liệu. Do đó, API đóng vai trò như một liên kết giữa các nền tảng khách hàng phức tạp và một loạt các ứng dụng hay dịch vụ web. Tuy nhiên, bản thân các API chứa các lỗ hổng khiến ứng dụng của chúng ta rất dễ bị tấn công. Các tác nhân đe dọa có thể truy cập trực tiếp vào dữ liệu nhạy cảm thông qua các dịch vụ và API không an toàn. Các tổ chức cần phải đảm bảo triển khai các lệnh gọi API và dịch vụ web một cách an toàn trong các ứng dụng dành cho thiết bị di động của họ. Nếu không, các ứng dụng đó sẽ trở thành một giao diện khác mà kẻ tấn công có thể truy cập vào hệ thống của họ.
Cross-site scripting (XSS)
Cross-site scripting là một lỗ hổng thường thấy trong các ứng dụng web. XSS cho phép tin tặc đưa các kịch bản phía máy khách vào các trang web công cộng và trong nhiều trường hợp, tin tặc có thể sử dụng các công cụ kiểm soát truy cập của họ. Các cuộc tấn công XSS cũng có thể xảy ra trong các ứng dụng di động nếu chúng hiển thị các trang web, chẳng hạn như trang FAQ và trang Help. Các ứng dụng cho phép người dùng nhập dữ liệu vào mà không có toàn quyền kiểm soát dữ liệu ra có nguy cơ bị tấn công XSS rất cao. Một cuộc tấn công XSS thành công có thể gây thiệt hại nghiêm trọng cho các trang web và có khả năng kéo người dùng vào các trang web khác. CWE/SANS Top 25 mô tả đây là “một trong những lỗ hổng phổ biến và nguy hiểm nhất trong các ứng dụng web”.
Các vấn đề về đăng nhập
Nếu bạn có thể kiểm soát quyền truy cập vào các file log của mình (ví dụ: các file trên web server), thì việc quản lý chúng kỹ lưỡng là một lợi thế. File log có thể giúp bạn phát hiện một cuộc tấn công và xác định phạm vi cũng như thiệt hại tiềm ẩn của nó. Nhưng đôi khi bạn không kiểm soát quyền truy cập vào các file log (ví dụ: các file trên thiết bị của người dùng của bạn). Tất cả thông tin giúp bạn theo dõi các lỗ hổng bảo mật cũng có thể giúp kẻ tấn công làm điều đó — đặc biệt nếu thông tin đó không được mã hóa.
Missing or broken authentication
Khi các chức năng của ứng dụng được thực hiện không chính xác, tin tặc có thể dễ dàng xâm nhập, ăn cắp thông tin tài khoản, mật khẩu và khai thác các lỗ hổng khác bằng cách sử dụng các chứng chỉ đã đánh cắp. Tài khoản mỗi người dùng cá nhân nên là duy nhất, không bị trùng lặp dưới bất kì hình thức nào. Nếu không có bất kì sự quản lý cần thiết nào thì tin tặc có thể lẻn vào, ngụy trang thành người dùng để ăn cắp thông tin tài khoản, mật khẩu và sử dụng cho những lần truy cập sau này.
Broken Acces Control
Khi người dùng bị hạn chế kiểm soát truy cập, tin tặc có thể khai thác và truy cập các chức năng hoặc dữ liệu trái phép. Kiểm soát truy cập nhằm mục đích kiểm soát người dùng được ủy quyền được phép hay không được phép làm gì trong một ứng dụng và để thiết lập quyền kiểm soát truy cập một cách hợp lí, ứng dụng phải đảm bảo rằng nó đang nghiêm túc thực hiện kiểm tra ủy quyền và xác thực hợp lệ để xác định người dùng được đặc quyền, thực tế là những người dùng Internet ngẫu nhiên. Nguyên nhân lỗi kiểm soát truy cập xảy ra có thể là do các nhà phát triển thường bị bế tắc trong việc kiểm soát truy cập phù hợp với các quy tắc đặt ra
Liên hệ với ASIC Technologies để được tư vấn về các giải pháp phòng chống các lỗ hổng bảo mật web trên