Việc kiểm tra các lỗi logic nghiệp vụ trong một ứng dụng web động đa chức năng đòi hỏi phải suy nghĩ theo các phương pháp độc đáo. Nếu cơ chế xác thực của ứng dụng được phát triển với mục đích thực hiện các bước 1, 2, 3 theo thứ tự cụ thể đó để xác thực người dùng. Điều gì xảy ra nếu người dùng chuyển thẳng từ bước 1 sang bước 3? Trong ví dụ đơn giản này, ứng dụng có cung cấp quyền truy cập bằng cách mở không; từ chối quyền truy cập, hay chỉ gặp lỗi với thông báo 500?
Các bài viết liên quan:
Có rất nhiều ví dụ có thể được đưa ra, nhưng một bài học liên tục là “suy nghĩ bên ngoài sự khôn ngoan thông thường”. Loại lỗ hổng này không thể được phát hiện bằng máy quét lỗ hổng và dựa vào kỹ năng và sự sáng tạo của người kiểm tra thâm nhập. Ngoài ra, loại lỗ hổng này thường là một trong những lỗ hổng khó phát hiện nhất và thường dành riêng cho ứng dụng nhưng đồng thời, thường là một trong những lỗ hổng có hại nhất cho ứng dụng, nếu bị khai thác.
Việc phân loại các sai sót logic nghiệp vụ vẫn chưa được nghiên cứu; mặc dù việc khai thác các lỗ hổng kinh doanh thường xuyên xảy ra trong các hệ thống trong thế giới thực và nhiều nhà nghiên cứu lỗ hổng ứng dụng đã điều tra chúng. Trọng tâm lớn nhất là trong các ứng dụng web. Có tranh luận trong cộng đồng về việc liệu những vấn đề này đại diện cho các khái niệm đặc biệt mới, hay chúng là biến thể của các nguyên tắc nổi tiếng.
Kiểm tra lỗi logic nghiệp vụ tương tự như các loại kiểm tra được sử dụng bởi người kiểm tra chức năng tập trung vào kiểm tra trạng thái logic hoặc hữu hạn. Các loại kiểm tra này yêu cầu các chuyên gia bảo mật phải suy nghĩ khác đi một chút, phát triển các trường hợp lạm dụng và lạm dụng cũng như sử dụng nhiều kỹ thuật kiểm tra được chấp nhận bởi những người kiểm tra chức năng. Tự động hóa các trường hợp lạm dụng logic nghiệp vụ là không thể và vẫn là một nghệ thuật thủ công dựa vào kỹ năng của người kiểm tra và kiến thức của họ về quy trình kinh doanh hoàn chỉnh và các quy tắc của nó.
Xem thêm Mô hình Domain Logic, cách tổ chức Domain logic
Business Limits và Restrictions
Xem xét các quy tắc cho chức năng kinh doanh đang được ứng dụng cung cấp. Có bất kỳ giới hạn hoặc hạn chế nào đối với hành vi của mọi người không? Sau đó, xem xét liệu ứng dụng có thực thi các quy tắc đó hay không. Nhìn chung, khá dễ dàng để xác định các trường hợp kiểm tra và phân tích để xác minh ứng dụng nếu bạn đã quen thuộc với doanh nghiệp. Nếu bạn là người thử nghiệm của bên thứ ba, thì bạn sẽ phải sử dụng ý thức chung của mình và hỏi doanh nghiệp xem ứng dụng có nên cho phép các hoạt động khác nhau hay không.
Đôi khi, trong các ứng dụng rất phức tạp, ban đầu người thử nghiệm sẽ không hiểu đầy đủ về mọi khía cạnh của ứng dụng. Trong những tình huống này, tốt nhất là để khách hàng hướng dẫn người thử nghiệm qua ứng dụng, để họ có thể hiểu rõ hơn về các giới hạn và chức năng dự kiến của ứng dụng, trước khi thử nghiệm thực sự bắt đầu. Ngoài ra, việc liên hệ trực tiếp với nhà phát triển (nếu có thể) trong quá trình thử nghiệm sẽ giúp ích rất nhiều, nếu có bất kỳ câu hỏi nào liên quan đến chức năng của ứng dụng.
Xem thêm Page table trong hệ điều hành
Những thách thức của Kiểm tra Logic
Các công cụ tự động khó hiểu ngữ cảnh, do đó, việc thực hiện các loại kiểm tra này tùy thuộc vào một người. Hai ví dụ sau đây sẽ minh họa cách hiểu chức năng của ứng dụng, ý định của nhà phát triển và một số tư duy sáng tạo “độc lập” có thể phá vỡ logic của ứng dụng. Ví dụ đầu tiên bắt đầu với một thao tác tham số đơn giản, trong khi ví dụ thứ hai là một ví dụ thực tế về quy trình nhiều bước dẫn đến việc hoàn toàn lật đổ ứng dụng.
Ví dụ 1:
Giả sử một trang thương mại điện tử cho phép người dùng chọn các mặt hàng để mua, xem trang tóm tắt và sau đó đấu thầu bán hàng. Điều gì sẽ xảy ra nếu kẻ tấn công có thể quay lại trang tóm tắt, duy trì cùng một phiên hợp lệ của chúng và đưa ra chi phí thấp hơn cho một mặt hàng và hoàn tất giao dịch, sau đó thanh toán?
Ví dụ 2:
Việc nắm giữ / khóa tài nguyên và không cho người khác mua các mặt hàng này trực tuyến có thể dẫn đến việc những kẻ tấn công mua các mặt hàng với giá thấp hơn. Biện pháp đối phó với vấn đề này là thực hiện các cơ chế và thời gian chờ để đảm bảo rằng chỉ có thể tính đúng giá.
Ví dụ 3:
Điều gì sẽ xảy ra nếu người dùng có thể bắt đầu một giao dịch được liên kết với câu lạc bộ / tài khoản khách hàng thân thiết của họ và sau đó sau khi điểm đã được cộng vào tài khoản của họ, họ sẽ hủy giao dịch đó? Điểm / tín dụng có còn được áp dụng cho tài khoản của họ không?
Xem thêm Cause và Effect Graph trong Black box Testing
Công cụ
Mặc dù có các công cụ để kiểm tra và xác minh rằng các quy trình kinh doanh đang hoạt động chính xác trong các tình huống hợp lệ, những công cụ này không có khả năng phát hiện các lỗ hổng logic. Ví dụ: các công cụ không có phương tiện phát hiện nếu người dùng có thể phá vỡ quy trình kinh doanh thông qua việc chỉnh sửa thông số, dự đoán tên tài nguyên hoặc nâng cấp đặc quyền để truy cập tài nguyên bị hạn chế cũng như không có bất kỳ cơ chế nào để giúp người kiểm tra con người nghi ngờ trạng thái này sự việc.
Sau đây là một số loại công cụ phổ biến có thể hữu ích trong việc xác định các vấn đề logic nghiệp vụ.
Khi cài đặt các chương trình bổ trợ, bạn phải luôn cẩn thận xem xét các quyền mà họ yêu cầu và thói quen sử dụng trình duyệt của bạn.
Intercepting Proxy
Để quan sát các khối yêu cầu và phản hồi của lưu lượng truy cập HTTP
Web Browser Plug-ins
Để xem và sửa đổi các tiêu đề HTTP / HTTPS, đăng tham số và quan sát DOM của Trình duyệt
Các công cụ kiểm tra khác
- Web Developer toolbar
- HTTP Request Maker for Chrome
- HTTP Request Maker for Firefox
- Cookie Editor for Chrome
- Cookie Editor for Firefox
Xem thêm Mapping từ page table đến main memory trong hệ điều hành