Hacker News가 주목한 WordPress 공급망 악몽, 플러그인 30개에 숨은 backdoor

Hacker News에서 이 글이 크게 반응을 얻은 이유는 사건의 출발점이 너무도 익숙해서다. Austin Ginder의 분석에 따르면 문제는 낯선 malware 패밀리보다 더 지루한 지점에서 시작됐다. Flippa를 통해 30개가 넘는 WordPress 플러그인 포트폴리오가 새 주인에게 넘어갔고, 그 뒤 공유 analytics 모듈 하나가 원격 backdoor로 바뀌었다. 공격이 활성화되자 플러그인은 위장된 PHP 파일을 내려받고 wp-config.php에 악성 코드를 주입했다. 사이트 운영자는 평소처럼 페이지를 보는데, Googlebot에게만 숨겨진 spam 페이지가 보이는 구조였다.

기술적으로 더 섬뜩한 대목은 이 변화가 갑작스러운 smash-and-grab가 아니었다는 점이다. 원문은 Countdown Timer Ultimate의 2.6.7 버전이 원격 deserialization 경로, 인증 없는 REST endpoint, 원격 데이터에 따라 실행 흐름이 바뀌는 동작을 추가했다고 짚는다. 그 code path는 약 8개월 동안 잠복해 있다가 2026-04-05부터 2026-04-06 사이에 무기화됐다. Ginder는 backup forensics로 감염 시점을 좁혔고, WordPress.org의 강제 업데이트가 plugin 내부의 phone-home 동작은 꺼도 이미 wp-config.php에 써 넣어진 payload까지 지우지는 못했다고 설명했다.

문제가 된 포트폴리오는 30개가 넘는 플러그인 묶음이었다.

WordPress.org는 31개 플러그인을 한 번에 닫고 강제 업데이트를 밀어 넣었다.

공격 코드는 Googlebot에게만 spam을 노출해 운영자가 바로 알아차리기 어렵게 만들었다.

community discussion noted 공급망 신뢰 문제가 이제 WordPress만의 일이 아니라는 점이다. HN 댓글에서는 현대 software가 직접 의존성보다 transitve dependency에 더 많이 기대고 있어 전체 chain을 실제로 audit하는 팀은 거의 없다는 반응이 이어졌다. 또 ownership transfer가 조용히 risk profile을 바꿀 수 있는데, 대부분의 사용자는 그 변화를 보안 이벤트로 취급하지 않는다는 지적도 많았다.

그래서 이 글은 sensational headline보다 훨씬 오래 남는다. 새로운 zero-day를 자랑하는 이야기가 아니라, 오래된 plugin 사업 매각, 조용한 code change, 긴 잠복기만으로도 충분히 심각한 침해가 만들어질 수 있다는 사례이기 때문이다. WordPress를 운영하는 팀이라면 plugin owner 변경을 release note 정도로 넘기지 말고, plugin 디렉터리 밖 파일 무결성까지 감시해야 한다. “업데이트로 고쳤다”는 문장이 이미 수정된 파일을 되돌려 준다는 뜻은 아니라는 점이 이번 사건의 핵심이다.