화이트하우스 공식 앱의 네트워크 트래픽을 가로채 분석한 결과
(atomic.computer)- 화이트하우스 iOS 앱의 실제 HTTPS 트래픽을 MITM 프록시로 캡처해 어떤 서버와 데이터를 주고받는지 분석함
- 앱은 whitehouse.gov 외에도 Elfsight, OneSignal, YouTube, Google DoubleClick, Facebook, Twitter 등 31개 제3자 호스트와 통신함
- OneSignal로는 언어, 시간대, IP, 기기 모델, 세션 횟수 등 사용자 프로파일링 정보가 지속적으로 전송됨
- Elfsight 위젯 로더를 통해 외부 스크립트가 실행되고, Google DoubleClick 광고 추적 코드도 앱 내부에서 동작함
- 앱의 프라이버시 매니페스트에는 “데이터 수집 없음”으로 표시되어 있으나, 실제로는 다수의 제3자 추적 및 데이터 전송이 이루어짐
네트워크 트래픽 분석 개요
- 화이트하우스 공식 iOS 앱의 네트워크 트래픽을 MITM(중간자 공격) 프록시로 캡처해 분석
- macOS 환경에서 mitmproxy를 설치하고, iPhone의 모든 HTTPS 트래픽을 프록시를 통해 기록
- 앱 버전은 v47.0.4 (build 81) 이며, Home, News, Live, Social, Explore 탭을 모두 탐색
- 트래픽은 변조 없이 복호화 및 기록되었으며, 일반 사용자 사용 방식 그대로 수행
앱이 접속한 서버
- 단일 세션에서 앱은 31개의 고유 호스트에 요청을 전송 (iOS 시스템 트래픽 제외)
- 총 206건의 요청 중 48건(23%) 만 whitehouse.gov로 전송
- 나머지 158건(77%) 은 Elfsight, OneSignal, YouTube, Google DoubleClick, Facebook, Twitter 등 제3자 서비스로 전송
- 주요 요청 대상
- whitehouse.gov: WordPress API (뉴스, 홈, 갤러리 등)
- YouTube: 동영상 임베드 및 썸네일
- Elfsight: 위젯 로딩, 정적 자산, 파일 저장소, 부트 API 등
- OneSignal: 분석 및 사용자 프로파일링
- Facebook/Twitter CDN: 이미지 로드
- Google APIs 및 DoubleClick: 광고 및 추적
OneSignal로 전송되는 데이터
- 앱 실행 시
api.onesignal.com으로 HTTPS 요청 본문이 전송됨- 포함된 정보: 언어, 시간대, 국가, IP 주소, 첫 실행 및 마지막 활동 시각, 기기 모델, OS 버전, 네트워크 유형(WiFi/셀룰러), 통신사, 탈옥 여부, 세션 횟수, 세션 시간, 고유 식별자
- 앱 실행마다 PATCH 요청을 다수 전송해 프로필을 갱신
- 첫 실행 시 18건의 PATCH 요청, 전체 세션에서는 9건의 OneSignal 요청 확인
- 순서: GET으로 기존 프로필 조회 → PATCH로 세션 정보 업데이트
- OneSignal은 세션별 IP, 활동 시간, 세션 횟수, 세션 지속 시간을 지속적으로 기록
- IP 주소 변경 시 프로필 업데이트
-
first_active타임스탬프는 설치 시점 이후 변경되지 않음
- 결과적으로 OneSignal은 사용자별 지속적 프로필을 유지하며, 앱 사용 패턴과 네트워크 환경을 추적
- 트래픽의 User-Agent는
WhiteHouse/81 CFNetwork/3860.400.51 Darwin/25.3.0
Elfsight 관련 트래픽
- 정적 분석에서 확인된 6개 위젯과 2단계 JavaScript 로더가 실제 트래픽에서도 확인됨
- Social 탭을 열면 앱이 13개의 Elfsight 도메인에 접속
-
elfsightcdn.com,core.service.elfsight.com,static.elfsight.com,storage.elfsight.com,widget-data.service.elfsight.com,video-proxy.wu.elfsightcompute.com등
-
-
/p/boot/요청을 통해 각 위젯 ID를 전송하면 서버가 실행할 스크립트 목록(assets 배열) 을 반환- 예: TikTok →
tiktokFeed.js, Instagram →instashow.js, Facebook →facebookFeed.js, YouTube →yottie.js
- 예: TikTok →
- 앱의
loadAssets함수가 각 URL을<script>로 삽입해 실행- 서버가 어떤 코드가 실행될지 결정하는 구조
- Elfsight 서버는 세션 중 10개 이상의 쿠키를 설정
-
elfsight_viewed_recently, Cloudflare 추적 쿠키(_cfuvid,__cf_bm), 세션 식별자 등 포함
-
Google DoubleClick 광고 추적
- YouTube 임베드 시 Google 광고 추적 인프라가 함께 로드됨
-
googleads.g.doubleclick.net,static.doubleclick.net요청 확인
-
- DoubleClick은 Google의 광고 제공 및 추적 플랫폼으로,
화이트하우스 공식 앱 내부에서 광고 추적 코드가 실행됨
- 앱의 프라이버시 매니페스트에는 이 내용이 명시되지 않음
프라이버시 매니페스트와 실제 동작의 불일치
- 앱의 선언된 프라이버시 설정:
NSPrivacyCollectedDataTypes: [] NSPrivacyTracking: false - 실제 세션에서 확인된 데이터 전송:
- OneSignal로 기기 모델, OS, IP, 시간대, 언어, 세션 횟수, 세션 시간, 고유 식별자 전송
- Elfsight 도메인 13곳 접속 및 10개 이상 추적 쿠키 수신
- Google DoubleClick 광고 추적 코드 실행
- Facebook, Twitter/X, YouTube, Google API 요청 발생
- 결과적으로 앱은 “데이터 수집 없음”으로 표시되어 있으나, 실제로는 다수의 제3자 추적 및 데이터 전송이 이루어짐
분석 방법론
- 프록시 도구: mitmproxy (mitmdump)
- 환경: macOS, iPhone(iOS), 동일 WiFi 네트워크
- 인증서: mitmproxy CA를 iOS 신뢰 설정에 추가
- 캡처 범위: 앱의 5개 탭 전체 탐색 중 발생한 HTTPS 트래픽
- 변조 여부: 없음, 트래픽은 관찰만 수행
- 개인정보 처리: IP, 기기 식별자, OneSignal ID 등은 게시물에서 모두 마스킹 처리
- 서버 침입 또는 조작 행위 없음, 앱의 자발적 통신만 기록
관련 연구
- 화이트하우스 iOS 앱의 정적 분석 보고서
- Android 버전의 Thereallo 분석 결과
Atomic Computer 소개
- Atomic Computer는 사이버보안, 인프라, 개발 서비스를 제공하는 기업
- 모바일 앱 보안 평가 및 분석 서비스를 수행
Hacker News 의견들
-
전체 3rd-party 요청 중 43%가 Google 관련(YouTube, Fonts, Analytics 포함)이고, Facebook과 Twitter까지 합치면 55% 정도임
정부 앱이 과도한 트래킹이나 분석 코드를 넣는 건 문제지만, Google Fonts나 YouTube 임베드는 그리 심각하지 않다고 생각함
제목에서 뭔가 Palantir나 ICE 같은 충격적인 도메인을 기대했는데, Google/Facebook이라니 좀 밋밋함
제목은 단순히 “77%가 3rd-party 요청”이라고 하기보다, 요청의 성격과 심각도를 중심으로 써야 함
참고로 atomic.computer도 Google Fonts와 Analytics를 쓰고 있음. 3rd-party 요청 자체를 나쁘다고 몰아가기 전에 자기 사이트도 점검해야 함- ICE나 Palantir가 Google이나 Facebook에서 데이터를 사는 게 금지된 건 아님
결국 앱을 통해 어떤 데이터를 추적할지 스스로 결정할 수 있고, 일반적인 트래킹 제공자를 통해 세탁하듯 데이터를 모을 수도 있음 - 실제 기사에서는 Google이나 YouTube보다 OneSignal과 Elfsight 요청에 초점을 맞췄음
Google 관련 요청은 투명성을 위해 포함된 것으로 보이며, White House 앱을 비난하려는 의도는 아님 - 현재 정부가 미국을 권위주의적 방향으로 몰고 가려는 시도가 보이지만, 거대한 시스템이라 쉽게 바뀌지 않는다고 생각함
- “atomic.computer도 3rd-party 요청을 쓴다”는 식의 반론은 ‘메신저를 공격하는 논리’ 라 약함
atomic.computer는 3rd-party 요청이 본질적으로 나쁘다고 말한 게 아니라, 데이터 수집과 추적의 수단으로 분석했을 뿐임
사용자는 데이터가 수집된 후 어떻게 쓰이는지 통제할 수 없고, 결국 통제권의 부재가 핵심 문제임
- ICE나 Palantir가 Google이나 Facebook에서 데이터를 사는 게 금지된 건 아님
-
mitmproxy를 Mac에 설치하고 iPhone 트래픽을 그쪽으로 라우팅해 HTTPS를 복호화했다고 함
iPhone에서 사용자 인증서를 신뢰하게 만드는 게 그렇게 쉬운 일인지 궁금했음
Android에서는 네트워크 트래픽을 들여다보는 게 꽤 번거로움
이런 실험은 우리가 기기 통제권을 가져야 한다는 점을 잘 보여줌. 데이터가 어디로, 어떤 내용이 전송되는지 알 권리가 있음
예전에 Zoom이 중국으로 트래픽을 보냈던 사례나, Facebook이 앱 내 브라우징 데이터를 추적했던 일도 떠오름- iOS는 여전히 기본적으로 사용자 설치 인증서를 신뢰함
다만 앱이 자체 OpenSSL을 쓰거나 certificate pinning을 적용하면 예외임
Facebook이나 Twitter 같은 대형 앱은 대부분 pinning을 사용하지만, 이런 단순한 앱은 그렇지 않음 - iOS에서 mitmproxy 설정은 Android보다 훨씬 쉬움
다만 pinning이 걸린 앱은 우회가 어렵고, 자체 앱 설치가 가능한 플랫폼이 더 유리함 - CA 설치 과정이 번거롭긴 하지만, pinning이 없는 앱은 트래픽 가로채기가 어렵지 않음
은행 앱처럼 pinning이 강한 경우는 루팅된 기기가 필요함 - 흥미로운 건, 일부 보안 커뮤니티가 MITM 프록시를 비난하면서도 정작 기업 중심 시각에 물들어 있다는 점임
- Zoom이 중국으로 트래픽을 보냈을 때, 정부 회의 영상이 그대로 넘어갔을 가능성도 있음
그게 딥페이크 학습 데이터로 쓰였을지도 모른다는 상상까지 듦
- iOS는 여전히 기본적으로 사용자 설치 인증서를 신뢰함
-
나는 대부분의 광고 도메인(예: doubleclick.net)을 DNS 수준에서 차단함
뉴스 사이트를 포함해 대부분의 웹사이트가 수많은 3rd-party 연결을 여는 게 놀라움
atomic.computer도 Cloudflareinsights와 Google Fonts를 불러오려 하지만 내 네트워크에서는 차단됨
이런 요청들이 Google이 사용자를 인터넷 전반에서 추적하게 만드는 주요 원인임 -
정부 앱은 일반 B2C 앱보다 훨씬 높은 기준을 적용받아야 함
Google Fonts를 불러오는 건 괜찮지만, OneSignal이나 Facebook으로 텔레메트리를 보내는 건 다른 문제임
호주에서는 PSPF와 ISM 규정상, 정부 데이터가 신뢰되지 않은 외부로 전송되면 안 됨
이런 앱은 IRAP 평가에서 바로 탈락함
해결책은 간단함 — 폰트는 자체 호스팅, 분석은 1st-party로, 외부 요청은 데이터 유출 벡터로 간주해야 함- 실제로는 높은 기준이 존재하지만, 현 행정부가 그 기준을 지키지 않음
- 왜 정부 앱이 더 높은 기준을 가져야 하는지 의문이라는 의견도 있음. 결국 브랜드 문제일 뿐이라고 봄
-
대부분의 B2C 앱도 3rd-party 요청 비율이 50% 이상임
White House 앱의 77%가 놀랍지는 않지만, 앱스토어의 데이터 수집 항목을 잘못 기재한 게 문제였음
이후 수정되어 현재는 올바르게 표시됨- 나는 White House 앱의 3rd-party 텔레메트리도, 다른 앱의 것도 모두 반대함. 멀티태스킹 가능함
- 정부 앱이 B2C처럼 만들어진 게 바로 문제의 핵심임
- White House 앱이 Huawei로 데이터를 보낸다는 식의 과장된 주장도 있었지만, 실제로는 다른 앱보다 20% 더 많다는 점이 놀라움
-
정부 앱도 높은 기준을 받아야 하지만, 77%라는 수치가 업계 평균과 크게 다르지 않을 수도 있음
수많은 앱이 광고 코드와 트래커를 포함하므로, 이 정도면 일반적인 수준일 가능성도 있음 -
앱이 사용하는 SDK 목록을 AppGoblin에서 확인할 수 있음
-
Privacy manifest에는 “데이터 수집 없음”이라고 되어 있지만, 실제로는 OneSignal로 기기 모델, IP, 세션 수, 추적 ID를 전송함
이는 명백한 허위 인증(false attestation) 문제임 -
다음 단계는 아마 광고 추가일 것 같음