-
09/04/2020
-
128
-
1.762 bài viết
Lỗ hổng nghiêm trọng trong MikroORM đe dọa hàng triệu ứng dụng Node.js
Một thư viện quen thuộc trong hệ sinh thái Node.js vừa bất ngờ trở thành điểm yếu nghiêm trọng, có thể mở đường cho tin tặc chèn và thực thi truy vấn trái phép ngay trong cơ sở dữ liệu. Với hàng triệu lượt sử dụng mỗi tháng, sự cố lần này không chỉ là lỗi kỹ thuật đơn thuần mà còn đặt ra rủi ro thực tế cho rất nhiều ứng dụng web đang vận hành nhiện nay.
Lỗ hổng có mã định danh là CVE-2026-34220,với CVSSv4 lên tới 9.3, cho thấy mức độ nguy hiểm đặc biệt cao và cần được xử lý ngay lập tức. Vấn đề tồn tại trong các phiên bản MikroORM từ 6.6.9 trở xuống và 7.0.5 trở xuống, liên quan trực tiếp đến cách thư viện này xử lý dữ liệu đầu vào khi xây dựng truy vấn cơ sở dữ liệu.
Cụ thể, các nhà nghiên cứu phát hiện MikroORM có thể bị khai thác SQL Injection khi xử lý những object được thiết kế đặc biệt từ đầu vào người dùng. Đây thực chất là các dữ liệu dạng JSON được gửi từ phía client, nhưng đã bị kẻ tấn công “ngụy trang” để mang cấu trúc giống với các object nội bộ mà ORM sử dụng khi xây dựng truy vấn.
Gốc rễ của vấn đề nằm ở cơ chế nhận diện theo kiểu “duck typing”, nơi hệ thống chỉ kiểm tra hình dạng của object thay vì xác thực nguồn gốc hay tính hợp lệ. Điều này khiến MikroORM có thể nhầm lẫn giữa dữ liệu thông thường và object nội bộ. Khi đó, một payload độc hại nếu được thiết kế đủ tinh vi có thể vượt qua kiểm tra, bị coi là hợp lệ và được chèn trực tiếp vào câu lệnh SQL, tạo điều kiện cho kẻ tấn công thực thi truy vấn trái phép.
Kịch bản tấn công trở nên nguy hiểm khi ứng dụng nhận dữ liệu do người dùng kiểm soát và đưa trực tiếp vào các API ghi dữ liệu của MikroORM mà không kiểm tra chặt chẽ. Một số cách sử dụng phổ biến dễ bị ảnh hưởng bao gồm việc dùng wrap(entity).assign(userInput) rồi gọi em.flush(), sử dụng trực tiếp em.nativeUpdate() hoặc em.nativeInsert() hoặc khởi tạo entity mới qua em.create() rồi ghi xuống cơ sở dữ liệu. Trong những trường hợp này, nếu đầu vào không được lọc kỹ, kẻ tấn công có thể chèn và thực thi câu lệnh SQL tùy ý.
Tuy nhiên, không phải hệ thống nào cũng dễ bị ảnh hưởng bởi CVE-2026-34220. Những ứng dụng đã kiểm soát chặt chẽ dữ liệu đầu vào, chẳng hạn kiểm tra kiểu dữ liệu rõ ràng hoặc áp dụng cơ chế xác thực theo lược đồ dữ liệu một cách nghiêm ngặt, gần như không chịu tác động từ lỗ hổng này. Lý do là các payload giả mạo sẽ không thể vượt qua lớp kiểm tra ban đầu, từ đó bị loại bỏ trước khi có cơ hội đi sâu vào quá trình xử lý truy vấn.
Để xử lý tận gốc vấn đề, nhóm phát triển MikroORM đã điều chỉnh lại toàn bộ cách nhận diện các marker nội bộ. Cơ chế “duck typing” trước đây vốn dễ bị lợi dụng đã được loại bỏ, thay vào đó là phương thức sử dụng các marker dựa trên symbol - dạng định danh không thể bị tái tạo từ dữ liệu đầu vào. Thay đổi này giúp ngăn chặn triệt để khả năng giả mạo object nội bộ, qua đó bịt đường chèn mã SQL trái phép.
Các nhóm phát triển được khuyến nghị nhanh chóng nâng cấp lên các phiên bản đã được vá lỗi là 6.6.10 hoặc 7.0.6. Trong khi các lỗ hổng dạng injection vẫn luôn nằm trong danh sách mục tiêu hàng đầu của tin tặc, việc chậm trễ cập nhật có thể khiến hệ thống trở thành điểm xâm nhập, kéo theo nguy cơ rò rỉ và kiểm soát trái phép dữ liệu.
Theo Security Online