OWASP Top 10 là danh sách được tham chiếu rộng rãi nhất về các rủi ro bảo mật ứng dụng web, do Open Worldwide Application Security Project (OWASP) , một tổ chức phi lợi nhuận uy tín, công bố. Danh sách này được viết cho các chuyên gia bảo mật, nhưng những rủi ro mà nó mô tả lại có hậu quả kinh doanh trực tiếp: rò rỉ dữ liệu, ngừng hoạt động, tiền phạt và mất niềm tin. Hướng dẫn này giải thích từng danh mục bằng ngôn ngữ dễ hiểu để bạn có thể đặt đúng câu hỏi về chính các ứng dụng của mình.
OWASP sửa đổi danh sách vài năm một lần khi các mẫu hình tấn công thay đổi. Các danh mục dưới đây phản ánh bản sửa đổi đã được khẳng định năm 2021, vốn vẫn là tài liệu tham chiếu tiêu chuẩn cho hầu hết các nhóm; các rủi ro cốt lõi vẫn ổn định ngay cả khi thứ hạng của chúng thay đổi.
Tóm tắt nhanh
- OWASP Top 10 là danh sách tiêu chuẩn của ngành về các rủi ro bảo mật nghiêm trọng nhất đối với ứng dụng web
- Các danh mục lớn nhất liên quan đến kiểm soát truy cập, mã hóa yếu, lỗi injection và các quyết định thiết kế thiếu an toàn được đưa ra sớm
- Hầu hết những rủi ro này đều quy về một vài nguyên nhân gốc rễ: thiếu kiểm tra, cấu hình sai, thành phần lỗi thời và giám sát chưa đầy đủ
- Bạn không cần phải am hiểu kỹ thuật để buộc nhóm hoặc nhà cung cấp của mình chịu trách nhiệm xử lý từng rủi ro
1. Kiểm soát truy cập bị lỗi (Broken Access Control)
Nghĩa là gì: Người dùng có thể làm hoặc xem những thứ mà họ không được phép, ví dụ như xem dữ liệu của khách hàng khác bằng cách thay đổi một ID trong URL, hoặc truy cập một chức năng quản trị dù không phải là quản trị viên.
Vì sao quan trọng: Đây luôn là một trong những rủi ro phổ biến và gây thiệt hại nhất. Nó dẫn thẳng đến lộ dữ liệu và các hành động trái phép.
Hãy hỏi nhóm của bạn: Quyền hạn có được áp đặt trên máy chủ cho mọi yêu cầu, chứ không chỉ ẩn đi trong giao diện, hay không?
2. Lỗi mã hóa (Cryptographic Failures)
Nghĩa là gì: Dữ liệu nhạy cảm (mật khẩu, thông tin thanh toán, thông tin cá nhân) không được bảo vệ đúng cách, ví dụ không được mã hóa khi truyền hoặc khi lưu trữ, hoặc được bảo vệ bằng thuật toán yếu hay lỗi thời.
Vì sao quan trọng: Dữ liệu nhạy cảm bị lộ sẽ gây ra vi phạm và, theo GDPR, có thể dẫn đến tiền phạt cùng nghĩa vụ thông báo bắt buộc.
Hãy hỏi nhóm của bạn: Toàn bộ lưu lượng có đi qua HTTPS không, và dữ liệu nhạy cảm có được mã hóa khi lưu trữ bằng thuật toán hiện đại không?
3. Injection
Nghĩa là gì: Dữ liệu đầu vào không đáng tin được xử lý như một câu lệnh, cho phép kẻ tấn công thao túng cơ sở dữ liệu (SQL injection) hoặc thực thi những thao tác ngoài ý muốn. Cross-site scripting (XSS) cũng thuộc nhóm này.
Vì sao quan trọng: Injection có thể làm lộ hoặc phá hủy toàn bộ cơ sở dữ liệu và chiếm quyền phiên làm việc của người dùng.
Hãy hỏi nhóm của bạn: Chúng ta có dùng truy vấn tham số hóa và kiểm tra, mã hóa tất cả dữ liệu người dùng nhập vào không?
4. Thiết kế thiếu an toàn (Insecure Design)
Nghĩa là gì: Điểm yếu bảo mật nằm ở chính thiết kế, chứ không chỉ ở mã nguồn, ví dụ một quy trình đặt lại mật khẩu có thể bị lạm dụng, hoặc một trang thanh toán tin vào mức giá do trình duyệt gửi lên.
Vì sao quan trọng: Lỗi thiết kế không thể vá bỏ về sau; chúng đòi hỏi phải suy nghĩ lại về tính năng. Bảo mật phải được cân nhắc ngay từ đầu.
Hãy hỏi nhóm của bạn: Chúng ta có mô hình hóa mối đe dọa cho các tính năng quan trọng trước khi xây dựng chúng không?
5. Cấu hình bảo mật sai (Security Misconfiguration)
Nghĩa là gì: Cài đặt mặc định thiếu an toàn, các tính năng không cần thiết vẫn được bật, thông báo lỗi quá chi tiết, hoặc thiếu các header bảo mật.
Vì sao quan trọng: Cấu hình sai cực kỳ phổ biến và thường rất dễ để kẻ tấn công tìm ra và khai thác.
Hãy hỏi nhóm của bạn: Các tài khoản mặc định đã bị xóa, tính năng không dùng đã bị tắt và các header bảo mật đã được thiết lập chưa?
6. Thành phần dễ bị tấn công và lỗi thời (Vulnerable and Outdated Components)
Nghĩa là gì: Ứng dụng dựa vào các thư viện, framework hoặc plugin của bên thứ ba có lỗ hổng đã biết nhưng chưa được cập nhật.
Vì sao quan trọng: Kẻ tấn công quét trên diện rộng để tìm các thành phần dễ bị tấn công đã biết. Nhiều vụ vi phạm lớn bắt nguồn từ một phần phụ thuộc chưa được vá.
Hãy hỏi nhóm của bạn: Chúng ta có theo dõi các phần phụ thuộc và cập nhật kịp thời khi lỗ hổng được công bố không?
7. Lỗi định danh và xác thực (Identification and Authentication Failures)
Nghĩa là gì: Hệ thống đăng nhập yếu: chính sách mật khẩu kém, không có biện pháp chống dò mật khẩu (brute force), quản lý phiên yếu, hoặc thiếu xác thực đa yếu tố.
Vì sao quan trọng: Tài khoản bị xâm phạm là con đường trực tiếp dẫn đến dữ liệu và chức năng.
Hãy hỏi nhóm của bạn: Chúng ta có cung cấp xác thực đa yếu tố (MFA) và bảo vệ trước credential stuffing cùng tấn công brute force không?
8. Lỗi toàn vẹn phần mềm và dữ liệu (Software and Data Integrity Failures)
Nghĩa là gì: Tin tưởng mã, bản cập nhật hoặc dữ liệu từ những nguồn chưa được xác minh, ví dụ một cơ chế cập nhật phần mềm thiếu an toàn hoặc một quy trình build bị xâm phạm (rủi ro chuỗi cung ứng).
Vì sao quan trọng: Các cuộc tấn công chuỗi cung ứng đang gia tăng và có thể xâm phạm nhiều nạn nhân cùng lúc thông qua một kênh tin cậy duy nhất.
Hãy hỏi nhóm của bạn: Chúng ta có xác minh tính toàn vẹn của bản cập nhật và phần phụ thuộc, đồng thời bảo vệ quy trình build và triển khai không?
9. Lỗi ghi nhật ký và giám sát bảo mật (Security Logging and Monitoring Failures)
Nghĩa là gì: Không ghi lại các sự kiện liên quan đến bảo mật, hoặc không theo dõi chúng, khiến các cuộc tấn công không bị phát hiện trong thời gian dài.
Vì sao quan trọng: Bạn không thể phản ứng với thứ mình không thấy. Giám sát kém chính là lý do các vụ vi phạm thường không bị phát hiện trong nhiều tháng.
Hãy hỏi nhóm của bạn: Chúng ta có ghi nhật ký các sự kiện bảo mật và cảnh báo khi có hoạt động đáng ngờ không?
10. Giả mạo yêu cầu phía máy chủ (SSRF)
Nghĩa là gì: Kẻ tấn công đánh lừa máy chủ gửi yêu cầu đến những hệ thống mà nó không nên tiếp cận, có thể chạm tới các dịch vụ nội bộ vốn không được phép công khai.
Vì sao quan trọng: SSRF có thể làm lộ hạ tầng nội bộ và siêu dữ liệu đám mây, và đã xuất hiện trong các vụ vi phạm nghiêm trọng.
Hãy hỏi nhóm của bạn: Chúng ta có kiểm tra và hạn chế những đích đến mà máy chủ được phép gọi không?
Những điểm chính
- OWASP Top 10 là tài liệu tham chiếu tiêu chuẩn về rủi ro bảo mật ứng dụng web; hầu hết các mục đều quy về việc thiếu kiểm tra, cấu hình sai, thành phần lỗi thời và giám sát yếu.
- Kiểm soát truy cập, mã hóa, injection và thiết kế thiếu an toàn là các danh mục có tác động lớn nhất.
- Bạn không cần am hiểu kỹ thuật để buộc nhóm hoặc nhà cung cấp chịu trách nhiệm với từng rủi ro; các câu hỏi ở trên là điểm khởi đầu tốt.
- Cách đáng tin cậy nhất để biết bạn đang ở đâu là một cuộc kiểm thử độc lập.
Kiểm thử trang web của bạn theo OWASP Top 10
Những câu hỏi ở trên mở ra cuộc trò chuyện; một cuộc kiểm thử chuyên nghiệp mới đưa ra câu trả lời. Kiểm thử bảo mật ứng dụng kết hợp phân tích mã tĩnh, kiểm thử động khi chạy, đánh giá phần phụ thuộc và chuỗi cung ứng, cùng việc rà soát xác thực và mã hóa để tìm ra những rủi ro này trong chính ứng dụng thực tế của bạn, với các phát hiện được xếp hạng theo mức độ rủi ro và hướng dẫn khắc phục. Để có góc nhìn rộng hơn về việc bảo vệ một trang web đang hoạt động, hãy xem hướng dẫn kiểm toán bảo mật trang web cho doanh nghiệp tại Vương quốc Anh .
Câu hỏi thường gặp (FAQ)
OWASP Top 10 là gì? Đó là một danh sách được cập nhật thường xuyên về mười rủi ro bảo mật ứng dụng web nghiêm trọng nhất, do Open Worldwide Application Security Project (OWASP) công bố. Đây là tài liệu tham chiếu tiêu chuẩn của ngành để sắp xếp thứ tự ưu tiên cho công việc bảo mật ứng dụng.
OWASP Top 10 có phải là một tiêu chuẩn bảo mật đầy đủ không? Không. Đây là một tài liệu nâng cao nhận thức và sắp xếp ưu tiên, bao quát những rủi ro nghiêm trọng nhất, chứ không phải một danh sách kiểm tra toàn diện. Hãy dùng nó làm điểm khởi đầu, song song với kiểm thử sâu hơn và các thực hành phát triển an toàn.
OWASP Top 10 được cập nhật bao lâu một lần? OWASP sửa đổi nó vài năm một lần khi dữ liệu và mẫu hình tấn công thay đổi. Các danh mục tiến hóa và được xếp hạng lại, nhưng những rủi ro cốt lõi vẫn tương đối ổn định, nên các khái niệm vẫn còn giá trị giữa các lần sửa đổi.
Rủi ro OWASP nào nguy hiểm nhất? Điều này thay đổi tùy theo ứng dụng, nhưng kiểm soát truy cập bị lỗi và injection trong lịch sử luôn nằm trong số phổ biến và gây thiệt hại nhất. Thứ tự ưu tiên phù hợp với bạn phụ thuộc vào cách ứng dụng cụ thể của bạn được xây dựng và mức độ phơi bày ra ngoài.
Làm sao để biết ứng dụng của tôi có bị ảnh hưởng không? Cách đáng tin cậy duy nhất là kiểm thử: phân tích tĩnh, kiểm thử động và đánh giá phần phụ thuộc dựa trên chính mã nguồn thực tế và ứng dụng đang chạy của bạn. Một cuộc kiểm thử bảo mật ứng dụng chuyên nghiệp sẽ ánh xạ các rủi ro của bạn vào những danh mục này kèm theo các bản vá được sắp xếp theo mức ưu tiên.
Bình luận