Magento 제로데이 StyleSmuggler, 최신 패치 쇼핑몰도 뚫렸다

한눈에 결론

  • Adobe는 2026년 9월 7일 보안 공지 APSB26-146에서 Magento 제로데이 CVE-2026-75650을 공개했습니다. 공식 이름 밖의 통칭은 StyleSmuggler입니다.
  • 인증 없이 원격으로 임의의 코드를 실행할 수 있는 취약점이며, CVSS 3.1 점수는 10.0입니다. Adobe는 실제 악용을 인지했다고 적었습니다.
  • 네덜란드 전자상거래 보안업체 Sansec는 첫 확인 공격을 9월 4일 22:20(UTC)로 적었습니다. 7·8월 패치를 적용한 2.4.6-p15 쇼핑몰도 피해 사례로 재현됐습니다.
  • 공식 조치는 핫픽스 VULN-39341 적용 후 암호화 키와 결제·API·관리자 자격 증명을 원천에서 교체하는 것입니다. 패치만 하고 키를 그대로 두면 이미 읽힌 값을 무효화하지 못합니다.
  • 카페24·스마트스토어·아임웹만 쓰는 매장은 이 취약점의 직접 대상이 아닙니다. 자체 호스팅 Magento·Adobe Commerce, 대행 운영 서버가 우선입니다.

Fact Check

항목 현재 판정 근거
인증 없이 코드를 실행할 수 있다 사실 Adobe APSB26-146: Authentication required No, impact Arbitrary code execution
실제 공격이 있었다 사실 Adobe “exploited in the wild”; Sansec 첫 확인 2026-09-04 22:20 UTC
공식 핫픽스가 나왔다 사실 2026-09-07 APSB26-146, 핫픽스 VULN-39341
7·8월 패치로 이미 막혀 있다 거짓 Sansec: 2.4.6-p15, security:patch-status clean 상태에서도 재현
한국 쇼핑몰 피해 규모 공식 미확인 Adobe·Sansec 공개문에 국가별 수치 없음
백도어가 카드 결제를 실제로 빼냈다 공식 미확인 Sansec는 프로세스 설치를 확인했으나, 작성 시점 기준 결제 탈취 규모는 단정하지 않음

확인일: 2026-09-08. 원출처는 Adobe 보안 공지와 Commerce 지식베이스, 1차 분석은 Sansec입니다.


9월 7일에 Adobe가 인정한 것과, 그전에 이미 열린 사흘

Magento 제로데이 논점은 “패치가 있느냐”가 아니라 “패치가 나오기 전에 이미 쓰였느냐”입니다. Adobe는 9월 7일 APSB26-146을 내고 CVE-2026-75650을 긴급 우선순위 1로 분류했습니다. 제품군은 Adobe Commerce, Adobe Commerce B2B, Magento Open Source입니다.

같은 날 Commerce 지식베이스 공지 제목은 “Urgent Action Required”입니다. 공지는 이 취약점이 상인을 대상으로 실제 악용되고 있음을 Adobe가 알고 있다고 명시합니다. 수정 수단은 정기 메이저 업데이트가 아니라 핫픽스 VULN-39341입니다.

시간 순서는 공식 공지보다 앞섭니다. Sansec는 9월 4일 22:20 UTC에 첫 악용을 확인했고, 같은 날 22:40 UTC 전후에 분석을 시작했습니다. 9월 5일에는 깨끗한 Magento Open Source 2.4.7, 2.4.8, 2.4.9 설치본에서 인증 없는 공격 사슬을 재현했습니다. 공식 핫픽스는 9월 7일 20:20 UTC에 공개됐습니다. 그 사이 약 사흘은 최신 월간 패치를 갖춘 매장도 같은 구멍으로 열려 있었습니다.

이 글에서 StyleSmuggler는 Sansec가 붙인 통칭입니다. Adobe 공지의 공식 식별자는 CVE-2026-75650과 APSB26-146입니다. 두 이름을 같은 사건으로 묶되, 제조사 문서에는 CVE와 공지 번호를 우선합니다.


누구에게 급한가, 카페24만 쓰는 매장은 해당 없는가

직접 대상은 스스로 서버를 돌리거나 호스팅 업체에 Magento·Adobe Commerce를 올려 둔 운영자입니다. 에이전시가 고객 매장을 대행 운영하는 경우도 같습니다. 서버 관리 권한이 있는 쪽이 핫픽스와 키 교체를 수행해야 합니다.

카페24, 네이버 스마트스토어, 아임웹, 식스샵처럼 Magento 코드베이스를 쓰지 않는 호스티드 몰은 이번 CVE의 직접 대상이 아닙니다. 다만 같은 사업자가 별도 Magento 해외몰·B2B몰을 운영한다면 그 인스턴스만 따로 봐야 합니다.

BleepingComputer는 Magento가 16만 곳 이상, 상위 100만 사이트 기준으로는 약 1만 4천 곳에 설치돼 있다고 적었습니다. 한국 설치 대수는 공식 통계가 없습니다. 국내에서 체감 대상은 글로벌 브랜드 한국몰, 자체 구축 패션·리테일, 해외 결제 연동 B2B몰 쪽입니다.

창고형 사무실에서 운영자가 노트북 자판을 치고 있고 뒤에 택배 상자가 쌓여 있는 장면
패치 적용 권한은 보통 몰 사장님이 아니라 서버·대행 운영자에게 있습니다.

7·8월 보안 패치를 깔아 둔 버전도 해당된 이유

Adobe 보안 공지의 영향 범위는 다음과 같습니다.

제품 공식 영향 버전
Adobe Commerce 2.4.9-2026-aug 및 이전, 2.4.8-2026-aug 및 이전, 2.4.7-2026-aug 및 이전, 2.4.6-2026-aug 및 이전, 2.4.5-2026-aug 및 이전, 2.4.4-2026-aug 및 이전
Adobe Commerce B2B 1.5.3-2026-aug 및 이전 ~ 1.3.3-2026-aug 및 이전
Magento Open Source 2.4.9-2026-aug 및 이전 ~ 2.4.6-2026-aug 및 이전

공지는 “All platforms”, 우선순위 1입니다. 핫픽스는 위에 적힌 2026-aug 릴리스를 기준으로 시험했습니다. Adobe는 다른 지원 버전에도 동작할 수 있으나 공식 검증은 하지 않았다고 적었습니다.

실무에서 혼동되는 지점은 “방금 보안 패치를 반영했는데도 대상이냐”입니다. Sansec는 첫 피해 매장이 2.4.6-p15이며, 7월·8월 2026 보안 패치를 적용하고 security:patch-status가 깨끗한 상태였다고 적었습니다. 9월 7일에는 2.4.7-p10 매장을 향한 탐색도 막았다고 했습니다. 월간 패치 목록에 체크가 되어 있어도 이번 구멍은 닫히지 않습니다.

분류는 CWE-1336, 템플릿 엔진 특수 문자 미흡입니다. 영향은 임의 코드 실행입니다. 네트워크에서 인증 없이, 사용자 조작 없이 도달할 수 있다고 Adobe가 점수에 반영했습니다. 세션을 Redis나 데이터베이스로 옮기는 구성은 Sansec 기준으로 공격을 막지 못했습니다.


결제 실패 알림이 많아 보이면 먼저 의심하는 이유

공격 원리를 재현 가능한 명령으로 적지는 않습니다. 운영자가 로그에서 걸러야 할 징후만 정리합니다.

Sansec가 붙인 이름 StyleSmuggler는 Magento 템플릿의 styles 속성을 통해 기존 가드를 우회한다는 관찰에서 나왔습니다. 확인된 흐름은 두 단계입니다. 실패 리포트 같은 정상 기능을 통해 코드를 심고, Magento가 “Payment Transaction Failed Reminder” 메일을 렌더링하는 과정에서 그 코드가 실행됩니다. 메일을 누가 열어볼 필요는 없습니다. 메일 발송 자체가 실패해도 실행될 수 있다고 Sansec는 적었습니다.

따라서 짧은 시간에 결제 실패 알림이 급증하면, 실제 카드 거절과 구분해 볼 이유가 있습니다. 정상 거절도 같은 메일을 만들기 때문에 알림만으로 침해를 단정할 수는 없습니다. 반대로 알림이 없다고 해서 안전하다고 보기도 어렵습니다.

9월 4일 이후 심긴 백도어는 Linux 서버에서 배경 프로세스로 남았습니다. Sansec가 공개한 프로세스 이름은 날짜가 지나며 바뀌었습니다. 처음에는 [kworker/u:8:0], 9월 6일 빌드는 fc-cache, 9월 7일에는 chronydgvfsd-user가 추가로 관찰됐습니다. 실제 NTP 데몬이나 폰트 캐시와 이름이 겹치므로, 이름만 보고 정상 프로세스로 넘기면 놓칩니다.

어두운 서버랙 통로에서 한 대의 서버 섀시가 앞으로 빠져 나와 있고 상태 표시등이 켜진 장면
패치 후에도 서버에 남은 위장 프로세스가 있으면 키가 이미 읽혔을 수 있습니다.

핫픽스 VULN-39341을 적용했는지 확인하는 순서

Adobe가 제시한 해결은 제품 업그레이드 한 줄이 아닙니다. Commerce 지식베이스는 핫픽스 적용과 암호화 키·관련 자격 증명 교체를 함께 적습니다.

  1. 공식 공지 APSB26-146과 Commerce 지식베이스에서 본인 버전에 맞는 VULN-39341 핫픽스를 받습니다.
  2. Adobe가 안내하는 Composer 패치 적용 절차를 따릅니다. 압축 파일명은 공지에 VULN-39341-composer-patches.zip으로 나옵니다.
  3. Adobe Commerce on Cloud라면 Quality Patches Tool로 적용 여부를 확인합니다. 공지 예시 명령은 vendor/bin/magento-patches -n status | grep "39341\|Status"입니다. 출력에 VULN-39341이 Applied로 보여야 합니다.
  4. 온프레미스·Open Source도 같은 핫픽스를 올린 뒤, 유지보수 모드와 cron 중지로 키 교체 구간을 만듭니다.

Cloud 인스턴스라고 해서 운영자가 손 놓을 수 있는 구조는 아닙니다. Adobe는 Cloud에서도 핫픽스 적용 여부를 운영자가 확인하라고 적었습니다. 호스티드 N-able처럼 공급자가 일괄 패치했다고 발표한 사례와 다릅니다.

임시 완화로 Sansec는 공식 패치 이전에 GraphQL을 끄라고 권했습니다. 9월 7일 핫픽스가 나온 뒤에는 그 임시 조치만으로 끝내지 말고 공식 패치를 올리는 쪽이 맞습니다. 타사 가드 모듈을 임시로 쓴 매장도, Adobe 패치를 적용한 뒤에는 해당 임시 모듈을 제거하라는 안내가 커뮤니티 쪽 완화 저장소에 올라와 있습니다. 임시 모듈 존재 여부는 공식 패치 성공의 증거가 아닙니다.


암호화 키만 돌리면 부족한 이유

Adobe는 암호화 키를 바꾸는 것만으로 이미 노출된 자격 증명이 무효가 되지 않는다고 명시했습니다. 암호화 키는 연동 토큰, 결제 게이트웨이 자격 증명, 시스템 권한 자동화 토큰을 감싸는 데 쓰입니다. 공격자가 이미 평문 값을 읽었다면 키를 바꿔도 그 값은 살아 있습니다.

지식베이스가 적은 순서를 운영 체크리스트로 재배열하면 아래와 같습니다.

  1. 핫픽스를 먼저 적용합니다.
  2. 유지보수 모드를 켭니다.
  3. cron을 멈춥니다. Cloud 예시 명령은 vendor/bin/ece-tools cron:disable입니다.
  4. 암호화 키를 교체합니다.
  5. 관리자 패널 사용자 비밀번호를 모두 재설정합니다.
  6. REST·SOAP·GraphQL 연동 토큰을 폐기하고 다시 발급합니다. 메뉴는 System > Extensions > Integrations입니다.
  7. 연결된 앱의 OAuth 클라이언트 시크릿을 교체합니다.
  8. Stripe, Braintree, Adyen, PayPal 등 결제 게이트웨이 API 키를 게이트웨이 콘솔에서 교체합니다.
  9. 데이터베이스 계정 비밀번호를 교체합니다.
  10. SSH·배포 키, cron·시스템 서비스 계정 자격 증명을 교체합니다.
  11. 배송·세금·기타 확장 API 키를 해당 서비스에서 교체합니다.
  12. 캐시를 비우고 cron을 재개한 뒤 유지보수 모드를 해제합니다.

결제 키는 Magento 관리 화면 안의 값만 바꾸면 안 됩니다. 이미 유출된 키는 게이트웨이 쪽에서 폐기해야 결제가 따라가지 않습니다. 이 지점이 “패치 완료”와 “사고 수습 완료”를 가르는 기준입니다.

지금 확인할 5가지라고 적힌 안내 그림. 핫픽스 적용, 암호화 키 교체, 관리자 비밀번호, 결제 API 키, 백도어 흔적
핫픽스와 키 교체, 위장 프로세스 확인은 한 묶음입니다.

이미 들어왔는지 볼 때와, 흔적이 없을 때

패치는 이후 공격을 막습니다. 9월 4일부터 7일 사이에 이미 들어간 백도어는 지우지 않습니다. Sansec도 패치 전에 스캔하라고 적었습니다.

서버에서 우선 볼 항목은 다음과 같습니다.

  • 프로세스 목록에서 fc-cache, chronyd, gvfsd-user, [kworker/u:8:0]처럼 시스템 이름과 겹치는 생소한 실행 파일 경로
  • 홈 디렉터리 아래 ~/.cache/fontconfig/fc-cache 같은 폰트 캐시 경로에 새로 생긴 실행 파일
  • crontab -l에는 없어도 cron 스풀 파일에 직접 적힌 항목. Sansec는 스풀을 직접 보라고 했습니다
  • 관리자에 기억나지 않는 계정, 새로 생긴 통합, 결제 설정 변경 시각
  • 짧은 구간의 결제 실패 알림 폭주

위 항목 중 하나라도 설명되지 않으면, 패치와 키 교체만 하고 서비스를 정상으로 보지 않는 편이 맞습니다. 디스크 이미지 보존, 웹셸·추가 계정 점검, 결제사 사고 통지를 같은 날 시작해야 합니다. 카드 데이터가 Magento 서버에 저장되는 구성은 드물지만, 게이트웨이 키가 새면 이후 결제 요청이 공격자 쪽으로 붙을 수 있습니다.

흔적이 보이지 않아도 9월 4일 이후 인터넷에 열려 있던 인스턴스는 키 교체를 생략하지 않는 쪽이 안전합니다. Adobe 체크리스트는 침해 확정 여부와 별도로 자격 증명 순환을 요구합니다.

한국 개인정보 유출 규모, 특정 국내 브랜드 피해 여부는 이 글을 쓰는 2026년 9월 8일 기준으로 공식 발표가 없습니다. 침해 정황이 있으면 결제사·호스팅·법무 쪽 통지 의무를 별도로 확인해야 합니다.


지금 할 일과 하지 말아야 할 일

할 일은 짧습니다. 버전을 확인하고, VULN-39341을 올리고, 적용 상태를 확인하고, Adobe 순서대로 키를 순환하고, 위장 프로세스를 봅니다. Cloud 고객도 Applied 상태를 직접 확인합니다.

하지 말아야 할 일은 세 가지입니다. 첫째, 7·8월 패치 완료 화면만 보고 이번 공지를 건너뛰는 것입니다. 둘째, Magento 안의 암호화 키만 바꾸고 결제사 콘솔의 API 키는 그대로 두는 것입니다. 셋째, 공개된 공격 재현 글을 따라 자기 매장에서 “테스트”하는 것입니다. 운영 확인은 공식 핫픽스와 IOC 점검으로 충분합니다.

카페24·스마트스토어만 쓰는 운영자는 이 공지를 일반 Windows·공유기 패치와 같은 급으로 적용할 필요는 없습니다. 대신 대행사가 “우리 쪽은 Magento가 아니다”라고 답한 근거를 한 줄로 받아 두면 됩니다.


같이 나오는 질문

카페24 쇼핑몰도 Magento 제로데이 대상인가요?

카페24 플랫폼 자체는 이번 CVE의 영향 제품 목록에 없습니다. 같은 사업자가 별도로 Magento나 Adobe Commerce를 운영할 때만 그 서버가 대상입니다.

GraphQL을 끄면 패치를 안 해도 되나요?

Sansec가 공식 패치 이전에 제안한 임시 완화입니다. 9월 7일 핫픽스가 공개된 뒤에는 임시 조치로 대체할 수 없습니다. GraphQL이 필요한 앱·헤드리스몰은 끈 상태를 오래 유지하기도 어렵습니다.

Adobe가 서버를 대신 패치해 주나요?

APSB26-146의 해결책은 운영자가 핫픽스를 적용하는 것입니다. Cloud도 적용 여부 확인 절차가 지식베이스에 있습니다. 공급자가 이미 전부 막았다고 단정할 공식 문구는 없습니다.

백도어 프로세스만 죽이면 끝나나요?

프로세스를 멈춰도 키와 토큰이 남아 있으면 다시 들어올 수 있습니다. 핫픽스, 자격 증명 원천 교체, 추가 웹셸·계정 점검이 한 세트입니다.

참고: Adobe APSB26-146, Adobe Commerce 핫픽스 공지, Sansec StyleSmuggler 분석

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
0
Would love your thoughts, please comment.x
()
x