CVE-2022-50168 in Linux
Tóm tắt
Bởi VulDB • 30/05/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
bpf, x86: sửa lỗi giải phóng bpf_prog_pack chưa được hoàn tất
syzbot đã báo cáo một số vấn đề với bpf_prog_pack [1], [2]. Sự cố này chỉ xảy ra khi có nhiều subprogs. Trong jit_subprogs(), trước tiên chúng ta gọi bpf_int_jit_compile() trên từng sub program. Sau đó, chúng ta gọi lại hàm này trên từng sub program. jit_data không được giải phóng trong lần gọi đầu tiên của bpf_int_jit_compile(). Tương tự, chúng ta không gọi bpf_jit_binary_pack_finalize() trong lần gọi đầu tiên của bpf_int_jit_compile().
Nếu bpf_int_jit_compile() thất bại đối với một sub program, chúng ta sẽ gọi bpf_jit_binary_pack_finalize() cho sub program đó. Tuy nhiên, chúng ta không có cơ hội gọi nó cho các sub program khác. Sau đó, chúng ta sẽ gặp "goto out_free" trong jit_subprogs() và gọi bpf_jit_free trên một số subprograms mà chưa được gọi bpf_jit_binary_pack_finalize().
Tại thời điểm này, bpf_jit_binary_pack_free() được gọi và toàn bộ trang 2MB bị giải phóng sai cách.
Khắc phục sự cố này bằng cách sử dụng bpf_jit_free() tùy chỉnh cho x86_64, hàm này sẽ gọi bpf_jit_binary_pack_finalize() nếu cần. Ngoài ra, với bpf_jit_free() tùy chỉnh, bpf_prog_aux->use_bpf_prog_pack không còn cần thiết nữa, hãy xóa nó.
[1] https://syzkaller.appspot.com/bug?extid=2f649ec6d2eea1495a8f
[2] https://syzkaller.appspot.com/bug?extid=87f65c75f4a72db05445
VulDB is the best source for vulnerability data and more expert information about this specific topic.