# macOS에서 비밀번호 유출 및 기타 문제

> Clean Markdown view of GeekNews topic #19879. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=19879](https://news.hada.io/topic?id=19879)
- GeekNews Markdown: [https://news.hada.io/topic/19879.md](https://news.hada.io/topic/19879.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-03-21T15:33:15+09:00
- Updated: 2025-03-21T15:33:15+09:00
- Original source: [wts.dev](https://wts.dev/posts/password-leak/)
- Points: 1
- Comments: 1

## Topic Body

### 비밀번호 유출 (그리고 더 많은 것들!) macOS에서

#### 소개
이 글은 Apple의 보안 업데이트에 포함된 취약점 **CVE-2024-54471**에 대해 설명함. 이 취약점은 **macOS Sequoia 15.1, macOS Sonoma 14.7.1, macOS Ventura 13.7.1**에서 패치되었음. macOS 기기를 사용하는 경우, 최신 버전으로 업데이트할 것을 권장함.

#### 커널이란 무엇인가?
운영 체제에서 하드웨어와 통신하고 멀티태스킹 모델을 애플리케이션에 제공하는 코드를 **커널**이라고 함. macOS의 커널은 **XNU**로, BSD 커널과 Mach 커널의 변형을 포함하는 하이브리드 커널임.

#### Mach의 역사
Mach 커널은 1980년대와 90년대의 유닉스 전쟁과 깊이 얽혀 있음. Mach는 카네기 멜론 대학교에서 운영 체제 연구 프로젝트로 시작되었으며, NeXTSTEP 운영 체제에 사용되었고, 이는 결국 macOS의 기초가 되었음.

#### 왜 Mach인가?
Mach는 유닉스 시스템 설계 및 사용의 복잡성을 줄이기 위해 개발되었음. Mach는 네 가지 기본 추상화로 구성되어 있으며, 이는 현대 macOS에서도 여전히 사용되고 있음.

#### Mach의 아키텍처

##### 네 가지 추상화
- **태스크**: 스레드가 실행될 수 있는 환경으로, 리소스 할당의 기본 단위임.
- **스레드**: CPU 활용의 기본 단위로, 태스크 내에서 독립적인 프로그램 카운터로 작동함.
- **포트**: 메시지를 위한 커뮤니케이션 채널로, 커널에 의해 보호됨.
- **메시지**: 스레드 간 통신에 사용되는 데이터 객체의 집합임.

##### 태스크, 포트, 포트 권한
포트는 커널 공간에만 존재하며, 사용자 공간에는 포트 권한으로 노출됨. 여러 태스크가 포트에 대한 전송 권한을 가질 수 있지만, 수신 권한은 하나의 태스크만 가질 수 있음.

##### 메시지의 구조
각 Mach 메시지는 헤더, 선택적 설명자, 임의의 페이로드, 커널이 추가한 트레일러로 구성됨.

##### 전송 권한 획득 방법
macOS에는 **부트스트랩 서버**가 있으며, 이는 모든 태스크가 전송 권한을 가진 포트의 수신 권한을 보유함. 클라이언트는 부트스트랩 서버에 특정 이름의 Mach 서비스에 대한 전송 권한을 요청할 수 있음.

#### Mach 인터페이스 생성기 (MIG)

##### 소개
MIG는 Mach 메시지 전송 및 수신을 위한 기능적 인터페이스를 생성하는 도구임. 이는 메시지 기반의 RPC 스타일 인터페이스를 제공하여 메모리 안전성을 높임.

##### 기술적 세부사항
MIG는 Mach 메시지의 래퍼로, 각 함수는 **루틴**으로 불리며, 루틴의 집합은 **서브시스템**으로 불림. 서브시스템은 메시지 ID 필드에 인덱스됨.

#### MIG 서버의 취약점

##### MIG 서버의 보안
MIG 서버는 메시지 발신자를 검증하지 않으면, 전송 권한을 가진 태스크가 서버의 루틴을 호출할 수 있음.

##### MIG 서버 찾기
`ipsw` CLI 도구를 사용하여 `NDR_record` 심볼을 사용하는 바이너리를 검색할 수 있음. 이는 MIG 서버와 클라이언트를 찾는 데 유용함.

#### NetAuthAgent의 취약점

##### NetAuthAgent 소개
**NetAuthAgent**는 macOS에서 파일 서버의 자격 증명을 처리하는 데몬임. 이 취약점이 패치되기 전에는 서버의 자격 증명을 요청하면 제공했음.

##### NetAuthAgent의 작동 방식
NetAuthAgent는 macOS **키체인**을 사용하여 자격 증명을 저장함. 키체인은 중앙 집중식 비밀 관리자이며, 각 항목은 자체 접근 제어 목록을 가짐.

##### NetAuthAgent의 MIG 서버
NetAuthAgent는 `com.apple.netauth.user.gui`라는 이름으로 부트스트랩 서버에 등록된 MIG 서버를 노출함. 이 서버는 자격 증명을 읽고 생성하며 덮어쓸 수 있는 루틴을 제공함.

#### 취약점의 영향

##### iCloud API 토큰 노출
이 취약점은 iCloud API 토큰을 노출시켜, 공격자가 사용자 정보를 유출하거나 다른 장치의 위치를 추적할 수 있게 함.

#### Apple이 해야 했던 것
이 글은 Apple이 이 취약점을 해결하기 위해 어떤 조치를 취했어야 했는지에 대한 논의를 포함함.

## Comments



### Comment 36198

- Author: neo
- Created: 2025-03-21T15:33:15+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=43425605) 
* 잘 작성된 글임. Apple이 어느 정도 숨기려 했던 제로 데이 사건이 떠오름. "빈 비밀번호를 두 번 시도"하여 root 로그인 우회가 가능했던 사건이었음. 이 사건은 2017년 또는 2018년경이었음
  - 관리자 사용자 이름을 입력하고 빈 비밀번호로 로그인 시도 시, 처음에는 비밀번호가 틀렸다는 경고가 나옴. 경고를 무시하고 두 번째로 로그인 버튼을 누르면 해당 사용자로 로그인됨
  - 이 문제는 소셜 미디어에 퍼진 후 곧 패치되었음. 여전히 큰 실수처럼 보임
  - Mac의 인증 메커니즘에 아직도 문제가 있는 것 같음. 포트 시스템이 언급된 것이 흥미로움. Mach 커널의 잘 알려지지 않은 사실임

* "ACLs don’t": &lt;a href="https://waterken.sourceforge.net/aclsdont/current.pdf" rel="nofollow"&gt;https://waterken.sourceforge.net/aclsdont/current.pdf&lt;/a&gt;

* 프로세스가 다른 프로세스에 키체인 쿼리를 프록시할 수 있는 메커니즘을 노출하면 시스템 전체의 보안을 약화시킬 수 있음
  - 이는 혼란스러운 대리인 문제의 사례로 보임: &lt;a href="https://en.wikipedia.org/wiki/Confused_deputy_problem" rel="nofollow"&gt;https://en.wikipedia.org/wiki/Confused_deputy_problem&lt;/a&gt;
  - 능력 기반 설계가 이러한 문제를 체계적으로 방지할 수 있어야 함

* 기사에 사소한 수정이 있었음
  - 권한 확인은 커널의 Mach 레이어에 있지 않음
  - &lt;a href="https://github.com/nmggithub/wts/commit/2bdce1c0c76c7adc360e17a6a42ee547462b99d3" rel="nofollow"&gt;https://github.com/nmggithub/wts/commit/2bdce1c0c76c7adc360e...&lt;/a&gt;
  - XNU 작동 방식에 대한 사실 오류를 수정하기 위한 한 단어 변경이었음

* 8시간이 걸렸지만 이 게시물은 이제 더 이상 첫 페이지 상위 5위가 아님 (현재 #27임, 여전히 첫 페이지에 있지만 하단임). 모든 댓글에 감사함

* 작성자가 실제 PoC 코드를 제공하는지 궁금함. 완화 조치를 테스트하고 싶음. 예제 코드를 보았지만 불완전해 보임
  - 현실적으로 어떤 위험이 있는지 궁금함

* 매우 흥미로운 기사임. Mach와 Darwin 커널의 제작에 이렇게 많은 이야기가 있는 줄 몰랐음

* 현재 Mach는 macOS에서 버그의 신뢰할 수 있는 출처처럼 느껴짐. Apple이 이를 모두 잠그기 위해 열심히 노력하고 있는 것을 알고 있지만, Mach에서 완전히 벗어날 수 있는 경로가 있는지 궁금함

* [dead]
