🇰🇷 한글 설명
Linux 커널의 FireWire 코어에서 분할 트랜잭션(split transaction) 처리 중 경쟁 조건(race condition)이 발견되었습니다. 응답 핸들러와 타임아웃 콜백이 동일한 트랜잭션 항목을 동시에 처리할 수 있어 시작자 측에서 use-after-free가 발생할 수 있습니다. 이전 코드 리팩터링으로 인한 회귀 버그이며, timer_delete() 반환값 검사 로직을 수정하여 해결되었습니다.
💡 쉬운 설명
리눅스 커널의 FireWire 통신 기능에서 두 처리 루틴이 같은 데이터를 동시에 건드려 메모리 오류가 날 수 있는 결함입니다. 커널 업데이트로 수정되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
firewire: core: fix race condition in split transaction handling
For a split transaction, either fw_core_handle_response() or
split_transaction_timeout_callback() may manipulate the same transaction
entry in the pending transaction list. The return value of timer_delete()
is used to determine which function handles the entry. If the transaction
is a split transaction and timer_delete() returns zero, the timeout
callback may already be running. In this case, the response handler must
leave the entry in the list for the timeout callback to remove.
A previous code refactoring broke this behavior, introducing a race
condition in which both functions could process the same transaction.
This could lead to a use-after-free on the transaction initiator side.
Fix the regression by ensuring that the response handler does not process
the transaction when timer_delete() returns zero. The timeout callback is
responsible for removing the entry from the pending transaction list.
📍 영향받는 시스템
FireWire 드라이버를 포함한 Linux 커널 (수정 패치가 적용되기 전의 해당 커널 버전)
⚔️ 공격 벡터
FireWire 장치를 통해 조작된 응답 타이밍을 유도하여 경쟁 상태를 발생시키고 커널 메모리 손상을 일으키는 로컬/물리 접근 기반 공격
🛡️ 대응 방법
배포판 제공 최신 커널로 업데이트하고 재부팅하거나, 불필요한 경우 firewire 모듈을 블랙리스트에 추가
🔧 검증 코드
출력된 커널 버전이 수정 패치가 포함된 버전 이상인지 배포판 보안 공지와 비교하고, firewire 모듈이 로드되어 있지 않으면 해당 위험은 없습니다.
uname -r && lsmod | grep -E 'firewire_(core|ohci)'