작은 앱을 만들고 첫 광고에 돈을 썼는데, 광고 계정이 악성 소프트웨어를 이유로 정지됐다. macOS용 터미널 앱 RACE 개발자가 9월 9일 공개한 경험이다. 개발자는 구글 광고에 500달러를 쓴 뒤 계정이 정지됐고, 보안 검사 결과를 제출해도 이의신청이 거절됐다고 밝혔다.
계정은 이후 복구됐다. 9월 10일 확인한 원문 상단 수정에 따르면 개발자는 해커뉴스에서 관심을 받은 뒤 계정을 되찾았지만, 무엇이 정지를 촉발했는지는 여전히 설명받지 못했다.
서명된 앱과 정적 사이트도 왜 광고가 막혔나
RACE는 여러 터미널을 한 화면에 배치하고, 앱을 다시 열어도 작업하던 셸 세션을 이어 쓰게 하는 앱이다. 개발자 설명에 따르면 앱에는 코드 서명과 애플 공증이 적용돼 있었다. 제품 사이트는 정적 페이지였고, 다운로드 파일은 클라우드플레어 R2에 저장했다. 광고를 신청할 당시 외부 자바스크립트는 클라우드플레어 분석 도구만 사용했다고 한다.
구글이 제시한 항목은 ‘악성 소프트웨어’와 ‘침해된 사이트’였다. 구글 광고 정책에서 전자는 기기나 네트워크에 해를 끼치거나 무단 접근하려는 소프트웨어를 뜻한다. 후자는 운영자 모르게 코드가 변조된 사이트를 가리킨다. 광고 문구만 심사하는 것이 아니라 사이트가 제공하거나 연결하는 소프트웨어도 정책 적용 대상이다.
개발자는 백그라운드 셸 프로세스를 유지하는 기능이 오탐의 원인일 수 있다고 추측했다. 앱 삭제 뒤 프로세스를 정리하는 동작도 바꿨다고 설명한다. 셸 유지 기능이 원인이라는 설명은 개발자의 가설이며, 구글이 밝힌 정지 사유는 아니다.
‘문제 없음’이라는 검사 결과는 어디까지 유효한가
개발자는 세이프 브라우징에서 제품 사이트와 다운로드 도메인을 각각 검사했고 모두 ‘No unsafe content found’가 나왔다고 밝혔다. 공개한 제품 사이트 화면의 상태 갱신일은 2026년 9월 9일이다. 이 결과는 해당 주소에 대해 세이프 브라우징이 어떤 상태를 보고했는지 보여 준다.

서치 콘솔의 보안 문제 보고서에서도 두 도메인 모두 ‘No issues detected’가 나왔다고 설명했다. 공개한 제품 사이트 화면에는 수정할 감염 페이지나 악성 리소스가 나오지 않았다.

개발자는 배포 파일의 바이러스토털 검사, 서명과 공증 상태, 사이트의 자바스크립트와 접속 로그도 점검했다고 밝혔다. 배포 파일 검사는 검사에 제출한 파일에 대한 결과다. 사이트와 파일을 각각 확인해야 광고가 연결하는 경로를 설명할 수 있다.

보안 검사는 이의신청에 쓸 증빙이지만 광고 승인서는 아니다. 구글은 광고 정책 판단에 광고, 웹사이트, 계정, 제3자 자료 등 여러 출처를 활용할 수 있다고 명시한다. 세이프 브라우징의 상태나 특정 배포 파일의 검사 결과만으로 광고 계정 심사까지 통과했다고 판단하면 안 된다. 소규모 운영자에게 필요한 구분은 ‘검사한 대상에서 문제가 보고됐는가’와 ‘이 계정으로 광고할 수 있는가’다.
설명 없는 거절은 무엇을 고치기 어렵게 하나
개발자는 이의신청이 거절될 때 새 정보를 제출하라는 안내를 받았지만, 무엇이 악성이고 어디가 침해됐는지, 기존 증빙이 왜 부족한지는 듣지 못했다고 썼다. 신청을 반복하다 일주일 동안 막힌 적도 있다고 한다. 앞서 덧붙인 수정 내용에 따르면 이후 계정은 복구됐다.
구글 공식 도움말도 같은 정지에 대한 신청이 너무 많으면 처리하지 않을 수 있으며, 이의신청 기능의 오용 징후가 있으면 일부 신청 처리를 7일간 중단한다고 설명한다. 한 번에 하나씩 신청하라는 안내도 있다. 이 규정만으로 개발자의 개별 차단 사유를 알 수는 없지만, 같은 내용을 여러 번 보내는 방식이 복구를 앞당긴다고 기대하기는 어렵다.
원인이 구체적이면 해당 파일이나 페이지를 고치고 변경 전후를 비교할 수 있다. 이 사례에서는 운영자가 점검 범위를 넓혀도 어떤 증거가 반박에 필요한지 알기 어려웠다. 계정 복구로 광고할 길은 다시 열렸지만, 같은 상황을 피하려면 무엇을 바꿔야 하는지는 남았다. 외부 커뮤니티의 관심을 복구 절차처럼 사업 계획에 넣을 수도 없다.
첫 광고비를 쓰기 전에 남겨 둘 기록
이 사례를 소규모 제품 운영에 적용한다면, 첫 캠페인을 시작할 때 광고 도착 페이지와 실제 다운로드 주소부터 기록해 두는 편이 낫다. 배포 버전별 파일 해시, 서명·공증 결과와 검사 시각을 함께 남기면 정지 통보가 왔을 때 어느 파일을 점검했는지 설명할 수 있다. 외부 스크립트나 리디렉션이 바뀌었다면 변경 이력도 보관한다. 현재 페이지가 깨끗하다는 화면만으로 과거 광고가 연결한 경로까지 설명할 수는 없기 때문이다.
정지 통보를 받으면 정책 항목과 통보 시각, 신청 번호를 보존하고, 새 이의신청에는 이전 제출 이후 추가한 증빙과 수정 사항을 구분해 적는 것이 좋다. 백그라운드 실행이나 삭제 후 남는 프로세스처럼 오해할 만한 동작은 사용 목적과 종료 방법을 설명할 수 있어야 한다. 기록을 남기면 어떤 증빙을 제출했고 무엇을 바꿨는지 추적할 수 있다.
유입 경로도 광고 시작 전에 마련해야 한다. 제품 사용법을 검색으로 찾을 수 있게 정리하거나, 수신에 동의한 이용자의 이메일 목록과 관련 커뮤니티의 제품 소개 경로를 확보하는 방식이다. 다른 유입원이 곧바로 광고 성과를 대신하지는 못해도, 광고 계정 하나가 멈췄을 때 고객에게 업데이트나 출시 소식을 전할 수는 있다.
출처: RACE 개발자 경험과 계정 복구 수정 · 구글 광고 네트워크 악용 정책 · 구글 광고 계정 정지 안내
