---
title: "누군가 WordPress 플러그인 30개를 사들여 전부 백도어를 심었음"
published: 2026-04-13T17:54:39.000Z
canonical: https://jeff.news/article/1701
---
# 누군가 WordPress 플러그인 30개를 사들여 전부 백도어를 심었음

8년간 운영된 WordPress 플러그인 브랜드 'Essential Plugin'이 Flippa에서 매각된 뒤, 구매자가 30개 이상 플러그인에 백도어를 심었음. 백도어는 8개월간 잠복하다 활성화되어 wp-config.php에 SEO 스팸을 주입했고, C2 도메인을 이더리움 스마트 컨트랙트로 리졸빙하는 정교한 기법을 사용함.

## 누군가 WordPress 플러그인 30개를 사들여 전부 백도어를 심었음

- **신뢰받던 플러그인 포트폴리오가 통째로 무기화됨** — "Essential Plugin"이라는 브랜드의 WordPress 플러그인 30개 이상이 한 명의 구매자에게 넘어간 뒤, 모든 플러그인에 백도어가 심어짐
  - 원래 인도 기반 팀("WP Online Support")이 2015년부터 8년간 운영해온 합법적인 비즈니스였음
  - 매출이 35~45% 감소하자 Flippa(온라인 비즈니스 거래 플랫폼)에 매물로 올림
  - "Kris"라는 신원의 구매자가 6자리 달러(수십만 달러)에 인수. SEO, 암호화폐, 온라인 도박 마케팅 배경
  - Flippa는 이 거래를 2025년 7월 성공 사례로까지 소개함

> [!WARNING]
> 구매자의 첫 SVN 커밋이 곧 백도어였음. 8개월간 잠복한 뒤 2026년 4월에 활성화됨.

## 공격 메커니즘이 상당히 정교함

- **백도어 코드가 `wpos-analytics`라는 모듈 안에 숨어 있었음** — 원래 합법적인 애널리틱스 옵트인 시스템으로 수년간 동작하던 코드를 악용
  - v2.6.7(2025년 8월 릴리즈)에서 191줄의 코드가 추가됨. 체인지로그에는 "WordPress 6.8.2 호환성 확인"이라고만 적혀 있었음
  - `class-anylc-admin.php` 파일이 473줄 → 664줄로 늘어남
- **심어진 코드 3가지가 교과서적인 임의 함수 호출(arbitrary function call) 체인을 구성함**
  - `fetch_ver_info()` — 공격자 서버에 `file_get_contents()` 호출 후 `@unserialize()`로 역직렬화
  - `version_info_clean()` — 역직렬화된 원격 데이터에서 함수명과 인자를 모두 가져와 실행
  - 인증 없는 REST API 엔드포인트 (`permission_callback: __return_true`)
- **실제 감염 과정** — 플러그인이 `analytics.essentialplugin.com`에 연락 → `wp-comments-posts.php`라는 백도어 파일 다운로드(코어 파일 `wp-comments-post.php`와 이름이 거의 같음) → `wp-config.php`에 거대한 PHP 블록 주입
  - 주입된 코드는 스팸 링크, 리다이렉트, 가짜 페이지를 C2(명령·제어) 서버에서 가져옴
  - **Googlebot에만 스팸을 보여주고 사이트 소유자에게는 안 보임** — SEO 스팸 공격
  - C2 도메인을 **이더리움 스마트 컨트랙트**로 리졸빙함. 블록체인 RPC 엔드포인트를 쿼리하는 방식이라 전통적인 도메인 테이크다운이 안 먹힘. 공격자가 스마트 컨트랙트만 업데이트하면 새 도메인으로 바로 전환 가능

## 8개월 잠복 → 6시간 44분 만에 감염

- **백도어는 2025년 8월에 심어졌고, 2026년 4월 5~6일에 활성화됨**
  - 작성자는 939개의 quicksave 스냅샷을 추적하여 타임라인을 복원
  - 일일 restic 백업에서 `wp-config.php`를 8개 날짜별로 추출, 바이너리 서치로 감염 시점 특정
  - 감염 윈도우: 2026년 4월 6일, UTC 04:22 ~ 11:06 (6시간 44분)

> [!IMPORTANT]
> WordPress.org의 강제 업데이트(v2.6.9.1)는 폰홈 메커니즘만 비활성화했을 뿐 `wp-config.php`의 악성 코드는 건드리지 않음. 감염된 사이트는 여전히 Googlebot에 스팸을 뿌리고 있었음.

## WordPress.org가 하루 만에 30개 이상 플러그인을 영구 폐쇄

- **2026년 4월 7일, Essential Plugin 저자의 모든 플러그인이 한꺼번에 영구 폐쇄됨**
  - Countdown Timer Ultimate, Popup Anything on Click, WP Testimonial with Widget, WP Team Showcase and Slider 등 30개 이상
  - 저자 검색 시 결과 0건, `analytics.essentialplugin.com`은 `{"message":"closed"}` 반환
- **발견자는 자신이 관리하는 사이트 전체를 스캔** — 22개 고객 사이트에서 12개의 Essential Plugin 플러그인 발견, 10개를 패치
  - 패치 방법: `wpos-analytics/` 디렉터리 삭제, 메인 플러그인 PHP의 로더 함수 제거, 버전 `-patched` 범프
  - 패치된 zip 파일을 B2에 영구 호스팅하여 공유 중

## 이건 처음 있는 일이 아님

- **2017년에도 동일한 수법이 있었음** — "Daley Tias"라는 가명의 구매자가 20만 설치의 Display Widgets 플러그인을 $15,000에 사서 대출 스팸 주입. 최소 9개 플러그인을 같은 방식으로 장악
- **WordPress 플러그인 마켓플레이스의 구조적 문제**
  - 플러그인 소유권 이전 시 리뷰나 플래그 메커니즘이 없음
  - 사용자에게 "소유자 변경" 알림이 가지 않음
  - 새 커미터에 대한 추가 코드 리뷰도 없음
  - Plugins Team은 발견 후 빠르게 대응했지만, 백도어가 심어진 시점부터 발각까지 8개월이 걸림
- **WordPress 사이트 관리하고 있다면**: 위에 나열된 26개 플러그인 슬러그 검색 → 발견 시 패치 또는 삭제, `wp-config.php` 확인 필수

---

## 기술 맥락

- 이 공격의 핵심은 **PHP의 `unserialize()` 취약점**이에요. `unserialize()`에 외부 입력을 넣으면 임의 객체를 생성할 수 있고, 그 객체의 매직 메서드가 실행되면서 사실상 RCE(원격 코드 실행)가 가능해져요. PHP 보안에서 "신뢰할 수 없는 데이터를 절대 unserialize하지 마라"는 건 기본 중의 기본인데, 이 백도어가 딱 그걸 노린 거예요
- C2 도메인을 **이더리움 스마트 컨트랙트로 리졸빙**하는 건 꽤 신선한 기법이에요. 보통 악성코드의 C2 서버를 차단하려면 도메인을 싱크홀링하거나 테이크다운 요청을 하는데, 블록체인에 올라간 스마트 컨트랙트는 누구도 일방적으로 수정하거나 삭제할 수 없거든요. 공격자 입장에서는 트랜잭션 하나로 C2 주소를 교체할 수 있어서 회복탄력성이 매우 높아요
- **공급망 공격(supply chain attack)**이 소프트웨어 생태계 전반의 이슈로 부상한 건 npm의 event-stream 사건(2018년) 이후부터인데, WordPress 플러그인 생태계는 그보다 더 취약한 구조예요. npm은 최소한 2FA와 퍼블리시 권한 관리가 있지만, WordPress.org의 SVN 기반 플러그인 저장소는 소유권 이전에 대한 거버넌스가 사실상 없어요. "신뢰받는 브랜드를 사서 악용한다"는 공격 벡터를 플랫폼 차원에서 막을 장치가 없는 셈이에요
- 발견자가 사용한 **백업 포렌식 기법**도 참고할 만해요. 일일 백업에서 특정 파일을 날짜별로 추출한 뒤 바이너리 서치로 변조 시점을 좁혀가는 접근이거든요. 보안 사고 대응(IR)에서 "언제 감염됐는가"를 특정하는 게 가장 중요한데, 정기 백업이 있으면 이렇게 체계적으로 접근할 수 있어요

## 핵심 포인트

- Essential Plugin 브랜드의 30개 이상 WordPress 플러그인이 Flippa에서 수십만 달러에 매각됨
- 구매자의 첫 SVN 커밋이 곧 백도어 — PHP unserialize() 기반 임의 함수 호출 체인
- C2 도메인을 이더리움 스마트 컨트랙트로 리졸빙하여 전통적 도메인 테이크다운 무력화
- 8개월 잠복 후 2026년 4월 활성화, Googlebot에만 스팸 노출
- WordPress.org에 플러그인 소유권 이전 리뷰 메커니즘이 전무함

## 인사이트

WordPress 플러그인 생태계의 소유권 이전에 대한 거버넌스 부재가 반복적으로 공급망 공격에 악용되고 있음. npm의 event-stream 사건과 같은 맥락이지만, WordPress는 2FA나 퍼블리시 권한 관리조차 부족해서 더 심각한 구조적 문제를 안고 있음.
