Khi thử nghiệm giao diện chat AI, tôi đã phát hiện ra một lỗi nghiêm trọng khiến frontend rơi vào vòng lặp vô hạn trong các trường hợp cụ thể. Dưới đây là chi tiết cách lỗi hoạt động, cách tôi phát hiện ra nó và cách tái tạo vấn đề.
Cách tôi phát hiện bug?
Thiết lập đầu vào:
- Tôi gửi một đoạn văn bản cực dài (hàng nghìn ký tự), bao gồm mã nhị phân và dữ liệu ELF (Executable and Linkable Format) vào giao diện chat AI.
Đoạn dữ liệu này được sử dụng để kiểm tra khả năng xử lý dữ liệu lớn và phức tạp của hệ thống.
Hành vi phản hồi:
- AI mất rất nhiều thời gian để trả lời. Sử dụng công cụ DevTools trên trình duyệt, tôi theo dõi các yêu cầu gửi đi và phản hồi nhận được.
Tôi nhận thấy khi hệ thống đạt giới hạn rate-limit (trả về lỗi HTTP 429), nội dung phản hồi giữ nguyên nhưng lặp lại liên tục.
Khai thác lỗi:
- Tôi sử dụng DevTools để chỉnh sửa phản hồi nhận được, buộc nó trả về cùng một nội dung lặp đi lặp lại.
Điều này khiến frontend tải đi tải lại cùng một câu trả lời vô hạn, làm tiêu tốn tài nguyên trình duyệt và máy chủ không cần thiết.
Code Example: Mô phỏng lỗi
(function simulateInfiniteLoop() {
const targetEndpoint = “https://ai-chat.example.com/api/chat”;
const payload = {
message: “0”.repeat(50000) + “ELF data…”, // Example large payload.
};
fetch(targetEndpoint, {
method: “POST”,
headers: {
“Content-Type”: “application/json”,
},
body: JSON.stringify(payload),
})
.then((response) => response.json())
.then((data) => {
console.log(“Response received:”, data);
const repetitiveResponse = {
…data,
message: “Repeated response”.repeat(100),
};
console.log(“Simulated repetitive response:”, repetitiveResponse);
setInterval(() => {
console.log(“Frontend reloading:”, repetitiveResponse.message);
}, 1000); // Repeat every second
})
.catch((error) => {
console.error(“Error:”, error);
});
})();
Tác động của lỗi:
- Frontend bị quá tải: Ứng dụng liên tục xử lý các phản hồi lặp, tiêu tốn tài nguyên trình duyệt không cần thiết.
- Server bị quá tải: Nếu bị khai thác ác ý, lỗi này có thể gây ra lưu lượng lớn không cần thiết, làm giảm hiệu suất của hệ thống.
Lưu ý quan trọng
Bài viết này được chia sẻ nhằm mục đích giáo dục, giúp nâng cao nhận thức về một lỗi tiềm ẩn. Tuyệt đối không được phép sử dụng khai thác này để tấn công bất kỳ website hoặc ứng dụng nào mà không có sự cho phép rõ ràng từ chủ sở hữu hoặc trong môi trường kiểm thử/lab học tập. Việc lạm dụng các lỗi này là trái pháp luật và thiếu đạo đức. Hãy luôn tuân thủ nguyên tắc tiết lộ lỗ hổng có trách nhiệm khi báo cáo các vấn đề bảo mật.