🇰🇷 한글 설명
Linux 커널의 BPF 및 XDP 구현에서 bpf_xdp_link_update() 함수가 dev_xdp_attach()의 검증 과정을 건너뛰는 취약점이 발견되었습니다. 이로 인해 사용자가 일반 프로그램을 XDP 링크로 만든 후, BPF_LINK_UPDATE를 통해 검증되지 않은 오프로드 또는 장치 바운드 프로그램을 소프트웨어 경로로 교체할 수 있습니다.
💡 쉬운 설명
보안 검사를 거치지 않고 네트워크 처리 프로그램을 몰래 바꿔치기할 수 있는 결함입니다. 공격자가 허용되지 않은 방식으로 네트워크 장치에 프로그램을 설치하여 시스템 제어권을 위협할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bpf, xdp: move offload check into dev_xdp_install()
bpf_xdp_link_update() calls dev_xdp_install() directly and skips
dev_xdp_attach(), so the checks in dev_xdp_attach() do not run. A user can
make an XDP link with a normal program and then swap in an offloaded or
device-bound program with BPF_LINK_UPDATE, which puts it on the software
path.
dev_xdp_install() is the one place all three paths go through:
"ip link set xdp" and BPF_LINK_CREATE reach it via dev_xdp_attach(), and
BPF_LINK_UPDATE calls it directly. So move the program checks (offloaded,
bound to another device, device-bound in generic mode, native vs generic,
DEVMAP and CPUMAP) there, and keep only the netlink-flag check
(XDP_FLAGS_UPDATE_IF_NOEXIST) in dev_xdp_attach().
📍 영향받는 시스템
Linux Kernel (BPF/XDP 관련 모듈이 포함된 버전)
⚔️ 공격 벡터
BPF_LINK_UPDATE를 사용하여 검증 절차를 우회한 후 XDP 프로그램을 교체하는 방식
🛡️ 대응 방법
프로그램 검증 로직을 dev_xdp_install()로 통합한 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인