CVE-2021-47282 in Linux
요약
\~에 의해 VulDB • 2026. 06. 05.
리눅스 커널에서 다음 취약점이 해결되었습니다:
spi: bcm2835: 슬레이브가 4개 초과일 때 경계 밖 접근(out-of-bounds access) 수정
커밋 571e31fa60b3("spi: bcm2835: ->prepare_message()를 위해 CS 레지스터 값 캐싱")은 컴파일 시점에 슬레이브 수를 3개로 제한했습니다. 이 제한은 각 슬레이브별 레지스터 값을 포함하는 드라이버 프라이빗 데이터 내의 정적 크기 배열인 prepare_cs[] 때문에 필요했습니다.
이 커밋은 컨트롤러의 num_chipselect를 3으로 설정하여 런타임에 해당 제한을 강제하려고 했습니다: 더 높은 칙셀렉트를 가진 슬레이브는 spi_add_device()에서 거부됩니다.
그러나 이 커밋은 num_chipselect가 *네이티브* 칙셀렉트의 수만 제한한다는 점을 간과했습니다. 장치 트리에 3개 이상의 슬레이브에 대해 GPIO 칙셀렉트가 지정된 경우, of_spi_get_gpio_numbers()는 num_chipselect를 조용히 증가시키며 그 결과 정적 크기 배열 prepare_cs[]에 대한 경계 밖 접근이 발생합니다.
안정성 버전으로 백포트 가능한 임시 해결책(bandaid fix)으로서 허용되는 슬레이브 수를 24로 늘리고("누구에게나 충분해야 합니다"), 슬레이브 ->setup에서 제한을 강제하며 num_chipselect를 3(컨트롤러가 지원하는 네이티브 칙셀렉트 수)으로 되돌립니다. 향후 for-next 커밋은 임의 개수의 슬레이브를 허용할 예정입니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.