Lỗ hổng tình huống tương tranh và giải pháp phòng ngừa cho ứng dụng web

14:32 | 28/05/2025
TS. Ngô Hải Anh (Viện Công nghệ thông tin - Viện Hàn lâm Khoa học và Công nghệ Việt Nam)

“Tình huống tương tranh” hoặc “va chạm” (race condition) là một loại lỗ hổng phổ biến có liên quan đến lỗi xử lý logic của các ứng dụng web. Chúng xảy ra khi các trang web xử lý các yêu cầu đồng thời mà không có biện pháp bảo vệ đầy đủ. Điều này có thể dẫn đến nhiều luồng riêng biệt tương tác cùng một lúc với cùng một dữ liệu, dẫn đến những ảnh hưởng không mong muốn trong ứng dụng. Bài viết sau đây sẽ giới thiệu về các cách thức tấn công thông qua lỗ hổng này từ đó có thể phát hiện và đưa ra các giải pháp để phòng tránh.  

CÁCH KHAI THÁC LỖ HỔNG TÌNH HUỐNG TƯƠNG TRANH Một cuộc tấn công thông qua lỗ hổng tình huống tương tranh sẽ sử dụng các yêu cầu đã được tính toán thời gian cẩn thận để gây ra sự va chạm một cách cố tình và khai thác hành vi không mong muốn cho mục đích gây hại. Điển hình trong thương mại điện tử, tin tặc có thể sử dụng nhiều lần mua hàng giảm giả chỉ với một thẻ quà tặng dùng một lần. Khoảng thời gian có thể xảy ra một tương tranh được gọi là “cửa sổ tương tranh” (race window), ví dụ có thể là một phần của một giây giữa hai tương tác với cơ sở dữ liệu. Giống như các lỗi logic khác, mức độ tác động của điều kiện tương tranh phụ thuộc rất nhiều vào ứng dụng và chức năng cụ thể của nó. Loại tình huống tương tranh phổ biến nhất là “vượt quá giới hạn chạy” (limit overrun), loại tương tranh này cho phép chạy vượt quá giới hạn của logic nghiệp vụ của một ứng dụng. Ví dụ, một cửa hàng trực tuyến cho phép người dùng nhập mã khuyến mại trong quá trình thanh toán để được giảm giá một lần cho đơn hàng của người dùng đó. Về mặt logic nghiệp vụ, để áp dụng mức giảm giá này, ứng dụng có thể thực hiện các bước sau: Bước 1: Kiểm tra xem người dùng đã sử dụng mã này chưa. Bước 2: Áp dụng mức giảm giá vào tổng đơn hàng. Bước 3: Cập nhật bản ghi trong cơ sở dữ liệu để ghi nhận thực tế là người dùng đã sử dụng mã này. Nếu người dùng cố gắng sử dụng lại mã này cho đơn hàng sau đó, các kiểm tra ban đầu đ...

Để lại bình luận