이해가 안되고 국내자료가 없어서 정리를 해보았다.
SDK 스푸핑 (SDK spoofing)
일단, 앱 스푸핑 (SDK spoofing) 이라는것이 존재한다. 우리 눈에 보이는 평범한 앱들중 어떤 앱들은 안에 사악한 기능이 포함되기도 한다. 그 사악한 기능이란, 설치되면서 즉시 모바일 기기에 대한 정보를 획득하고 모바일 기기가 admob같은 광고회사와 통신하는 방법에 대해 귀를 기울이면서 방법을 알아낸다.
어떤 데이터로 통신하는지, 어떤 주소로 통신하는지 알아낸다면 이제 실제로 유저가 광고를 보고 앱을 설치할때 발생하는 신호가 생기는 과정을 알아낸다는 것이다.
실제 광고가 포함되어있는 다른 정상적인 앱들에서 어떤 사용자가 설치광고를 통해 앱을 설치했다면 앱을 설치함과 즉시 admob SDK는 admob서버에 ‘XX유저가 YY앱을 설치! 이 광고주에게 비용을 청구하자!’ 라고 시그널을 보내게 된다.
그런데 사기스러운 이상한 앱이 그 신호를 분석하기 시작하여 정상적인 앱을 볼모로 잡고 ‘야 니가 광고를 보고 앱을 설치했다는 그 시그널 그걸 좀 애드몹 서버에 전송해봐’ 라고 시그널을 보낼 수도 있다. 근데 이상태로 전송하는것은 어차피 사기꾼 앱이 아닌 정상적인 앱이 광고를 보고 설치를 했다고 시그널을 보내는 것이므로 사기꾼의 지갑에는 변화가 없다.
따라서 사기꾼앱은 정상적인 앱을 볼모로 잡고, ‘야 애드몹 서버한테 니 앱 유저가 내 광고를 보고 설치했다고 시그널을 한번 보내봐’ 라고 하도록 시그널을 보내게 되는데, 그렇게 된다면 사기꾼의 광고를 보았으므로 사기꾼의 지갑이 부풀려지고 애꿎은 광고주의 돈만 하늘로 날라가게 된다.
실제 앱이 설치된것도 아니고 유저가 인게이지 한것도 없는데, 그냥 설치되었다는 시그널 하나의 사기로 광고주의 돈이 고스란히 사기꾼으로 옮겨가게 되는것이다.
app-ads.txt 의 역할
그렇다면, 정상 앱이 (퍼블리셔) 광고를 받을수 있는 곳을 제한하면 어떨까? 즉 퍼블리셔의 웹사이트가 있다면 이는 사기를 당했을리 만무하므로 여기다가 광고를 받을수 있는 루트만 명시해놓고 여기서만 광고와 상호작용하게 해놓는것이다.
그렇다면 사기꾼 앱이 아무리 정상앱의 시그널을 위조해서 사기꾼의 광고를 봤다고 송출하라고 해도 어차피 정상앱이 보낼수 있는 시그널은 지극히 제한된 상태이므로 (광고가 오는곳이 명시적으로 되어있으므로) 결국에는 시도가 실패하게 된다.
결국, app-ads.txt는 퍼블리셔보다는 광고주에게 이득이 되는데, 그럼에도 불구하고 실제 앱을 배포하는 측의 도움이 없으면, 가짜 시그널을 판별하기가 거의 불가능해진다. 따라서 admob측에서는 퍼블리셔에게 app-ads.txt를 심어놓게끔 권장을 하게 하며, 이제는 강제사항이 되었다. 소중하신 광고주의 돈을 지켜드리기 위해서다.