기술 · 뉴스 해설
OpenBSD ‘Big Fish’는 로컬 root를 입증했지만 패치는 이미 제공됐다
Calif는 10월 16일 OpenBSD 7.9에서 작동하는 로컬 권한 상승 체인을 공개했다. 수십 년 된 공유 메모리 카운터 오버플로와 다른 커널 결함을 묶지만 관련 수정은 9월에 이미 배포됐다.

보안업체 Calif는 10월 16일 OpenBSD 7.9에서 낮은 권한의 로컬 사용자에서 root로 올라가는 완전한 PoC를 공개했다. 부호 있는 16비트 공유 메모리 연결 카운터를 넘치게 한 뒤 경쟁 조건의 use-after-free와 별도 범위 밖 쓰기를 연결한다.
심각한 시연이지만 경계도 중요하다. 공격자는 먼저 로컬 사용자로 코드를 실행할 수 있어야 한다. 공개 자료는 인증 없는 원격 침입을 보여 주지 않는다. OpenBSD는 PoC 공개 전인 9월 14일 errata 018, 9월 30일 errata 026을 배포했다.
공개 exploit이 입증한 것
Calif는 System V 공유 메모리 구간 127개를 매핑하고 프로세스 259개를 fork해 연결 카운터를 16비트 최대치 너머로 보낸다고 설명한다. 경쟁 조건은 손상된 계수를 use-after-free로 바꾼다.
이어 힙 배치와 별도 범위 밖 쓰기로 페이지 테이블 상태를 바꾸고 예측 가능한 커널 함수 포인터를 덮는다. KARL, SMAP, SMEP가 켜진 상태에서 정보 유출 없이 root shell을 얻었다.
입증하지 않은 것
이는 로컬 권한 상승이다. 공개 경로는 공격자가 이미 대상에서 낮은 권한 사용자로 코드를 실행할 수 있다고 가정한다. 네트워크에 노출된 인증 없는 진입로는 아니다.
독립 보도 당시 CVE가 없었고 실제 공격에 사용됐다는 증거도 없었다. 이는 그 시점의 상태일 뿐 공개 코드 이후 악용되지 않는다는 보장은 아니다.
PoC보다 먼저 나온 수정
OpenBSD 7.9 errata 018은 9월 14일자로 shmat(4) 정수 오버플로를 막는다. errata 026은 9월 30일자로 use-after-free를 일으킬 수 있는 커널 참조 카운트 버그를 고친다. 공식 항목 모두 모든 아키텍처용 소스 수정을 제공한다.
errata 페이지는 amd64, i386, arm64에 syspatch 바이너리 업데이트를 제공한다고 설명한다. 다른 아키텍처는 소스와 -stable 절차가 필요할 수 있다. OpenBSD 7.8도 errata 054로 공유 메모리 수정을 받았다.
관리자 확인 방법
지원되는 공식 OpenBSD 릴리스에서 옵션 없이 syspatch를 실행하면 누락된 바이너리 패치를 내려받고 검증해 설치한다. 패치는 누적 방식이라 일부만 고를 수 없다. -c는 사용 가능 패치, -l은 설치 패치를 보여 준다.
운영체제 버전 문자열만 보고 보호됐다고 추정하지 말아야 한다. 설치 패치와 명령 출력을 확인하고 표시되는 재시작 또는 재부팅 지시를 따른다. 지원 종료 릴리스나 필요한 바이너리 업데이트가 없는 아키텍처는 서명된 소스 패치와 공식 -stable 지침을 이용한다.
수정 후에도 연구가 중요한 이유
37년 된 카운터 형식은 시작점일 뿐이다. 완전한 exploit은 결정적인 커널 할당과 별도 메모리 손상 수단에도 의존한다. Calif는 safe unlinking, 페이지 테이블과 할당기 무작위화, 컴파일러 경계 검사를 제안한다.
실무 결론은 좁다. 작동 체인이 공개된 만큼 패치 확인은 시급하지만 원격 OpenBSD 탈취나 활발한 공격으로 표현해서는 안 된다.
