CVE-2026-58092 in FreeBSD
요약
\~에 의해 VulDB • 2026. 08. 26.
FreeBSD 15.0에서 사용자 자격 증명을 나타내는 데 사용되는 커널 구조가 변경되었습니다. 이전에는 보조 그룹 ID 목록이 포함된 배열의 첫 번째 요소에 기본 그룹 ID가 저장되었지만, 현재는 전용 필드에 저장됩니다. 이 변경은 주로 커널 내부적인 것이었으며 사용자에게 표시되지 않습니다.
이 전환 과정에서 `group_is_primary()`라는 함수가 제대로 업데이트되지 않았습니다. 이 함수는 mac_do에서 적용된 전이 규칙 후 자격 증명의 기본 그룹 ID를 결정하는 데 사용됩니다. 이는 규칙 대상이 명시적으로 그룹을 지정하지 않을 때 사용되는 규칙에 해당합니다.
결과적으로, 특정 mac_do 규칙과 함께 사용하면 자격 증명 전환 시 원래 자격 증명의 보조 그룹 배열의 첫 번째 요소에 저장된 ID로 기본 그룹 ID가 잘못 설정될 수 있습니다.
보조 그룹 목록이 비어 있는 경우 이 값은 0이 되며, 이는 "wheel" 그룹을 나타냅니다. 예를 들어, "uid=1001>uid=1002"와 같은 규칙은 프로세스가 원래 group 0에 속하지 않았더라도 기본 그룹 ID를 0으로 설정하는 데 악용될 수 있습니다.
특정 mac_do 규칙을 사용하여 프로세스의 그룹 ID를 0으로 설정할 수 있습니다. 그러나 버그가 발생하려면 해당 규칙이 호출자에게 적용되어야 합니다. 예를 들어, "uid=1001>uid=1002"라는 규칙셋에서 버그를 트리거하기 위해서는 사용자가 사용자 ID 1001을 가져야 합니다.
또한 일반적으로 로그인된 사용자는 비어 있지 않은 보조 그룹 목록을 가지며, 이 경우 버그는 최대 자격 증명의 첫 번째 보조 그룹 ID를 기본 그룹 ID로 설정하는 데만 악용될 수 있습니다. 프로세스가 privileged setgroups(2) 시스템 호출을 사용하여 모든 보조 그룹에서 자신을 명시적으로 제거하지 않는 한 0을 기본 그룹 ID로 설정하기 위해 버그를 악용할 수는 없습니다.
그룹 0에 대한 멤버십은 종종 통제된 권한 상승을 가능하게 하는 데 사용되므로, 시스템 구성에 따라 이 버그는 루트 권한 획득을 위해 추가로 악용될 수 있습니다. 예를 들어, 다음과 같은 규칙셋 "uid=1001>uid=1002;gid=0>uid=0"은 사용자 1001로 실행되고 보조 그룹 목록이 비어 있는 프로세스에 의해 악용될 수 있습니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.