🇰🇷 한글 설명
Linux 커널의 MediaTek pinctrl 드라이버에서 v1 플랫폼 사용 시 잘못된 포인터 역참조가 발생하는 취약점입니다. 특정 구조체 정의의 불일치로 인해 v1 드라이버가 실행될 때 시스템이 조기에 충돌할 수 있습니다.
💡 쉬운 설명
컴퓨터의 부품을 제어하는 소프트웨어가 서로 다른 버전의 설계도를 참조하면서 잘못된 메모리 주소를 건드리는 문제입니다. 이로 인해 기기가 부팅되는 아주 초기 단계에서 시스템이 멈추거나 꺼질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
pinctrl: mediatek: eint: Fix invalid pointer dereference for v1 platforms
Commit 3ef9f710efcb ("pinctrl: mediatek: Add EINT support for multiple
addresses") introduced an access to the 'soc' field of struct
mtk_pinctrl in mtk_eint_do_init() and for that an include of
pinctrl-mtk-common-v2.h.
However, pinctrl drivers relying on the v1 common driver include
pinctrl-mtk-common.h instead, which provides another definition of
struct mtk_pinctrl that does not contain an 'soc' field.
Since mtk_eint_do_init() can be called both by v1 and v2 drivers, it
will now try to dereference an invalid pointer when called on v1
platforms. This has been observed on Genio 350 EVK (MT8365), which
crashes very early in boot (the kernel trace can only be seen with
earlycon).
In order to fix this, since 'struct mtk_pinctrl' was only needed to get
a 'struct mtk_eint_pin', make 'struct mtk_eint_pin' a parameter
of mtk_eint_do_init() so that callers need to supply it, removing
mtk_eint_do_init()'s dependency on any particular 'struct mtk_pinctrl'.
📍 영향받는 시스템
MediaTek 플랫폼(예: Genio 350 MT8365)을 사용하는 Linux 커널 기반 시스템
⚔️ 공격 벡터
로컬 공격자가 시스템 부팅 과정이나 드라이버 초기화 시점에 영향을 주어 시스템 충돌(DoS) 유발 가능
🛡️ 대응 방법
해당 취약점이 수정된 최신 Linux 커널 버전으로 업데이트하거나 관련 패치(Commit 3ef9f710efcb 관련 수정본) 적용
🔧 검증 코드
커널 버전을 확인하고, 수정 사항이 포함된 커밋 로그가 시스템에 존재하는지 확인합니다.
uname -r && git log --grep="pinctrl: mediatek: Add EINT support for multiple addresses"