Cato Networks의 위협 연구 조직 Cato CTRL에 따르면, Mac용 OpenAI Codex를 찾던 사용자를 겨냥한 악성 광고 캠페인이 발견됐습니다. “codex macos download” 같은 검색어에 노출된 스폰서 결과를 클릭하면, 공식 Codex 다운로드 포털처럼 꾸민 Google Sites 페이지로 이동했습니다. 하지만 이 페이지에는 정상적인 애플리케이션 설치 파일이 없었습니다. 대신 사용자가 터미널을 열고 명령어를 직접 실행하도록 유도했습니다. 2910
공격은 검색 광고에서 시작됐다
공격 대상은 이미 Codex 설치 방법을 찾고 있던 사용자였습니다. 악성 광고는 정상 검색 결과와 나란히, 또는 그보다 위에 표시될 수 있었고, 방문자를 OpenAI Codex 공식 페이지처럼 디자인된 Google Sites로 보냈습니다. 가짜 페이지에는 macOS와 Linux용 다운로드 선택지가 모두 표시됐지만, 연구진이 실제 악성 페이로드 전달을 확인한 대상은 macOS였습니다. 510
새로 등록한 수상한 도메인 대신 Google이 제공하는 정상 서비스의 sites.google.com 주소를 이용한 점도 공격의 신뢰도를 높였습니다. 관련 보도에 따르면 공격자는 도용한 Google Ads 계정을 사용했을 가능성도 있습니다. 이 경우 광고가 새로 만든 계정이 아니라 기존 광고주 계정에서 집행된 것처럼 보일 수 있습니다. 12
설치 파일 대신 사용자가 감염 명령어를 실행했다
가짜 포털은 의심스러운 DMG 파일을 내려받아 열라고 하지 않았습니다. 대신 터미널을 열고 특정 명령어를 복사해 붙여넣으라고 안내했습니다. 이는 ClickFix로 불리는 사회공학 기법입니다. 공격자가 가짜 설치 절차나 문제 해결 단계를 제시하면, 사용자가 직접 감염에 필요한 실행 동작을 하게 되는 방식입니다. 21213
명령어 앞부분은 Codex 설치에 쓰일 법한 npm 명령어처럼 보였습니다. 그러나 실제로는 Base64로 인코딩된 URL을 해독하고, 원격 스크립트를 내려받은 뒤 그 결과를 macOS의 zsh 셸로 넘겼습니다. 3413
개발자에게 익숙한 명령줄 설치 방식을 악용한 셈입니다. 일반적인 악성코드 공격처럼 갑자기 내려받아진 앱 파일을 열어야 하는 상황이 아니기 때문에, 사용자가 파일을 살펴보며 의심할 기회도 줄어듭니다. 공식 제품 페이지에서 복사한 설정 명령어를 실행하는 일처럼 보이게 만든 것이 핵심입니다. 212
최종 단계에서 AMOS로 의심되는 악성코드 전달
공개된 분석에 따르면 감염 과정은 여러 단계로 구성됐습니다. 붙여넣은 명령어가 실행된 뒤 후속 스크립트는 최종 Mach-O 실행 파일을 내려받아 /tmp/helper에 저장하고, xattr -c로 파일의 확장 속성을 제거한 다음 실행 권한을 부여해 구동했습니다. 3411
확장 속성을 제거하면 macOS의 격리와 관련된 메타데이터가 사라질 수 있습니다. 그 결과 다운로드된 파일을 열 때 표시되는 보안 경고가 줄어들 가능성이 있습니다. 411 기술 분석에서는 최종 바이너리가 Intel과 Apple Silicon을 모두 지원하는 형태였다고 전했습니다. 1521
Cato는 이 활동이 공개적으로 문서화된 Atomic macOS Stealer, 즉 AMOS와 강한 유사성을 보인다고 설명했습니다. 다른 보도 역시 해당 페이로드를 정상적인 Codex 구성 요소가 아니라 AMOS로 의심되는 인포스틸러로 분류했습니다. 29 AMOS는 브라우저 데이터, 로그인 자격 증명, 암호화폐 지갑 정보 등을 탈취하는 악성코드로 알려져 있습니다. 1
신뢰할 만한 서비스가 공격의 외피가 됐다
이번 캠페인은 하나의 고도화된 취약점보다, 익숙한 신뢰 신호를 여러 겹으로 쌓아 사용자를 설득했습니다.
- 검색 의도: Codex 설치 방법을 찾는 사용자에게 광고가 직접 노출됐습니다.
- 유료 검색 노출: Google 검색에서 시선이 먼저 닿는 위치에 스폰서 결과가 표시됐습니다. 912
- Google 호스팅: 목적지에 정상적인
sites.google.com 도메인이 사용됐습니다. 29
- 브랜드 모방: 페이지가 OpenAI Codex의 익숙한 디자인과 브랜딩을 재현했습니다. 1012
- 개발자 친화적 표현: 명령어가 일반적인 npm 설치 작업처럼 보였습니다. 35
- 사용자 주도 실행: ClickFix가 피해자에게 명령어를 직접 실행하게 했습니다. 213
가짜 포털은 iframe을 사용해 별도의 악성 도메인에 있는 공격자 제어 콘텐츠를 페이지 안에 표시하기도 했습니다. 이에 따라 겉으로 보이는 주소에는 Google Sites의 신뢰성을 유지하면서, 실제 설치 화면과 동작은 별도 서버에서 통제할 수 있었습니다. 9
일부 2차 보도는 기기와 URL에 따라 정상 페이지를 보여주는 방식이나 페이로드를 바꾸는 방식 등 추가적인 회피 기법도 언급합니다. 다만 제공된 자료만으로는 각 기법의 구체적인 구현이 모두 독립적으로 확인된 것은 아니므로, 캠페인 전체의 확정적 특징으로 단정할 필요는 없습니다.
Mac 개발자가 기억해야 할 점
가장 중요한 원칙은 간단합니다. 다운로드 페이지에서 복사한 명령어도 결국 코드를 실행하는 행위입니다. 검색 결과가 그럴듯하거나, Google이 호스팅하는 주소이거나, 익숙한 브랜드가 표시된다고 해서 안내된 명령어가 정상이라는 뜻은 아닙니다.
개발자 도구를 설치할 때는 다운로드 바이너리뿐 아니라 설치 명령어도 확인해야 합니다. 제품의 공식 채널에서 게시자와 설치 방법을 다시 확인하고, 출처가 불분명한 명령어를 터미널에 그대로 붙여넣지 않는 것이 좋습니다. 특히 URL이 인코딩돼 있거나 원격 스크립트를 내려받아 셸로 넘기는 명령어는 심각한 경고 신호로 봐야 합니다.
이번 캠페인은 최신 악성코드 공격이 제품 자체보다 제품에 도달하는 경로를 노릴 수 있다는 점을 보여줍니다. 검색 광고가 첫 신뢰를 만들고, Google 호스팅이 이를 보강했으며, OpenAI 브랜딩이 페이지를 익숙하게 보이도록 했습니다. 이어 ClickFix가 그 신뢰를 사용자가 승인한 악성코드 실행으로 바꿨습니다. 234