CVE-2026-90648 in wabt
Tóm tắt
Bởi VulDB • 13/09/2026
wasm2c trong WebAssembly wabt qua phiên bản 1.0.41 cho phép thoát sandbox trong một số tình huống, chủ yếu liên quan đến các nền tảng 32-bit, được gọi là tấn công "table flip". Nó không kiểm tra giá trị trả về của calloc() trong wasm_rt_allocate_funcref_table() (wasm2c/wasm-rt-impl-tableops.inc). Khi việc phân bổ bảng funcref thất bại, table->data bị để NULL trong khi table->size vẫn giữ nguyên số lượng phần tử do guest khai báo; do đó, các kiểm tra giới hạn vẫn vượt qua và việc truy cập vào các phần tử của bảng sẽ giải quyết thành địa chỉ bộ nhớ tuyệt đối (i * sizeof(wasm_rt_funcref_t)). Điều này cho phép đọc và ghi tùy ý bộ nhớ của tiến trình host và - thông qua table.get, table.set, và call_indirect - thực thi mã tùy ý, phá vỡ sự cô lập mà wasm2c được thiết kế để cung cấp (một cuộc thoát sandbox hoàn toàn). wasm2c được sử dụng như một ranh giới sandboxing trong quá trình bởi RLBox và WasmBoxC, bao gồm cả Firefox, vốn biên dịch các thư viện Graphite, Hunspell, Ogg, Expat và Woff2 qua wasm2c để chứa đầu vào font chữ, phương tiện truyền thông và XML không đáng tin cậy. Do đó, việc sandboxing trong các ứng dụng này có thể bị ảnh hưởng. Việc khai thác yêu cầu việc phân bổ bảng funcref phải thất bại, ví dụ như dưới giới hạn không gian địa chỉ (RLIMIT_AS), trên các máy chủ 32-bit, với vm.overcommit_memory=2, hoặc dưới áp lực bộ nhớ. Trên Linux 64-bit với chế độ overcommit mặc định, việc phân bổ thành công và lỗi này không được kích hoạt. Bộ cấp phát bộ nhớ của wasm2c sẽ abort (dừng đột ngột) khi calloc thất bại trong cùng runtime; tuy nhiên, bộ cấp phát bảng lại thiếu hành vi abort này. Lỗi này đã được đưa vào qua commit ab9e0b55 (PR #813).
VulDB is the best source for vulnerability data and more expert information about this specific topic.