2026년 9월 4일, 이커머스 보안 업체 Sansec은 매직토(Magento) 오픈소스와 어도비 커머스(Adobe Commerce)를 노린 새로운 공격을 포착했다. 공격자는 로그인 절차 없이 스토어 서버에 악성 코드를 심을 수 있는 미패치 제로데이를 악용하고 있었다. Sansec은 이 취약점에 '스타일스머글러(StyleSmuggler)'라는 이름을 붙이고 다음 날 긴급 공개했다. 아직 CVE 번호도 공식 패치도 없는 상태라, 전 세계 매직토·어도비 커머스 스토어가 그대로 노출돼 있다.
배경: 누가, 왜
매직토와 어도비 커머스는 전 세계 수많은 온라인 스토어가 쓰는 이커머스 플랫폼이다. 결제·상품·회원 데이터를 함께 다루는 만큼, 오래전부터 공격자들의 표적이었다. 이런 플랫폼이 뚫리면 피해는 스토어 운영사 한 곳에서 끝나지 않는다. 그 스토어에 결제 정보를 넣어둔 고객까지 연쇄적으로 위험에 노출된다.
이번 스타일스머글러는 그중에서도 인증 절차 자체가 필요 없다는 점에서 위험도가 높다. 공격자는 별도 계정이나 관리자 권한 없이, 외부에서 요청 하나만 보내면 된다. 방화벽이나 로그인 페이지 보호 같은 일반적인 접근 통제가 애초에 작동할 여지가 없는 구조다.
공격 전개
스타일스머글러는 두 단계로 작동한다. 첫 단계에서 공격자는 매직토 템플릿 시스템의 '스타일(styles)' 속성을 처리하는 과정에 악성 PHP 코드를 끼워 넣는다. Sansec에 따르면 이 요청은 GraphQL 경로를 통해 전달되며, 기존 필터링 로직을 그대로 우회한다. GraphQL은 원래 상품 조회처럼 읽기 전용 요청에 쓰이는 기능이라, 보안팀의 관심 밖에 있는 경우가 많다.
두 번째 단계는 트리거다. 매직토가 결제 실패 시 자동으로 발송하는 '결제 실패 알림' 이메일이 렌더링되는 순간, 심어둔 코드가 실행된다. 피해자가 이메일을 열어볼 필요조차 없다. 서버가 알림 메일을 만드는 정상적인 업무 처리 과정 자체가 공격의 방아쇠가 되는 셈이다.
피해와 결과
코드가 실행되면 서버에는 지속형 백도어가 설치된다. Sansec은 이 백도어가 Rust로 작성된 약 1.9MB 크기의 정적 바이너리이며, 리눅스 커널 스레드처럼 보이도록 [kworker/u:8:0]이라는 이름으로 위장한다고 밝혔다. 크론에 5분 간격 재실행 항목을 심어두기 때문에, 프로세스가 발견돼 종료되더라도 스스로 되살아난다.
정확히 몇 개 스토어가 감염됐는지는 아직 공개되지 않았다. 다만 Sansec은 완전히 패치가 적용된 2.4.6-p15 버전에서도 첫 피해 사례를 확인했다고 밝혔다. 기존에 알려진 보안 업데이트를 전부 적용해뒀다고 해서 이번 결함까지 막아주지는 않는다는 뜻이다.
탐지 관점
Sansec이 공개한 흔적은 비교적 뚜렷하다. ~/.local/share/.gvfsd/gvfsd-user 경로에 실행 파일이 있는지, 크론탭에 이 경로를 호출하는 5분 간격 작업이 등록돼 있는지 확인하면 감염 여부를 가늠할 수 있다. 백도어는 NTP 포트(123)로 위장한 트래픽으로 외부와 통신하며, ntp.timesysnc.net·time.microsft.run 같은 도메인을 C2 서버 주소로 쓴다.
var/report/와 var/log/system.log 로그에서도 이상 흔적이 남는 것으로 보고됐다. Sansec은 근본 패치가 나오기 전까지 GraphQL 기능을 임시로 비활성화할 것을 권고했다. Disrex·ProxiBlue·Graycore 등 커뮤니티 개발자들이 만든 비공식 완화 패치도 이미 공개돼 있다.
왜 이 사건이 중요한가
이번 사건이 보여주는 건 공격 표면이 사람의 클릭에서 시스템 자체의 정상 동작으로 옮겨가고 있다는 점이다. 결제 실패 알림처럼 매일 자동으로 발송되는 이메일이 공격 트리거가 된다면, 직원 대상 피싱 교육이나 사용자 주의만으로는 막을 방법이 없다.
이커머스 플랫폼을 자체 구축해 운영하는 국내 쇼핑몰도 이 구조에서 예외가 아니다. 특히 결제 관련 알림처럼 반드시 자동 발송돼야 하는 기능을 커스터마이징해 쓰는 경우, 이런 유형의 우회 공격에 그대로 노출될 수 있다는 점을 새겨둘 필요가 있다.
참고 자료
안내 및 법적 고지
AI 활용 안내
이 글은 AI(Claude)의 도움을 받아 작성되었습니다.
인용된 통계와 사례는 참고 자료에 명시된 출처에 근거하며, 설명을 위한 일부 표현은 각색되었습니다.
면책 조항
본 글은 보안 인식 제고를 위한 교육 목적으로 작성되었습니다.
언급된 공격 기법을 실제로 시도하는 행위는 「정보통신망법」, 「형법」 등에 따라
처벌받을 수 있으며, 본 블로그는 이에 대한 법적 책임을 지지 않습니다.