GN⁺: GrapheneOS가 ARM MTE를 통해 발견한 블루투스 메모리 손상
(grapheneos.social)GrapheneOS 소셜 네트워크 활동
- GrapheneOS는 Mastodon을 기반으로 한 분산 소셜 네트워크의 일부임.
- 공식 프로젝트 계정과 프로젝트 멤버들을 위한 GrapheneOS 서버를 운영 중임.
- 서버는 5명의 활성 사용자를 보유하고 있음.
Pixel 8과 Pixel 8 Pro의 하드웨어 메모리 태깅 지원
- Pixel 8과 Pixel 8 Pro에서 하드웨어 메모리 태깅 지원을 통해 Android 14 QPR2의 Bluetooth LE에서 발생한 메모리 손상 버그를 발견함.
- 현재 이 버그를 조사하여 수정하거나 새로 도입된 기능을 일시적으로 비활성화하는 임시 해결책을 찾고 있음.
메모리 태깅 비활성화는 임시 해결책으로 부적절
- 특정 Bluetooth LE 장치에서만 발생하며, 모든 Bluetooth 장치에서 발생하는 것은 아님.
- 이 프로세스에 대한 메모리 태깅을 비활성화하는 것은 단기적인 해결책으로도 받아들일 수 없음.
Android 14 QPR2의 버그 패치 개발
- Bluetooth LE와 관련된 use-after-free 버그를 발견하고 패치를 개발함.
- GrapheneOS 릴리스에 수정 사항을 포함시키는 것이 우선순위이며, Android 보안 버그로 보고할 예정임.
- BLE 오디오 문제도 해결될 것으로 기대됨.
버그 수정 확인
- Samsung Galaxy Buds2 Pro를 사용하는 사용자가 Bluetooth LE 모드에서 문제를 재현하고 수정 사항이 효과가 있음을 확인함.
- 이 문제는 기본 Pixel OS에도 영향을 미침.
- GrapheneOS는 hardened_malloc 메모리 태깅 지원을 통해 이를 감지하고, MTE 충돌 알림과 보고서를 보낼 수 있는 기능을 추가함.
보안 버그로 보고
- use-after-free 문제가 보안 버그로 보고됨 (Google 직원을 위한 b/328916844).
- 초기 최소 침입 패치가 제공됨.
- 코드는 큰 리팩토링이 필요하며, 원시 포인터를 사용하지 않아야 하지만, 빠른 패치로 새로운 버그를 도입하지 않으려 함.
Bluetooth 코드를 Rust로 포팅
- Android는 많은 Bluetooth 코드를 Rust로 포팅함.
- 나머지 코드도 Rust로 포팅하는 데 더 많은 자원을 투입해야 함.
- HWASan과 MTE 빌드를 다양한 실제 사용 환경에서 테스트해야 함.
MTE의 중요성
- Pixels는 OS에서 활성화하지 않고 메모리/캐시 사용량을 3.125% 절약하기 위해 MTE라는 중요한 하드웨어 보안 기능을 제공함.
- GrapheneOS는 기본 OS와 알려진 호환 사용자 설치 앱에 대해 기본적으로 MTE를 활성화함.
- 사용자는 설정에서 모든 사용자 설치 앱에 대해 MTE를 활성화할 수 있음.
GrapheneOS의 MTE 구현
- GrapheneOS는 표준 랜덤 태그와 전용 free 태그를 사용하는 hardened_malloc의 일부로 더 나은 MTE 구현을 제공함.
- Chromium의 통합을 수정했으며 PartitionAlloc을 개선할 계획임.
GrapheneOS의 MTE 사용
- GrapheneOS는 생산 환경에서 MTE를 사용하는 첫 번째 플랫폼임.
- Vanadium 브라우저는 생산 환경에서 MTE를 사용하는 첫 번째 브라우저임.
- 스택 MTE를 추가하고, PartitionAlloc을 개선하며, 새로운 커널 슬랩 MTE를 만들 계획임.
사용자의 감사
- 사용자들은 GrapheneOS의 블루투스 자동 비활성화 기능에 감사함을 표시함.
GN⁺의 의견
- GrapheneOS는 안드로이드 기반의 보안에 중점을 둔 운영 체제로, 최신 픽셀 기기에서 발견된 메모리 손상 버그를 신속하게 발견하고 대응하는 모습을 보여줌.
- 이러한 빠른 대응은 오픈소스 커뮤니티의 장점을 잘 보여주며, 사용자들에게 더 안전한 모바일 환경을 제공하는 데 기여함.
- 메모리 안전성을 강화하는 Rust 언어로의 코드 포팅은 장기적인 보안 강화를 위한 중요한 단계임.
- 하드웨어 기반의 보안 기능인 MTE를 활성화하는 것은 성능 저하를 최소화하면서 보안을 강화하는 효과적인 방법임.
- 이 기술을 도입할 때는 기존 애플리케이션과의 호환성을 고려해야 하며, 보안 강화를 위한 적절한 테스트와 유지보수가 필요함.
Hacker News 의견
-
메모리 태깅 확장 기능은 기본적으로 활성화되어 있지 않지만, 개발자 옵션을 통해 누구나 활성화할 수 있음. 특정 앱을 테스트하고자 할 때 한 번만 활성화하거나, 원할 때까지 유지할 수 있음.
-
Graphene OS 설치가 어려운지, 특별한 케이블이 필요한지, 안드로이드 장치를 잘 알아야 하는지, 아니면 지침을 따르기만 하면 되는지에 대한 답변을 Graphene OS 사용자에게 기대함.
-
Graphene OS를 일상적으로 사용하는 것이 불편한지, 휴대폰이 자주 충돌하여 며칠간 디버깅이 필요한지, 은행 앱이 작동하는지에 대한 경험을 공유해달라는 요청.
-
Pixel 팀이 메모리/캐시 사용량을 3.125% 절약하기 위해 중요한 하드웨어 보안 기능(MTE)을 OS에서 활성화하지 않는 결정을 어떻게 정당화하는지 궁금해함. 힙 MTE는 비동기 모드에서 거의 성능 오버헤드가 없으며, 비대칭 모드에서 SSP와 같은 기존의 점점 효과가 떨어지는 보호 기능보다 저렴함.
-
MTE와 CHERI 보안 기술의 비교에 대한 질문.
-
GrapheneOS가 보안 측면에서 다른 것들보다 훨씬 앞서 있어서, Pixel 하드웨어 이외의 선택이 의문스러움. 하지만 교체 가능한 배터리를 갖고 싶은 강한 욕구 표현.
-
최신 Raspberry Pi와 같은 단일 보드 컴퓨터가 Arm MTE를 구현하는지에 대한 질문.
-
Solaris SPARC 2015년도 하드웨어나 이전의 메모리 태그 아키텍처처럼 메모리 부패 문제를 해결할 수 있는 주류 하드웨어를 기다림. 이러한 문제는 대부분 기술이 부족한 개발자에 의해 발생함.
-
2024년에는 seL4의 정신을 계승하면서도 더 엄격한 형식으로 검증된 운영 체제, 애플리케이션, 도구가 필요함. 현재와 같이 충분히 테스트되지 않고 과도하게 설계된 코드베이스 시스템을 사용하는 것은 사용자에게 위험을 초래하고, 많은 버그와 멀웨어 및 해킹의 공격 표면을 제공함.
-
깔끔하고 통합된 사용자 경험(UX)과 사용 가능한 기능을 제공하지 않으면, 모든 엔지니어링이 헛된 것임.
-
안드로이드가 블루투스 코드의 상당 부분을 Rust로 포팅했음. 더 많은 코드를 Rust로 포팅하는 데 더 많은 자원을 투입해야 한다는 것을 보여주는 사례임.
-
C와 C++로 수년간 작업한 경험이 있지만 Rust 경험은 없는 사람이, C에서 Rust로 포팅하는 과정에서 얼마나 많은 리팩토링이 필요한지 궁금해함. 구글이 이를 어떻게 접근하고 있는지, 가능한 한 직접 "번역"하려고 하는지, 아니면 주요 리라이트/리팩토링 기회로 보는지에 대한 질문.
-
안드로이드 블루투스 스택이 표준 리눅스 배포판 데스크톱 시스템에서 사용 가능한지 여부에 대한 궁금증.