Nguồn: muffin.ink

Tóm tắt

Bài viết trên muffin.ink phân tích chi tiết lịch sử các lỗ hổng bảo mật liên quan đến SVG trong nền tảng Scratch — môi trường lập trình trực quan phổ biến cho trẻ em. Tác giả lập luận rằng cách tiếp cận của Scratch để xử lý SVG từ người dùng là không an toàn về căn bản, và chứng minh điều này qua nhiều lỗ hổng đã được phát hiện theo thời gian.

Vấn đề cốt lõi là Scratch phân tích cú pháp nội dung SVG do người dùng tạo ra (có thể là tấn công viên) rồi thêm vào phần tử <svg> trong document chính để thực hiện các thao tác như đo bounding box. Ngay cả khi SVG chỉ tồn tại ngắn trong document, đây là thao tác vốn không an toàn.

Lịch sử lỗ hổng bắt đầu từ năm 2019 với XSS qua thẻ <script> trong SVG, được vá bằng regex loại bỏ script tags. Tuy nhiên đến năm 2020 (CVE-2020-7750), lỗ hổng vẫn còn vì regex phân biệt chữ hoa/thường, và <SCRIPT> hay các biến thể khác vẫn hoạt động. Nhiều lỗ hổng tương tự tiếp tục được phát hiện sau đó.

Tác giả kết luận rằng cách tiếp cận xây dựng hệ thống sanitization SVG ngày càng phức tạp không phải là giải pháp bền vững — thay vào đó cần thay đổi kiến trúc căn bản trong cách Scratch xử lý nội dung SVG để loại bỏ hoàn toàn rủi ro bảo mật.

👉 Đọc bài gốc