1.Business logic vulnerabilities (Lổ hổng logic hay lỗi logic)
Business logic vulnerabilities là những sai sót trong thiết kế và triển khai ứng dụng cho phép kẻ tấn công thực hiện hành vi ngoài ý muốn.Điều này có khả năng cho phép kẻ tấn công thao túng chức năng hợp pháp để đạt được mục tiêu độc hại. Những sai sót này thường là kết quả của việc không lường trước được các trạng thái ứng dụng bất thường có thể xảy ra và do đó không xử lý chúng một cách an toàn. Các lỗ hổng logic thường không hiển thị đối với những người không tìm kiếm chúng một cách rõ ràng vì chúng thường không bị lộ ra khi sử dụng ứng dụng thông thường.
Tuy nhiên, kẻ tấn công có thể khai thác các hành vi kỳ quặc bằng cách tương tác với ứng dụng theo những cách mà nhà phát triển không bao giờ có ý định. Một trong những mục đích chính của logic nghiệp vụ là thực thi các quy tắc và ràng buộc đã được xác định khi thiết kế ứng dụng hoặc chức năng. Nói rộng hơn, các quy tắc nghiệp vụ chỉ ra cách ứng dụng sẽ phản ứng khi một tình huống nhất định xảy ra.
Điều này bao gồm việc ngăn người dùng làm những việc sẽ có tác động tiêu cực đến doanh nghiệp hoặc đơn giản là không có ý nghĩa. Các lỗ hổng trong logic có thể cho phép kẻ tấn công phá vỡ các quy tắc này. Ví dụ: họ có thể hoàn tất giao dịch mà không cần thực hiện quy trình mua hàng dự kiến.
Trong các trường hợp khác, việc xác thực dữ liệu do người dùng cung cấp bị hỏng hoặc không tồn tại có thể cho phép người dùng thực hiện các thay đổi tùy ý đối với các giá trị quan trọng trong giao dịch hoặc gửi thông tin đầu vào vô nghĩa. Bằng cách chuyển các giá trị không mong muốn vào logic phía máy chủ, kẻ tấn công có thể khiến ứng dụng thực hiện điều gì đó mà nó không được phép làm. Các lỗ hổng dựa trên logic có thể cực kỳ đa dạng và thường chỉ dành riêng cho ứng dụng cũng như chức năng cụ thể của nó.
Việc xác định chúng thường đòi hỏi một lượng kiến thức nhất định của con người, chẳng hạn như sự hiểu biết về lĩnh vực kinh doanh hoặc mục tiêu mà kẻ tấn công có thể có trong một bối cảnh nhất định. Điều này khiến chúng khó bị phát hiện bằng cách sử dụng máy quét lỗ hổng tự động. Do đó, các lỗ hổng logic là mục tiêu tuyệt vời cho những người săn lỗi và người kiểm tra thủ công nói chung. 2.Lỗ hổng logic phát sinh như thế nào?
Các lỗ hổng logic nghiệp vụ thường phát sinh do nhóm thiết kế và phát triển đưa ra các giả định sai lầm về cách người dùng sẽ tương tác với ứng dụng. Những giả định xấu này có thể dẫn đến việc xác thực đầu vào của người dùng không đầy đủ.
Ví dụ: nếu nhà phát triển cho rằng người dùng sẽ truyền dữ liệu độc quyền qua trình duyệt web thì ứng dụng có thể dựa hoàn toàn vào các biện pháp kiểm soát yếu kém phía máy khách để xác thực dữ liệu đầu vào. Những kẻ tấn công này có thể dễ dàng vượt qua chúng bằng cách sử dụng proxy chặn. Cuối cùng, điều này có nghĩa là khi kẻ tấn công đi chệch khỏi hành vi mong đợi của người dùng, ứng dụng sẽ không thực hiện các bước thích hợp để ngăn chặn điều này và sau đó không xử lý tình huống một cách an toàn. Các lỗi logic đặc biệt phổ biến trong các hệ thống quá phức tạp mà ngay cả nhóm phát triển cũng không hiểu hết. Để tránh các lỗi logic, các nhà phát triển cần hiểu toàn bộ ứng dụng. Điều này bao gồm việc nhận thức được cách các chức năng khác nhau có thể được kết hợp theo những cách không ngờ tới.
Các nhà phát triển làm việc trên các cơ sở mã lớn có thể không hiểu rõ về cách hoạt động của tất cả các lĩnh vực của ứng dụng. Ai đó làm việc trên một thành phần có thể đưa ra những giả định sai lầm về cách thức hoạt động của thành phần khác và kết quả là vô tình đưa ra những sai sót logic nghiêm trọng. Nếu các nhà phát triển không ghi lại rõ ràng bất kỳ giả định nào đang được đưa ra thì các loại lỗ hổng này rất dễ xâm nhập vào ứng dụng.
3.Tác động của lỗ hổng logic là gì?
Đôi khi, tác động của các lỗ hổng logic nghiệp vụ có thể khá nhỏ. Đây là một phạm trù rộng và tác động rất khác nhau. Tuy nhiên, bất kỳ hành vi ngoài ý muốn nào cũng có thể dẫn đến các cuộc tấn công có mức độ nghiêm trọng cao nếu kẻ tấn công có thể thao túng ứng dụng đúng cách. Vì lý do này, logic kỳ quặc lý tưởng nhất là nên được sửa ngay cả khi bạn không thể tự mình tìm ra cách khai thác nó. Luôn có rủi ro mà người khác có thể làm được. Về cơ bản, tác động của bất kỳ lỗ hổng logic nào đều phụ thuộc vào chức năng liên quan đến nó.
Ví dụ: nếu lỗ hổng nằm trong cơ chế xác thực, điều này có thể ảnh hưởng nghiêm trọng đến bảo mật tổng thể của bạn. Những kẻ tấn công có thể khai thác điều này để leo thang đặc quyền hoặc bỏ qua hoàn toàn xác thực, giành quyền truy cập vào dữ liệu và chức năng nhạy cảm. Điều này cũng làm lộ ra bề mặt tấn công gia tăng cho các hoạt động khai thác khác. Logic thiếu sót trong các giao dịch tài chính rõ ràng có thể dẫn đến tổn thất lớn cho doanh nghiệp do bị đánh cắp tiền, gian lận, v.v. Bạn cũng nên lưu ý rằng mặc dù các lỗi logic có thể không cho phép kẻ tấn công hưởng lợi trực tiếp nhưng chúng vẫn có thể cho phép một bên độc hại gây thiệt hại cho doanh nghiệp theo một cách nào đó.
4.Phòng ngừa
Cách ngăn chặn lỗ hổng logic nghiệp vụ Nói tóm lại, chìa khóa để ngăn chặn các lỗ hổng logic nghiệp vụ là:
- Đảm bảo nhà phát triển và người thử nghiệm hiểu miền mà ứng dụng phục vụ
- Tránh đưa ra các giả định ngầm về hành vi của người dùng hoặc hành vi của các phần khác của ứng dụng
Bạn nên xác định những giả định nào bạn đã đưa ra về trạng thái phía máy chủ và triển khai logic cần thiết để xác minh rằng những giả định này được đáp ứng. Điều này bao gồm việc đảm bảo rằng giá trị của bất kỳ đầu vào nào đều hợp lý trước khi tiếp tục. Điều quan trọng nữa là phải đảm bảo rằng cả nhà phát triển và người thử nghiệm đều có thể hiểu đầy đủ các giả định này và cách ứng dụng sẽ phản ứng trong các tình huống khác nhau. Điều này có thể giúp nhóm phát hiện ra các lỗi logic càng sớm càng tốt. Để tạo điều kiện thuận lợi cho việc này, nhóm phát triển nên tuân thủ các phương pháp hay nhất sau đây bất cứ khi nào có thể:
- Duy trì các tài liệu thiết kế và luồng dữ liệu rõ ràng cho tất cả các giao dịch và quy trình công việc, lưu ý mọi giả định được đưa ra ở mỗi giai đoạn.
- Viết mã càng rõ ràng càng tốt. Nếu khó hiểu điều gì sẽ xảy ra thì sẽ khó phát hiện ra bất kỳ sai sót logic nào. Lý tưởng nhất là mã được viết tốt không cần tài liệu để hiểu nó. Trong những trường hợp phức tạp không thể tránh khỏi, việc tạo ra tài liệu rõ ràng là rất quan trọng để đảm bảo rằng các nhà phát triển và người thử nghiệm khác biết những giả định nào đang được đưa ra và chính xác hành vi dự kiến là gì.
- Lưu ý mọi tham chiếu đến mã khác sử dụng từng thành phần. Hãy suy nghĩ về bất kỳ tác dụng phụ nào của các phần phụ thuộc này nếu một bên độc hại thao túng chúng theo cách bất thường.
Do tính chất tương đối độc đáo của nhiều sai sót logic, bạn có thể dễ dàng coi chúng là lỗi xảy ra một lần do lỗi của con người và tiếp tục. Tuy nhiên, như chúng tôi đã chứng minh, những sai sót này thường là kết quả của những hoạt động không tốt trong giai đoạn đầu xây dựng ứng dụng. Phân tích lý do tại sao lỗ hổng logic lại tồn tại ngay từ đầu và nhóm đã bỏ qua nó như thế nào, có thể giúp bạn phát hiện ra điểm yếu trong quy trình của mình. Bằng cách thực hiện những điều chỉnh nhỏ, bạn có thể tăng khả năng các sai sót tương tự sẽ bị loại bỏ ngay từ đầu hoặc được phát hiện sớm hơn trong quá trình phát triển.
