CVE-2025-39797 in Linux정보

요약

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

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

xfrm: 중복 SPI 처리 문제

이 문제는 Strongswan이 XFRM_MSG_ALLOCSPI Netlink 메시지를 시작할 때 발생하며, 이는 커널 함수 xfrm_alloc_spi()를 트리거합니다. 이 함수는 인바운드 보안 연관관계(Security Associations, SAs)에 대해 보안 매개변수 인덱스(SPI)의 고유성을 보장해야 합니다. 그러나 요청된 SPI가 이미 사용 중인 경우에도 성공을 반환할 수 있으며, 이로 인해 여러 인바운드 SA에 중복 SPI가 할당될 수 있습니다(이들은 목적지 주소로만 구분됨).

이러한 동작은 인바운드 패킷에 대한 SPI 조회 시 불일치를 초래합니다. 동일한 SPI를 가진 SA 중 임의의 SA가 반환될 수 있으므로, 패킷 처리가 실패하여 패킷 드롭(packet drops)으로 이어질 수 있습니다.

RFC 4301 섹션 4.4.2에 따르면, 인바운드 처리에서 유니캐스트 SA는 SPI와 프로토콜(선택 사항)로 고유하게 식별됩니다.

문제 재현 방법: 문제를 일관되게 재현하려면 charon.conf에서 사용 가능한 SPI 범위를 제한합니다: spi_min = 0x10000000, spi_max = 0x10000002 이렇게 하면 시스템에 사용할 수 있는 SPI 값이 최대 2개만 남습니다. 다음으로, 각각 고유한 소스/목적지 주소 쌍을 사용하는 2개 이상의 Child SA를 생성합니다. 세 번째 Child SA가 시작되자마자 이미 고갈된 SPI 풀로 인해 중복 SPI가 할당됩니다. 좁은 SPI 범위를 사용하면 문제가 일관되게 재현되며, 더 넓거나 기본 범위를 사용할 경우 드물고 예측 불가능하게 발생합니다.

현재 구현: xfrm_spi_hash() 조회 함수는 daddr(목적지 주소), proto(프로토콜) 및 family를 사용하여 해시를 계산합니다. 따라서 두 SA가 동일한 SPI를 가지지만 다른 목적지 주소를 가진 경우 다음이 적용됩니다: a. 서로 다른 버킷에 해시됨 b. 서로 다른 연결 리스트(byspi + h)에 저장됨 c. 같은 hlist_for_each_entry_rcu() 반복에서 발견되지 않음 결과적으로 조회는 NULL을 반환하며, 커널은 중복 SPI를 허용합니다.

제안된 변경 사항: xfrm_state_lookup_spi_proto()는 해시 버킷과 관계없이 모든 상태(state)에 걸쳐 진정한 전역 검색을 수행하며, SPI와 프로토콜이 일치하는지 확인합니다.

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

책임이 있는

Linux

예약하다

2025. 04. 16.

모더레이션

수락

항목

VDB-323790

EPSS

0.00157

출처

Want to stay up to date on a daily basis?

Enable the mail alert feature now!