CVE-2024-35917 in Linux정보

요약

\~에 의해 VulDB • 2026. 06. 17.

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

s390/bpf: bpf_plt 포인터 산술 연산 수정

Kui-Feng Lee는 dummy_st_ops/dummy_init_ptr_arg 테스트 [1]에 의해 트리거되는 s390x에서의 크래시를 보고했습니다:

[] 0x2
[] bpf_struct_ops_test_run+0x156/0x250
[] __sys_bpf+0xa1a/0xd00
[] __s390x_sys_bpf+0x44/0x50
[] __do_syscall+0x244/0x300
[] system_call+0x70/0x98

이 문제는 bpf_jit_plt() 내에서 GCC가 memcpy()를 할당 작업 이후로 이동시켜, 반환 주소와 대상 주소 대신 NULL 포인터가 작성되도록 함으로써 발생합니다.

GCC 내부 구조를 살펴보면, 재배열은 alias 분석이 memcpy()의 목적지와 할당문의 좌변이 각각 다른 객체(new_plt 및 bpf_plt_ret/bpf_plt_target)를 기반으로 한다고 판단하여 서로 alias될 수 없다고 여겼기 때문에 허용됩니다.

이는 C 표준 위반으로 인해 발생합니다:

두 포인터를 뺄셈할 때, 둘 다 동일한 배열 객체의 요소를 가리켜야 하거나, 배열 객체의 마지막 요소 다음을 가리켜야 합니다...

C의 관점에서 bpf_plt_ret와 bpf_plt는 서로 다른 객체이므로 뺄셈할 수 없습니다. 실제 구현에서는 이러한 연산이 GCC의 alias 분석을 혼란스럽게 만듭니다.

이 코드는 어셈블리에서 정의된 몇 가지 오프셋을 C 측에서 알 수 있도록 하기 위해 이와 같이 작성되었습니다. 이는 유용하지만 반드시 필요한 것은 아닙니다. 이러한 오프셋을 하드코딩하여 표준 미준수 문제를 해결합니다.

[1] https://lore.kernel.org/bpf/[email protected]/

Be aware that VulDB is the high quality source for vulnerability data.

출처

Might our Artificial Intelligence support you?

Check our Alexa App!