🇰🇷 한글 설명
Linux 커널의 bcm 드라이버에서 bcm_rx_handler() 함수 실행 시 rx_stamp와 rx_ifindex 변수에 대한 데이터 경합(Data Race) 취약점이 발견되었습니다. 이로 인해 32비트 플랫폼에서 64비트 데이터가 깨지는 현상이 발생하거나, 프레임의 타임스탬프와 인터페이스 인덱스가 실제 데이터와 일치하지 않을 수 있습니다.
💡 쉬운 설명
여러 개의 네트워크 데이터가 동시에 들어올 때, 시스템이 데이터의 시간 정보와 위치 정보를 기록하는 과정에서 서로 충돌하여 잘못된 정보를 저장하는 문제입니다. 이로 인해 네트워크 데이터의 시간 정보가 엉뚱하게 기록될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
can: bcm: fix data race on rx_stamp/rx_ifindex in bcm_rx_handler()
For an rx op subscribed on all interfaces (ifindex == 0), the same op
is registered once in the shared per-netns wildcard filter list, so
bcm_rx_handler() can run concurrently on different CPUs for frames
arriving on different net devices.
op->rx_stamp and op->rx_ifindex were written before bcm_rx_update_lock was
taken, allowing concurrent writers to race each other - including a torn
store of the 64-bit rx_stamp on 32-bit platforms.
Beyond a torn store bcm_send_to_user() must report the timestamp/ifindex
of the very same frame whose content it is delivering. So the assignment
is placed in the same unbroken bcm_rx_update_lock section as the content
comparison.
As a side effect, the RTR-request frame feature (which never reach
bcm_send_to_user()) no longer updates rx_stamp/rx_ifindex, since only
the notification path needs them.
📍 영향받는 시스템
Linux Kernel (bcm 드라이버를 사용하는 시스템)
⚔️ 공격 벡터
네트워크 인터페이스를 통해 다수의 프레임을 동시에 전송하여 데이터 경합을 유도하는 방식
🛡️ 대응 방법
해당 취약점이 수정된 최신 버전의 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 패치가 적용된 보안 업데이트 버전인지 확인