Bảo mật ứng dụng web
Bảo mật ứng dụng web giải quyết các lỗ hổng đặc trưng của phần mềm web — tiêm mã (injection), tấn công kịch bản liên trang (cross-site scripting), xác thực bị lỗi và các lỗ hổng kiểm soát truy cập — vốn là một trong những lỗ hổng phổ biến và có tác động lớn nhất trong các hệ thống hiện đại.
Definition
Bảo mật ứng dụng web là thực tiễn bảo vệ phần mềm dựa trên web và người dùng của nó khỏi các cuộc tấn công khai thác cách ứng dụng xử lý đầu vào, phiên, xác thực và kiểm soát truy cập, cũng như các điểm yếu trong mô hình bảo mật trình duyệt.
Scope
Chủ đề này bao gồm mô hình mối đe dọa của các ứng dụng web (máy khách không đáng tin cậy, mạng độc hại, máy chủ đa người thuê) và các lớp lỗ hổng đặc trưng của nó: tiêm mã (SQL và lệnh), tấn công kịch bản liên trang, giả mạo yêu cầu liên trang (cross-site request forgery), kiểm soát truy cập và xác thực bị lỗi, và giải mã hóa không an toàn. Nó bao gồm mô hình bảo mật trình duyệt (chính sách cùng nguồn gốc, chính sách bảo mật nội dung) và các biện pháp phòng thủ tiêu chuẩn. Nó không bao gồm việc khai thác bộ nhớ cấp thấp và quy trình phát triển an toàn chung, được xử lý trong các chủ đề liên quan.
Core questions
- Tại sao việc trộn đầu vào không đáng tin cậy với mã hoặc truy vấn lại tạo ra các lỗ hổng tiêm mã?
- Tấn công kịch bản liên trang và giả mạo yêu cầu liên trang tấn công người dùng của một trang web như thế nào?
- Chính sách cùng nguồn gốc của trình duyệt hạn chế những gì mã web có thể làm như thế nào?
- Xác thực, phiên và kiểm soát truy cập thường bị lỗi trong các ứng dụng web như thế nào?
- Những biện pháp phòng thủ tiêu chuẩn nào ngăn chặn các lỗ hổng web phổ biến nhất?
Key concepts
- Tiêm mã SQL và lệnh
- Tấn công kịch bản liên trang (XSS)
- Giả mạo yêu cầu liên trang (CSRF)
- Kiểm soát truy cập bị lỗi
- Xác thực và quản lý phiên bị lỗi
- Chính sách cùng nguồn gốc
- Chính sách bảo mật nội dung
- Truy vấn tham số hóa
- OWASP Top Ten
Key theories
- Tiêm mã và sự nhầm lẫn mã/dữ liệu
- Các lỗ hổng tiêm mã (tiêm mã SQL, tiêm mã lệnh) phát sinh khi đầu vào không đáng tin cậy được hiểu là mã; biện pháp phòng thủ là giữ dữ liệu và mã riêng biệt, chủ yếu thông qua các truy vấn tham số hóa và mã hóa đầu ra nghiêm ngặt.
- Mô hình bảo mật trình duyệt và các cuộc tấn công phía máy khách
- Chính sách cùng nguồn gốc cô lập nội dung từ các nguồn gốc khác nhau, nhưng tấn công kịch bản liên trang chèn kịch bản của kẻ tấn công vào một trang đáng tin cậy và giả mạo yêu cầu liên trang lạm dụng phiên đã xác thực của người dùng; các biện pháp phòng thủ bao gồm mã hóa đầu ra, chính sách bảo mật nội dung và mã thông báo chống CSRF.
Mechanisms
Tiêm mã SQL xảy ra khi đầu vào của người dùng được nối vào một truy vấn, cho phép kẻ tấn công thay đổi logic của nó; các truy vấn tham số hóa khắc phục điều này bằng cách ràng buộc đầu vào dưới dạng dữ liệu. Tấn công kịch bản liên trang chèn kịch bản vào một trang mà trình duyệt của người dùng khác sau đó thực thi, được giảm thiểu bằng cách mã hóa đầu ra nhận biết ngữ cảnh và chính sách bảo mật nội dung. Giả mạo yêu cầu liên trang lừa một trình duyệt đã xác thực thực hiện các yêu cầu không mong muốn, được bảo vệ bằng mã thông báo chống CSRF và cookie SameSite. Các lỗ hổng kiểm soát truy cập phát sinh khi máy chủ không kiểm tra ủy quyền trên mỗi yêu cầu.
Clinical relevance
Các lỗ hổng ứng dụng web gây ra nhiều vụ vi phạm dữ liệu lớn nhất: tiêm mã SQL và kiểm soát truy cập bị lỗi đã làm lộ hàng tỷ bản ghi, và tấn công kịch bản liên trang thường xuyên làm tổn hại tài khoản người dùng. Bởi vì gần như tất cả các dịch vụ đều có giao diện web, bảo mật web ảnh hưởng trực tiếp đến thương mại điện tử, ngân hàng, cổng thông tin y tế và các hệ thống chính phủ, và nó là nền tảng cho kiểm thử xâm nhập, các chương trình tiền thưởng lỗi và các chế độ tuân thủ như PCI-DSS.
Evidence & guidelines
OWASP Top Ten là tài liệu tham khảo thực tế về các rủi ro web phổ biến, được bổ sung bởi Tiêu chuẩn xác minh bảo mật ứng dụng OWASP (ASVS) và các bảng gian lận. Các biện pháp phòng thủ do trình duyệt thực thi (Chính sách bảo mật nội dung, cookie SameSite, Tính toàn vẹn tài nguyên phụ) được chuẩn hóa bởi W3C và WHATWG. Các khung tuân thủ như PCI-DSS bắt buộc phải có các biện pháp kiểm soát bảo mật web cho các hệ thống xử lý dữ liệu thanh toán.
History
Bảo mật ứng dụng web phát triển cùng với web động vào cuối những năm 1990 và 2000, khi cơ sở dữ liệu và đầu vào của người dùng tạo ra các lỗ hổng tiêm mã và kịch bản. OWASP Top Ten (phát hành lần đầu năm 2003) đã chuẩn hóa nhận thức về các rủi ro quan trọng nhất. Các biện pháp phòng thủ phía trình duyệt đã phát triển thông qua chính sách cùng nguồn gốc và sau đó là Chính sách bảo mật nội dung, trong khi các vụ vi phạm mang tính bước ngoặt đã liên tục chứng minh chi phí thực tế của tiêm mã SQL và kiểm soát truy cập bị lỗi.
Key figures
- Dafydd Stuttard
- Ross Anderson
- Jeremiah Grossman
- Michal Zalewski
Related topics
Seminal works
- stuttard2011
- owasp2021
- anderson2020
Frequently asked questions
- Biện pháp phòng thủ hiệu quả nhất chống lại tiêm mã SQL là gì?
- Sử dụng các truy vấn tham số hóa (prepared statements), gửi cấu trúc SQL và các giá trị do người dùng cung cấp một cách riêng biệt để đầu vào không bao giờ có thể được hiểu là một phần của truy vấn. Điều này giữ cho mã và dữ liệu riêng biệt và vô hiệu hóa lớp tấn công.
- Tấn công kịch bản liên trang khác với tiêm mã SQL như thế nào?
- Cả hai đều bắt nguồn từ đầu vào không đáng tin cậy, nhưng tiêm mã SQL nhắm mục tiêu vào cơ sở dữ liệu của máy chủ, trong khi tấn công kịch bản liên trang chèn kịch bản độc hại chạy trong trình duyệt của người dùng khác trong trang web đáng tin cậy. SQLi đánh cắp hoặc thay đổi dữ liệu máy chủ; XSS chiếm quyền điều khiển các phiên và hành động của người dùng.