🇰🇷 한글 설명
Synopsys DesignWare I2C 드라이버의 슬레이브 모드에서 START_DET 인터럽트 마스크가 누락되어 상태 복구가 불가능한 취약점입니다. 이로 인해 STOP 인터럽트가 유실되거나 특정 통신 시퀀스가 발생하면 드라이버가 CMD_SEND 상태에 영구적으로 머물게 됩니다. 결과적으로 I2C 타겟 장치의 쓰기 요청 콜백이 호출되지 않아 서비스 거부(DoS) 상태가 발생할 수 있습니다.
💡 쉬운 설명
I2C 통신 장치가 특정 신호를 제대로 처리하지 못해 먹통이 되는 문제입니다. 공격자가 통신 규칙을 교묘하게 이용하면 해당 장치를 재부팅하기 전까지 작동하지 않게 만들 수 있습니다.
🇺🇸 원문 (English)
In the Synopsys DesignWare I2C driver (drivers/i2c/i2c_dw.c) operating in target/slave mode, the rx_full interrupt handler gates the write_requested() callback on dw->state != CMD_SEND, and dw->state is only reset to READY on a STOP interrupt. The START_DET interrupt, whose handler in i2c_dw_slave_read_clear_intr_bits() would reset the state on every (re)START, was never added to the enabled interrupt mask in i2c_dw_slave_register(), so that recovery path was dead code.
As a result, if the STOP interrupt is lost (bus glitch/reset, or a concurrent master driving STOP) or the bus master issues a legal WRITE-repeated-START-WRITE sequence with the same direction, the driver remains in CMD_SEND permanently and never invokes write_requested() again for the life of the target.
An I2C master on the same physical bus can deliberately trigger this, causing the I2C target function to malfunction for all subsequent write transactions and desynchronizing consumer framing state (e.g. MCTP-over-I2C), a recoverable-by-reset denial of service of the target peripheral.
The fix unmasks START_DET so the state is reset at every bus (re)START. Impact is availability-only over a local board-level bus; no memory corruption results in the in-tree consumer, whose per-byte buffer write is independently bounds-checked.
📍 영향받는 시스템
Synopsys DesignWare I2C driver (drivers/i2c/i2c_dw.c)를 사용하는 시스템
⚔️ 공격 벡터
동일한 물리적 버스에 연결된 I2C 마스터가 의도적으로 특정 통신 시퀀스를 전송하여 타겟의 상태를 고정시킴
🛡️ 대응 방법
i2c_dw_slave_register() 함수에서 START_DET 인터럽트 마스크를 활성화하도록 드라이버 패치 적용
🔧 검증 코드
명령어 결과에서 START_DET가 인터럽트 마스크 설정 부분에 포함되어 있는지 확인하여 패치 여부를 판단합니다.
grep -r "START_DET" drivers/i2c/i2c_dw.c
📊 CVSS Vector String
CVSS:3.1/AV:P/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
💻 영향받는 소프트웨어
Windows iSCSI Target Service