WP-CLI Auditor: 설치된 플러그인에 대한 Wordfence RSS 권고사항 분류

발행: (2026년 3월 15일 PM 04:40 GMT+9)
7 분 소요
원문: Dev.to

Source: Dev.to

워드프레스 플러그인 WP‑CLI Auditor: 설치된 플러그인에 대한 Wordfence RSS 권고사항 선별

victorstackAI

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

저는 wp wordfence-audit plugins 명령을 추가하고 현재 Wordfence 블로그 RSS 피드의 취약점 신호와 일치하는 설치된 플러그인을 표시하는 WordPress 플러그인을 만들었습니다. 목표는 기존 RSS 워크플로우를 활용한 빠른 선별이며, 전체 취약점 데이터베이스를 대체하는 것이 아닙니다.

문제

보안 팀은 종종 Wordfence 주간 권고를 가장 먼저 받지만, 빠르게 답변할 방법이 필요합니다:

“우리는 이 플러그인 중 어떤 것을 사용하고 있으며, 설치된 버전이 영향을 받는 범위에 포함되어 있나요?”

CLI 자동화가 없으면, 이는 여러 사이트에 걸친 수동 스프레드시트 작업이 됩니다.

솔루션

  1. Wordfence RSS 피드를 가져옵니다.
  2. 각 항목의 HTML 콘텐츠를 파싱합니다.
  3. wordpress.org/plugins// URL에서 플러그인 슬러그를 추출합니다.
  4. 버전 제약조건을 파싱합니다(예: “up to”, “≤”, “less than”).
  5. WP‑CLI를 통해 설치된 플러그인을 로드합니다.
  6. PHP의 version_compare()를 사용해 버전을 비교합니다.
  7. 결과를 표, JSON, CSV 형태로 출력합니다.
flowchart LR
    A[wp wordfence-audit plugins] --> B[Fetch Wordfence RSS feed]
    B --> C[Parse item HTML content]
    C --> D[Extract plugin slug from wordpress.org URLs]
    D --> E[Parse version constraints\nup to,  F[Load installed plugins via WP‑CLI]
    F --> G[version_compare matching]
    G --> H[CLI output: table / json / csv]

Source:

기술 스택

구성 요소기술이유
플랫폼WordPress 플러그인 + WP‑CLI 명령CLI 접근이 가능한 모든 WP 사이트에서 실행
신호 출처Wordfence 블로그 RSS 피드가볍고 API 키가 필요 없음
슬러그 추출wordpress.org/plugins// 에 대한 정규식신뢰할 수 있는 정규 URL
버전 매칭PHP version_compare()내장 함수이며 semver를 올바르게 처리
출력표, JSON, CSV모든 다운스트림 도구와 호환

💡 팁: 가벼운 신호 출처로서 RSS 활용

API가 아직 제공되지 않을 때 RSS가 유용합니다. Wordfence 피드는 인증, 속도 제한, API 키 없이도 실행 가능한 신호를 제공합니다. 프로덕션 수준의 커버리지를 위해서는 RSS triage와 전체 취약점 데이터베이스를 함께 사용하세요.

⚠️ 주의: 버전 파싱에는 정규화가 필요합니다

2.1.3.2.1.3 같은 버전 문자열은 version_compare() 로 잘못된 불일치를 일으킬 수 있습니다. normalizeVersionToken 헬퍼는 뒤쪽 점을 제거하고 예외 상황을 처리합니다. 이를 사용하지 않으면 실제 매치를 놓칠 수 있습니다.

// src/WordfenceRssClient.php
// Extract plugin slugs from WordPress.org links in RSS HTML
preg_match_all('#https?://wordpress.org/plugins/([a-z0-9-]+)/?#i', $html, $matches);
// src/WordfenceRssClient.php
// Parse version constraints from advisory text
if (preg_match_all(
        '/versions?\s*(?:up to| 'max_inclusive',
        'max'  => $this->normalizeVersionToken($maxVersion)
    ];
}
// src/SignalMatcher.php
// Compare installed version against advisory constraint
if ($type === 'max_inclusive' && isset($constraint['max'])) {
    if (version_compare($installedVersion, (string) $constraint['max'], '
# 표 출력 (기본)
wp wordfence-audit plugins

# 스크립팅용 JSON
wp wordfence-audit plugins --format=json

# 스프레드시트용 CSV
wp wordfence-audit plugins --format=csv > audit.csv

아키텍처 개요

ComponentResponsibility
WordfenceRssClientRSS를 다운로드하고 슬러그, 심각도, 버전 제약 조건을 추출
SignalMatcherversion_compare를 사용해 제약 조건을 설치된 버전과 비교
AuditCommandwp wordfence-audit plugins 명령을 노출하고 출력 형식 지정

관련 읽을거리

Drupal와 WordPress에 중요한 이유

수십 개의 플러그인을 실행하는 WordPress 사이트는 새로 공개된 취약점에 지속적으로 노출됩니다. 이 WP‑CLI 감사 도구를 사용하면 기관 및 사이트 관리자가 수동 스프레드시트 작업 없이 Wordfence 권고에 대해 주간 트리아지를 자동화할 수 있습니다.

멀티사이트 네트워크나 관리형 호스팅 플릿의 경우, JSON 출력을 대시보드에 파이프하면 어떤 사이트가 패치가 필요한지 즉시 파악할 수 있습니다.

Drupal 팀은 Drush 명령을 사용하여 drupal.org의 보안 권고와 설치된 모듈을 교차 참조하는 동일한 RSS‑to‑CLI 패턴을 적용할 수 있습니다.

내가 배운 것

  • API를 사용할 수 없을 때 RSS는 유용하고 가벼운 신호 소스가 될 수 있다.
  • 정규 wordpress.org/plugins// URL에서 슬러그를 추출하면 빠른 매칭에 신뢰할 수 있다.
  • 버전 파싱은 정규화가 필요하다 (2.1.3. vs 2.1.3) 그렇지 않으면 잘못된 매칭이 발생할 수 있다.
  • 프로덕션‑그레이드 커버리지를 위해서는 RSS 트리아지를 전체 데이터베이스/API 스캐너와 함께 사용한다.

참고 문헌

팀의 생산성을 배가시키는 AI 시스템을 구축하는 아키텍트를 찾고 계신가요? 제 엔터프라이즈 CMS 사례 연구는 victorjimenezdev.github.io에서 확인하시거나 LinkedIn에서 저와 연결해 주세요.

원본은 VictorStack AI — Drupal & WordPress Reference에 게시되었습니다.

0 조회
Back to Blog

관련 글

더 보기 »