- Bài viết về CVE-2023-38545, một vấn đề bảo mật nghiêm trọng được phát hiện trong curl 8.4.0, được xem là lỗi bảo mật nghiêm trọng nhất của curl trong một thời gian dài
- Vấn đề là lỗi tràn heap, xảy ra do khiếm khuyết trong hàm kết nối tới proxy SOCKS5
- Lỗi này được đưa vào từ đầu năm 2020 khi hàm được chuyển từ lời gọi chặn sang máy trạng thái không chặn, nhằm cải thiện hiệu năng truyền tải song song quy mô lớn qua SOCKS5
- Khiếm khuyết nằm ở trạng thái INIT của máy trạng thái, nơi một biến cục bộ được thiết lập để quyết định curl sẽ phân giải host hay chuyển tên sang proxy. Nếu tên host quá dài, mã sẽ chuyển sang chế độ phân giải cục bộ, điều này có thể gây tràn bộ nhớ nếu tên host dài hơn bộ đệm đích
- Tràn có thể xảy ra nếu kích thước bộ đệm được đặt nhỏ hơn 65541 byte và tên host dài hơn kích thước bộ đệm. Điều này đòi hỏi tác nhân độc hại nhập một tên host cực dài vào công thức để kích hoạt lỗi
- Kẻ tấn công kiểm soát máy chủ HTTPS mà client dùng libcurl truy cập thông qua proxy SOCKS5 có thể trả về một chuyển hướng bị thao túng cho ứng dụng qua phản hồi HTTP 30x, từ đó gây ra tràn bộ đệm heap
- Vấn đề này đã được sửa trong curl 8.4.0 bằng cách để curl trả về lỗi nếu tên host quá dài, thay vì chuyển từ phân giải từ xa sang phân giải cục bộ. Một ca kiểm thử chuyên biệt cho kịch bản này cũng đã được bổ sung
- Tác giả thừa nhận lỗi này đã không xảy ra nếu curl được viết bằng ngôn ngữ an toàn bộ nhớ thay vì C, nhưng cho biết hiện không có kế hoạch port curl sang ngôn ngữ khác
- Tác giả đề xuất rằng việc cho phép, sử dụng và hỗ trợ nhiều phụ thuộc được viết bằng ngôn ngữ an toàn bộ nhớ hơn là một hướng tiếp cận khả thi, và dần dần có thể thay thế một số phần của curl
- Tác giả thừa nhận sai lầm và xin lỗi, đồng thời cho biết lỗi này lẽ ra có thể được phát hiện bằng một bộ kiểm thử tốt hơn. Ông cũng nhắc đến các công cụ phân tích mã tĩnh đã không phát hiện ra vấn đề trong hàm này
- Tác giả kết luận rằng việc phát hành một lỗi tràn heap trong đoạn mã được cài đặt trên hơn 20 tỷ bản thể là một trải nghiệm không đáng khuyến khích
1 bình luận
Ý kiến Hacker News