🔍 CVE-2026-80889

0.0
CVSS Score
UNKNOWN
2026-09-04
2026-09-04 18:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 CAN(Controller Area Network) ISOTP 프로토콜 구현에서 타이머 처리 순서, 웨이크업 핸들링 및 전송 생성(tx_gen) 순서와 관련된 취약점이 발견되었습니다. 이 문제는 데이터 전송 상태 전환 시 레이스 컨디션이나 잘못된 타이머 재설정으로 인해 시스템 안정성에 영향을 줄 수 있습니다.

💡 쉬운 설명

자동차 통신 등에 사용되는 특정 통신 규격(ISOTP)을 처리하는 과정에서 데이터 처리 순서가 꼬여 오류가 발생할 수 있는 문제입니다. 이로 인해 통신이 끊기거나 시스템이 예상치 못한 동작을 할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: can: isotp: fix timer drain order, wakeup handling and tx_gen ordering This patch is a follow-up to commit cf070fe33bfb ("can: isotp: serialize TX state transitions under so->rx_lock") which addresses following sashiko-bot findings: - isotp_sendmsg(): drain so->txfrtimer first so a stale callback can't re-arm echotimer after the claim - isotp_release(): wake so->wait after forcing ISOTP_SHUTDOWN so a sleeping sendmsg() claim isn't stranded - isotp_sendmsg(): have both wait_event_interruptible() calls in isotp_sendmsg() also wake on ISOTP_SHUTDOWN and do not return claim to IDLE to avoid corrupting a concurrent isotp_release() process. - isotp_sendmsg(): handle potential claim of a new transfer when the wait_event_interruptible() call returns in CAN_ISOTP_WAIT_TX_DONE mode. Don't touch timers and states of the new transfer if a new thread incremented so->tx_gen before getting the lock at err_event_drop. - isotp_sendmsg(): handle a stuck can_send() and omit timer and state changes if a new transfer was claimed. wait_tx_done() returns the error recorded in so->tx_result[], tagged with the caller's own generation. - isotp_tx_timeout(): on a claimed timeout, record the ECOMM error for the timed-out transfer's own generation in so->tx_result[]; sk->sk_err is raised unconditionally, same as every other error path here. - isotp_tx_gen_done()/isotp_tx_timeout(): always read tx.state (acquire) before tx_gen - the reverse order let a weakly ordered CPU pair a fresh tx.state with a stale tx_gen/tx_result slot. - isotp_sendmsg(): wait_tx_done: drain sk_err via sock_error() once we have read the result from so->tx_result[], so an already-reported error doesn't stay latched for a later poll()/SO_ERROR. Also align the remaining lock-free so->tx.state/rx.state/cfecho accesses and use skb->hash as unique loopback echo frame indicator.

📍 영향받는 시스템

Linux Kernel (CAN/ISOTP 관련 모듈 사용 시스템)

⚔️ 공격 벡터

로컬 또는 네트워크를 통한 특수하게 조작된 ISOTP 프레임 전송을 통한 레이스 컨디션 유발

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel