6호02 / 05

광고 타겟팅이 스파이웨어 배달 경로가 됐다 — Citizen Lab의 AdFection 보고서

원문 Citizen Lab ↗

Citizen Lab 보고서 195호, 10월 15일. 광고 보안 회사 Confiant의 조사와 동시에 공개됐습니다. 제목은 "Discover-Tech가 타겟 광고를 스파이웨어 파이프라인으로 바꾼 방법", 작전명은 AdFection입니다.

구조

  1. 광고가 앱이나 웹페이지에서 렌더링될 때 Discover-Tech의 서버(NOAS)에 연결해 광고 식별자와 IP를 보냅니다.
  2. 서버는 그 식별자가 표적 목록에 있는지 판단합니다. 아니면 0바이트 응답. 맞으면 JavaScript를 돌려줍니다.
  3. 돌아온 스크립트가 브라우저 익스플로잇을 거쳐 스파이웨어를 설치합니다. 확인된 페이로드는 Candiru(Integrity Labs로 이름을 바꿈)입니다.

광고를 클릭할 필요가 없습니다. 표시되는 것으로 충분합니다. 광고 타겟팅이 원래 하는 일 — 특정 식별자를 가진 사람에게만 특정 광고를 보여주는 것 — 이 그대로 공격 표적 선정이 된 것입니다.

규모

  • Al Jazeera: 2024~2025년 최소 45대 기기 표적
  • Discover-Tech 입찰 데이터(2026년 3~6월): 약 37.7억 건 입찰, 4.4억 건 낙찰
  • 스크립트 태그가 든 광고 약 7.19억 건(19%)
  • 노출된 앱 75,373개, 웹사이트 120,768개
  • Candiru 관련 인프라의 "eligible users" 2026년 1~6월 약 363만 명

노출된 앱·사이트 수는 광고가 실린 곳의 수입니다. 그 사용자가 모두 감염된 것이 아니라, 표적 식별자와 맞을 때만 페이로드가 갑니다.

관련 기업

Discover-Tech는 2020년 설립된 이스라엘 회사이고 CEO는 Dekel Boni입니다. 플랫폼 Controlium은 모바일 광고 ID, 브라우저 ID, IP로 개인을 표적화하는 기능을 광고 상품으로 팝니다. 보고서는 Bindecy, Intelos를 연결했고, 통신사 취약점으로 전화번호를 노출시키는 별도 작전(DARK CARTOGRAPHER)을 다음 보고서로 예고했습니다.

플랫폼 대응

Google은 광고 거래소 접근을 종료했습니다. IAB Europe는 10월 초 벤더 목록에서 제거, Beeswax는 플랫폼에서 제거, Vungle(Liftoff)은 일시 중지 후 검토, Eskimi는 계정·도메인 차단입니다.

글에 없는 것

사용된 브라우저 취약점의 CVE가 없습니다. 보고서의 권고 절은 본문이 길어 확인하지 못했고, 요약에서는 규제 당국 조사와 업계 차원 대응을 요구합니다. Discover-Tech 측 입장도 보고서에서는 확인되지 않습니다.

실무에서 할 일

광고를 싣는 쪽에서 당장 할 수 있는 건 많지 않습니다. 프로그래매틱 광고는 어떤 크리에이티브가 실릴지 사이트 운영자가 고르지 않습니다. 할 수 있는 것: 광고 iframe에 sandbox 속성을 두고, 광고 스크립트가 페이지 컨텍스트에 닿지 않게 격리하는 것. 앱이라면 광고 SDK가 WebView로 임의 스크립트를 실행하는 범위를 보는 것. 그리고 이 보고서를 광고 파트너에게 보내 "Discover-Tech/Controlium 경유 수요를 차단했는가"를 묻는 것입니다. 사용자 쪽에서는 브라우저·OS 업데이트가 전부입니다 — 제로클릭은 익스플로잇에 의존하고, 익스플로잇은 패치로 죽습니다.

  1. 01Telegram Desktop 원클릭 계정 탈취 — 링크 하나로 세션 파일을 빼간다, 조용히 고쳐졌다
  2. 02광고 타겟팅이 스파이웨어 배달 경로가 됐다 — Citizen Lab의 AdFection 보고서지금 읽는 글
  3. 03"패스키는 함정이다" vs "아니다" — 논쟁의 실제 쟁점은 어테스테이션 하나
  4. 04Go 1.27 — 읽지 않은 HTTP/1 응답 본문을 Transport가 알아서 비운다, 100회 요청이 710ms에서 150ms로
  5. 05윤초가 끝난다 — 2027년 5월 20일부터 연속 UTC, UT1과의 허용 차이는 1시간

2026년 10월 15일에 올라온 글

그날 대시보드 →
  1. ·Go 1.27 — 읽지 않은 HTTP/1 응답 본문을 Transport가 알아서 비운다, 100회 요청이 710ms에서 150ms로

댓글

불러오는 중…