CVE-2026-64502 in Linux정보

요약

\~에 의해 VulDB • 2026. 07. 25.

리눅스 커널에서 다음 취약점이 해결되었습니다:

iio: adc: ad_sigma_delta: 레지스터가 없는 장치에 대한 clear_pending_event 수정

ad_sigma_delta_clear_pending_event() 함수는 has_registers = false이고 rdy_gpiod도 없는 장치의 경우 상태(register) 읽기 경로로 계속 진행됩니다. 이러한 장치에서 ad_sd_read_reg()은 주소 바이트를 완전히 건너뛰고 주소 페이즈 없이 raw MISO 바이트만 클럭하여, 이는 변환 데이터 읽기와 바이트 단위로 동일하게 동작합니다. 보류 중인 변환 결과가 존재하는 경우 이 함수가 이를 부분적으로 소모(consume)하여 ad_sigma_delta_single_conversion() 내의 후속 ad_sd_read_reg() 호출에서 데이터 스트림을 손상시킵니다.

또한, 이러한 장치에서 num_resetclks = 0인 경우 data_read_len은 0으로 평가됩니다. 클럭된 바이트의 비트 7이 clear(0)라면 pending_event가 설정되고 코드에서는 memset(data + 2, 0xff, 0 - 1)를 시도하게 되는데, 이는 SIZE_MAX로 오버플로우되어 힙(heap)을 손상시킵니다.

rdy_gpiod와 has_registers가 모두 설정되지 않은 경우 즉시 0을 반환함으로써 이를 수정합니다. 이 조치는 현재 모든 레지스터 없는 장치(ad7191 및 전원 차단(powerdown) GPIO를 사용하는 ad7780)에서 안전합니다. 이러한 장치는 변환 간 CS 비활성화(deassertion)에 의해 리셋되므로, 소모할 오래된(stale) 결과가 없습니다. 또한 전원 차단 GPIO가 없는 ad7780과 max11205는 지속적으로 변환을 수행하며 이전 결과를 읽었는지 여부와 상관없이 출력 데이터 레이트(~DRDY)를 순환하므로 다음 하강 에지(falling edge)가 자연스럽게 발생합니다.

~DRDY가 데이터를 읽기 전까지 asserted 상태로 유지되는 미래의 레지스터 없는 장치는 이러한 조기 반환(early return)으로 인해 문제가 발생할 수 있으며, num_resetclks 설정 또는 rdy-gpio 추가가 필요합니다.

rdy_gpiod는 설정되었지만 num_resetclks = 0인 모든 장치에서도 동일한 힙 손상이 가능합니다. GPIO가 보류 중인 이벤트를 나타내는 경우 has_registers 여부와 관계없이 drain 경로에서 memset(data + 2, 0xff, 0 - 1)가 실행됩니다. pending event 체크 후 명시적인 data_read_len == 0 가드를 추가합니다. 그러면 오래된 결과가 ad_sigma_delta_single_conversion() 내 첫 번째 ad_sd_read_reg() 호출에 의해 소모됩니다.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

책임이 있는

Linux

예약하다

2026. 07. 19.

모더레이션

수락

항목

VDB-383308

EPSS

0.00155

활동

낮음

출처

Might our Artificial Intelligence support you?

Check our Alexa App!