[하루한줄] CVE-2024-39755: Anka Build의 TOCTOU로 인한 권한 상승 취약점

URL

Target

  • Anka Build < 1.43.0

Explain

Anka Build는 macOS 가상화를 위한 소프트웨어 도구로 Controller, Registry, Nodes 세 가지로 이루어져, macOS 및 iOS 애플리케이션을 CI/CD 환경에서 테스트할 목적으로 설계되었습니다.

취약점은 Anka Build Node가 Controller에 연결되거나 이미 연결된 Node에서 업데이트될 때 발생합니다.

pkg_path.ptr = (char *)&tmp_anka_agent_pkg_path;  //  <------- (1)
 pkg_path.len = 18LL;
 v26 = veertu_com_veertu_ankaCloud_agent_listener__ptr_AgentListener_downloadFile(
         v47,
         v50,
         pkg_path,
         ControllerClient);  //  <------- (2)
 data = v26.data;
 tab = v26.tab;
 [...]
    v28 = veertu_com_veertu_ankaCloud_agent_listener__ptr_AgentListener_installPKG(v47, v51); //  <------- (3)
   if ( v28.tab )

Node가 Controller에 연결 또는 업데이트될 때 ankaAgent.pkg 파일을 다운로드 후 Node에 설치합니다.
(1)번에서 ankaAgent.pkg 파일이 저장될 위치 /tmp 디렉토리를 지정하고 (2), (3)번을 통해 pkg 파일의 다운로드 및 설치가 이루어집니다.

   v41 = &unk_1006B0EAB;
v42[0] = 4LL;
v42[1] = (__int64)v44;
v42[2] = v46;
v42[3] = (__int64)&unk_1006B3781;
v42[4] = 7LL;
v42[5] = (__int64)&syscall__stmp_42;
v42[6] = 1LL;
v38 = (_ptr_exec_Cmd)os_exec_Command(&unk_1006B6153, 9LL, &v41, 4LL);// <-------- (4)
v15 = (syscall_SysProcAttr *)runtime_newobject(&type_cLmOVQFt);
v15->Setpgid = 1;

(3)번 installPKG 함수 내부에서 (4)번 os_exec_Command를 실행되며 패키지 설치가 완료됩니다.

이때 /tmp 디렉토리는 모든 사용자가 쓰기 권한을 가지고 있기 때문에, TOCTOU 공격 기법을 통해 공식 ankaAgent.pkg 파일이 다운로드된 후 설치되기 전의 짧은 시간 동안 악성 파일로 교체하여 루트 권한을 획득할 수 있습니다.