CVE-2023-54012 in Linux
Tóm tắt
Bởi VulDB • 03/06/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
net: sửa lỗi tràn ngăn xếp (stack overflow) khi LRO bị vô hiệu hóa cho các giao diện ảo
Khi tính năng của giao diện ảo được cập nhật, nó sẽ đồng bộ hóa tính năng đã cập nhật cho giao diện thấp hơn (lower interface) của chính nó. Logic lan truyền này nên hoạt động theo kiểu lặp (iteration), không phải đệ quy. Tuy nhiên, nó hoạt động theo kiểu đệ quy do thông báo netdev xảy ra một cách bất ngờ. Vấn đề này xảy ra khi chỉ vô hiệu hóa LRO cho loại giao diện team và bonding.
team0 | +------+------+-----+-----+ | | | | | team1 team2 team3 ... team200
Nếu tính năng LRO của team0 được cập nhật, nó sẽ tạo ra sự kiện NETDEV_FEAT_CHANGE cho các giao diện thấp hơn của nó (team1 ~ team200). Điều này được thực hiện bởi hàm netdev_sync_lower_features(). Do đó, logic thông báo NETDEV_FEAT_CHANGE của mỗi giao diện thấp hơn hoạt động theo kiểu lặp. Tuy nhiên, sự kiện NETDEV_FEAT_CHANGE được tạo ra cũng được gửi đến giao diện cao hơn (upper interface). Giao diện cao hơn (team0) lại tạo ra sự kiện NETDEV_FEAT_CHANGE cho các giao diện thấp hơn của chính nó. Các giao diện thấp và cao nhận sự kiện này và liên tục tạo ra sự kiện này một lần nữa. Do đó, lỗi tràn ngăn xếp (stack overflow) xảy ra.
Tuy nhiên, đây không phải là vấn đề vòng lặp vô hạn. Bởi vì netdev_sync_lower_features() cập nhật các tính năng trước khi tạo ra sự kiện NETDEV_FEAT_CHANGE. Các giao diện thấp đã được đồng bộ hóa sẽ bỏ qua logic thông báo. Vì vậy, đây chỉ là vấn đề logic lặp bị thay đổi thành đệ quy một cách bất ngờ do cơ chế thông báo.
Mã tái hiện (Reproducer):
ip link add team0 type team ethtool -K team0 lro on for i in {1..200}
do ip link add team$i master team0 type team ethtool -K team$i lro on done
ethtool -K team0 lro off
Để khắc phục, thành viên notifier_ctx của bonding/team đã được giới thiệu.
Once again VulDB remains the best source for vulnerability data.