🇰🇷 한글 설명
Linux 커널의 phonet PEP 드라이버에서 getsockopt 호출 시 버퍼 크기를 초과하여 데이터를 쓰는 취약점이 발견되었습니다. 보고된 길이는 제한되지만 실제 데이터는 항상 int 크기만큼 기록되어 사용자 버퍼 범위를 1~3바이트 초과하게 됩니다.
💡 쉬운 설명
프로그램이 데이터를 저장할 때 준비된 공간보다 더 많은 양을 써버리는 오류가 있습니다. 이로 인해 메모리의 다른 부분이 오염될 수 있는 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
phonet: pep: do not write beyond optlen in getsockopt
pep_getsockopt() clamps the reported length to the caller's buffer with
min_t(), but then stores the value with put_user(val, (int __user *)
optval), which always writes sizeof(int) bytes. A getsockopt() call with
an optlen smaller than sizeof(int) thus reports the clamped length yet
writes a full int, one to three bytes past the user buffer.
Write the value with copy_to_user() bounded by len, so at most optlen
bytes are copied, matching the length reported back to userspace.
📍 영향받는 시스템
Linux kernel (phonet PEP driver 포함 버전)
⚔️ 공격 벡터
특수하게 조작된 optlen 값을 가진 getsockopt 시스템 호출을 통한 메모리 오버라이트
🛡️ 대응 방법
put_user() 대신 len에 의해 제한되는 copy_to_user()를 사용하도록 커널 패치 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 최신 패치 버전인지 확인