
StyleSmuggler(CVE-2026-75650) Magento 오픈소스 및 Adobe Commerce용 IOC 툴킷. 손상된 스토어, Rust 임플란트, PHP 웹 셸, 지속성 아티팩트 및 알려진 침해 지표를 탐지합니다.
Magento 제로데이 · Adobe Commerce 제로데이 · CVE-2026-75650 · APSB26-146 · VULN-39341 · 인증 없는 RCE · Magento 악성코드 · Magento 백도어 제거 · Magento 2.4.9 취약점 · Rust 임플란트 · GraphQL styles 인젝션 · PHP 웹 셸
StyleSmuggler(CVE-2026-75650)에 대한 커뮤니티 기반 침해 지표(IOC), 침해 스캐너, 그리고 완화/패치 가이드입니다. 이는 Sansec이 2026년 9월 5일에 공개한 인증 없는 Magento Open Source / Adobe Commerce RCE로, 2026년 9월 4일부터 실제 환경에서의 악용이 확인되었습니다. Adobe는 2026년 9월 7일에 공식 수정 패치인 APSB26-146을 발표했습니다. "StyleSmuggler IOC", "CVE-2026-75650", "APSB26-146", "VULN-39341", "Magento fc-cache 악성코드", "Magento chronyd 백도어", "gvfsd-user Magento", 또는 "Magento GraphQL styles RCE"를 검색해 오셨다면, 바로 이 저장소가 필요하신 것입니다.
이것은 방어용 툴킷입니다. 공개된 1차 사고 보고서를 기반으로 구축된 탐지 시그니처, 침해 스캐너, 강화/차단 규칙을 포함합니다. 익스플로잇 코드, 개념 증명 트리거, 또는 공격 페이로드를 생성하는 어떤 것도 포함하지 않습니다. 그런 것을 찾고 계시다면 잘못된 저장소에 오신 것입니다 — 패치를 적용하고 사냥을 하러 가십시오.
| 취약점 | StyleSmuggler (Sansec의 명칭) — CVE-2026-75650 |
| 공급업체 | Adobe (Magento Open Source, Adobe Commerce) |
| CVE | CVE-2026-75650, 2026-09-07 지정 |
| Adobe 게시판 | APSB26-146, 2026-09-07 20:20 UTC 게시, Priority 1 (최고) |
| 추가 필요 | APSB26-138 — Adobe의 정기 2026년 9월 Commerce 업데이트, 2026-09-08 릴리스. Adobe는 VULN-39341이 이를 대체하는 것이 아니라 추가로 적용되어야 한다고 명시합니다. |
| CVSS | 10.0 (3.1 및 4.0) — Critical |
| CWE | CWE-1336, 템플릿 엔진에서 사용되는 특수 요소의 부적절한 중화 |
| 공식 패치 | 배포됨. 핫픽스 VULN-39341. 적용 범위가 보편적이지 않음 — 아래 표를 참조하십시오. |
| 인증 필요 | 없음 — 인증 불필요 |
| 영향받는 버전 | Sansec이 깨끗한 Magento Open Source 2.4.7, 2.4.8, 2.4.9에서 재현; 첫 확인된 피해자는 (이전 패치가 모두 적용된) 2.4.6-p15 실행 |
| 악용 현황 | 2026-09-04 22:20 UTC부터 활성; 패치 릴리스 이후에도 지속; 두 번째 무관한 공격자가 2026-09-07에 합류 |
| 알려진 Rust 임플란트 변종 | [kworker/u:8:0] (9월 4일) → fc-cache v2.1.4 (9월 6일) → chronyd v2.1.5 (9월 7일) — 동일 운영자, 동일 에이전트 ID, 버전 증가 |
| 두 번째 무관한 공격자 | pub/media/catalog/product/cache/ 내 PHP 웹 셸, DNS를 통한 데이터 유출 정찰 프로브가 선행 — Rust 임플란트와 무관, 2026-09-07 확인 |
| 알려진 전달 벡터 | GraphQL styles[] 매개변수; var/log/system.log에 기록되는 잘못된 스토어 코드; Magento 고객 맞춤 옵션을 통한 파일 업로드; 무관한 두 번째 공격자의 Store: 헤더 인젝션 |
| 영향 | 원격 코드 실행 → 지속적 Rust 기반 백도어, 독립 PHP 웹 셸, Redis 세션 수집, app/etc/env.php를 통한 자격 증명/비밀 노출 |
| 제품 | APSB26-146 적용 | 공식 수정 없음 |
|---|---|---|
| Adobe Commerce (B2B, Cloud 포함) | 2.4.4 – 2.4.9 | 2.4.4 미만 |
| Adobe Commerce B2B | 1.3.3 – 1.5.3 | 1.3.3 미만 |
| Magento Open Source |
지원되지 않는 구버전을 사용 중이라면, 동일하게 악용 가능함에도 Adobe는 수정 패치를 제공하지 않습니다. 옵션은 docs/PATCHING.md를 참조하십시오.
이 정보는 빠르게 변합니다. 조치 전에 1차 출처와 교차 확인하십시오: Sansec 권고 및 Adobe 게시판. 실행 로그는 docs/TIMELINE.md를 참조하고, 여기에서 무엇이든 업데이트할 때 출처를 인용하십시오.
Magento 자체의 GraphQL styles 매개변수와 의존성 주입 기반 파일 스캐닝이 단일 명백한 인젝션 지점이 아닌 2단계 파일 기반 지연 실행 프리미티브로 악용됩니다:
var/log/system.log — Magento가 그대로 기록하는 잘못된 스토어 코드를 통해, 또는 var/report/<hash>)에 도달하며, GraphQL styles[] 매개변수, 변형된 요청 헤더, 또는 (아래 두 번째 무관한 공격자의 경우) Store: 헤더를 통해 밀반입됩니다.getProcessedTemplate 경로) Magento 자체 DI/코드 스캐너가 오염된 파일을 include()하여 공격자의 PHP를 실행하게 하는 코드 경로를 탐색합니다. 이메일을 열 필요가 없습니다 — 서버 측 렌더링만으로 충분하며 — 메일 전송 자체가 실패해도 체인이 발화할 수 있습니다.도구 없이 가능한 쉬운 조기 경고 신호: 원시 렌더링되지 않은 {{var ...}} 태그와 .invalid로 끝나는 고객 주소가 포함된 깨진 "Payment Transaction Failed Reminder" 이메일이 받은 편지함에 있는 경우입니다. 이는 누군가 로그를 확인하기 전에 나타나는 첫 번째 가시적 신호인 경우가 많습니다.
Sansec의 업데이트는 동일한 Rust 임플란트 캠페인에 대한 두 번째 독립적 악용 경로를 확인했습니다: 세션 저장소를 Redis에서 데이터베이스로 옮긴 스토어도 여전히 침해되었습니다 — 동일 운영자의 두 번째 시도가 Magento의 고객 맞춤 옵션 기능을 통해 업로드된 파일을 사용하여 몇 초 만에 성공했습니다. 세션 저장소를 옮기는 것만으로는 해결책이 아닙니다.
별도로, 9월 7일 Sansec은 완전히 무관한 공격자가 동일한 StyleSmuggler 진입점을 훨씬 더 단순한 페이로드에 사용하는 것을 발견했습니다: Magento 자체 제품 이미지 캐시(pub/media/catalog/product/cache/ss_<10hex>/sync_<10hex>.php)에 떨어진 PHP 웹 셸로, Store: HTTP 헤더에 페이로드를 숨기고 HTTP 응답이 아닌 DNS를 통해 발견 사항을 유출하는 정찰 프로브가 선행되었습니다. Sansec에 따르면 이는 "기성 도구"입니다 — 지속적 캠페인이 아니라 — 하지만 이는 단일 취약 호스트가 하나의 결함을 통해 두 건의 무관한 침해를 운반할 수 있음을 의미합니다. Rust 임플란트를 정리한다고 해서 스토어가 깨끗하다는 뜻은 아닙니다.
Rust 임플란트 자체도 진화했습니다: 원래 [kworker/u:8:0]으로 위장한 빌드(9월 4일)에 이어 NTP 트래픽으로 위장해 비콘을 보내는 fc-cache 위장 빌드 v2.1.4(9월 6일), 그리고 동일 임플란트, 동일 에이전트 ID의 chronyd 위장 재배포 v2.1.5(9월 7일)가 뒤따랐습니다 — 공격자가 여러분이 게시하는 탐지를 회피하기 위해 적극적으로 반복하고 있다는 증거입니다. Sansec은 이 임플란트가 지속성/정찰 이상으로 무기화되었다는 증거를 아직 보지 못했다고 밝혔습니다 — 동일 접근 경로에서 작동하는 무관한 공격자의 웹 셸을 고려할 때 이를 안심 신호로 읽지 마십시오.
빠른 답변은 docs/FAQ.md, 전체 기술 문서와 출처는 docs/VULNERABILITY.md, Adobe 공식 패치 적용은 docs/PATCHING.md, 스캐너가 무언가를 발견했을 때의 조치는 docs/INCIDENT_RESPONSE.md를 참조하십시오.
1. 버전이 적용 범위에 해당하면 패치:
# 전체 프로세스는 docs/PATCHING.md 참조 — 한 줄로 끝나는 것이 아니며,
# Adobe 저장소 자격 증명과 프로젝트의 패치 관리 도구가 필요합니다.
2. 패치 상태와 관계없이 기존 침해를 스캔 — 패치는 새로운 악용을 막을 뿐, 기존 백도어나 웹 셸을 정리하지 않습니다:
git clone https://github.com/jithinkrishnanrs/stylesmuggler-ioc-toolkit.git
cd stylesmuggler-ioc-toolkit
sudo bash scripts/stylesmuggler_scan.sh --magento-root /var/www/html
또는 구조화된(JSON) 출력을 위한 Python 버전, 예: SIEM에 공급하기 위한 경우:
sudo python3 scripts/stylesmuggler_scan.py --magento-root /var/www/html --json report.json
두 스크립트 모두 기본적으로 읽기 전용입니다 — 탐지하고 보고할 뿐, --remediate를 전달하지 않는 한 프로세스를 종료하거나 파일을 삭제하지 않습니다. 조기 정리는 법의학적 증거를 파괴하기 때문입니다(docs/INCIDENT_RESPONSE.md 참조).
[kworker/u:8:0] 빌드: ~/.local/share/.gvfsd/gvfsd-user, 해당 잠금 파일, /tmp/.kw_*, /tmp/.gvfsd_*fc-cache 빌드 v2.1.4 (9월 6일): ~/.cache/fontconfig/fc-cache, /tmp/.fc_<8hex>.lockchronyd 빌드 v2.1.5 (9월 7일): /tmp/.chrony-<8hex>/chronydgvfsd-user 빌드는 5분마다, fc-cache는 30분에 두 번(13,43 * * * *)fc-cache/의 경우 실제 시스템 바이너리와 일치하지 않는) , , 또는 라는 이름의 전체 지표 목록과 출처: iocs/.
docs/PATCHING.md 참조. 이제 아래 임시 완화 조치보다 우선합니다.mitigations/의 임시 완화 조치 사용:
styles[] 전달 경로 차단 또는 속도 제한
(nginx /
Apache)pub/media/pub/static 아래에서 PHP 실행 차단
(nginx /
Apache) — 두 번째 무관한 공격자의 웹 셸 기법에 대한 표적 방어mitigations/README.md 참조 — 이 중 어느 것도 고객 맞춤 옵션 벡터나 두 번째 공격자의 헤더 전달을 차단하지 않습니다.docs/ 취약점 문서, 타임라인, FAQ, 패치 가이드, IR 플레이북
iocs/ 해시, IP, 도메인, 파일 경로, YARA, Suricata/IDS 규칙
scripts/ stylesmuggler_scan.sh / .py, 크론탭 정리 헬퍼
mitigations/ nginx / Apache / ModSecurity / fail2ban 규칙
CVE-2026-75650, APSB26-146, VULN-39341, Magento 제로데이 2026, Adobe Commerce 제로데이, StyleSmuggler 패치, Magento GraphQL 취약점, Magento styles 매개변수 RCE, gvfsd-user 악성코드, fc-cache Magento 백도어, chronyd Magento 악성코드, Magento kworker 프로세스 악성코드, Magento Redis 세션 하이재킹, Magento 인증 없는 RCE 2026년 9월, Magento 2.4.9 익스플로잇, Adobe Commerce 백도어 제거, Magento pub/media 웹 셸, eComscan StyleSmuggler, Sansec Shield StyleSmuggler.
이 저장소의 모든 지표는 인용된 공개 출처로 추적됩니다 — 주로 Sansec의 권고(최소 2026-09-07 20:50 UTC까지 업데이트됨), Adobe의 APSB26-146 게시판, 그리고 실제 감염을 처리한 대응자들의 커뮤니티 사고 대응 문서입니다. iocs/의 각 파일 하단에 있는 인용을 참조하십시오.
여기의 어떤 것도 완전하거나 최종적인 것으로 취급하지 마십시오. IOC(트리거 헤더, 사용자 에이전트 문자열, 임플란트 위장, 그리고 이제 두 번째 공격자의 캠페인 마커)는 공개 후 며칠 내에 이미 여러 번 변경되었습니다; 다시 변경될 것으로 예상하십시오. 스크립트가 허용하는 곳에서는 리터럴 문자열뿐만 아니라 형태와 동작을 매칭하십시오.
변종, 새 해시, 새 소스 주소, 또는 오탐지를 보셨습니까? 관찰한 내용과 관찰 방법을 포함하여 이슈 또는 PR을 열어 주십시오. 다음을 준수해 주십시오:
이 저장소의 코드는 MIT입니다(LICENSE 참조). 지표 데이터는 방어적 사용을 위해 "있는 그대로" 제공되며, 출처가 전체에 걸쳐 명시되어 있습니다.
이것은 비공식 커뮤니티 구축 방어 도구이며, Adobe 또는 Sansec 제품이 아니며 어느 쪽과도 제휴하지 않습니다. 보증 없이 제공됩니다. Adobe의 공식 패치(APSB26-146)가 릴리스되었지만 적용 범위는 특정 제품 버전으로 제한됩니다 — 설치가 적용되거나 수정되었다고 가정하기 전에 Adobe 보안 게시판을 직접 확인하십시오.
| 2.4.5 이하 |
chronyd[kworker/u:8:0]fc-cachechronyd/proc/<pid>/exe 이미지의 SHA-256 (둘은 다를 수 있음 — 임플란트가 메모리에서 자체 업데이트하는 것이 관찰됨)X-TRACE-<10hex> 및 X-<12hex>), 그리고 두 번째 무관한 공격자의 캠페인 마커(ss5_/ss6_<hex>) 및 DNS 카나리아 도메인(oast.site)에 대한 오염된 로그/보고서 파일(var/log/system.log, var/report/)MG<20hex>::...::/MG<20hex>)pub/media 아래의 PHP 파일 — 두 번째 공격자의 웹 셸 드롭 패턴과 일치fc-cache/chronyd 빌드의 NTP 형태 비콘(ntp.timesync.to:123/UDP 및 대체 호스트)과 공개 IP 조회 서비스에 대한 일반 HTTP 호출 포함127.0.0.1:6379를 통해 관찰되었으며 외부 C2 트래픽이 전혀 없음 — 조용한 네트워크가 깨끗한 네트워크는 아님) — 그리고 Redis에서 세션을 옮기는 것만으로는 두 번째 파일 업로드 기반 악용 벡터가 차단되지 않음Store:app/etc/env.php부터 노출합니다. 최소한 격리 후: 세션 저장소(Redis 및/또는 DB) 플러시, Magento crypt/key 교체, 모든 관리자 비밀번호(및 기존 관리자 세션 무효화), 데이터베이스 비밀번호, env.php의 모든 결제 제공업체 API 키 및 기타 통합 자격 증명, 그리고 사이트 사용자가 읽을 수 있었던 모든 SSH/배포 키 교체. 또한 admin_user 테이블에서 불량 계정을, pub/media/ / pub/static/ / 테마 디렉토리에서 떨어진 웹 셸(Rust 임플란트와 무관한 두 번째 공격자의 것 모두)을 스토어를 깨끗하다고 간주하기 전에 확인하십시오. 전체 순서 단계: docs/INCIDENT_RESPONSE.md.