🇰🇷 한글 설명
Linux 커널의 bridge 네트워크 모듈에서 RCU 리더가 FDB(Forwarding Database) 항목을 처리할 때 일관되지 않은 값을 참조할 수 있는 취약점이 발견되었습니다. 로컬 FDB 항목이 삭제되는 과정에서 f->dst 값이 NULL로 변경될 수 있는데, 이를 적절히 스냅샷 처리하지 않아 NULL 포인터 역참조가 발생할 수 있습니다.
💡 쉬운 설명
네트워크 연결 정보를 관리하는 과정에서 데이터가 갑자기 바뀌어 컴퓨터가 잘못된 주소를 참조하게 되는 문제입니다. 이로 인해 시스템이 예기치 않게 멈추거나 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: bridge: use a stable FDB dst snapshot in RCU readers
Local FDB entries can be rewritten in place by `fdb_delete_local()`, which
updates `f->dst` to another port or to `NULL` while keeping the entry
alive. Several bridge RCU readers inspect `f->dst`, including
`br_fdb_fillbuf()` through the `brforward_read()` sysfs path.
These readers currently load `f->dst` multiple times and can therefore
observe inconsistent values across the check and later dereference.
In `br_fdb_fillbuf()`, this means a concurrent local-FDB update can change
`f->dst` after the NULL check and before the `port_no` dereference,
leading to a NULL-ptr-deref.
Fix this by taking a single `READ_ONCE()` snapshot of `f->dst` in each
affected RCU reader and using that snapshot for the rest of the access
sequence. Also publish the in-place `f->dst` updates in `fdb_delete_local()`
with `WRITE_ONCE()` so the readers and writer use matching access patterns.
📍 영향받는 시스템
Linux kernel (bridge module 사용 환경)
⚔️ 공격 벡터
로컬 사용자가 네트워크 브리지 설정을 조작하여 특정 FDB 항목을 삭제하거나 변경함으로써 발생
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 RCU 리더의 데이터 스냅샷 로직을 적용해야 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인