Computer >> 컴퓨터 >  >> 네트워킹 >> 네트워크 보안

워드프레스 AMP 플러그인 악용 사건: 코드 삽입 취약점 완벽 분석

워드프레스 AMP 플러그인 악용: 코드 삽입 취약점 완벽 분석

이 글에서는 워드프레스 AMP 플러그인 구버전(0.9.97.20 이하 버전)에서 발견된 코드 삽입(Code Injection) 취약점을 다룹니다. AMP가 무엇인지 소개하고, 워드프레스 AMP 플러그인에 어떤 악용 가능한 취약점이 존재하는지 자세히 살펴보겠습니다.

AMP(가속화 모바일 페이지)란 무엇인가?

AMP(Accelerated Mobile Pages)는 구글이 주도하는 웹 기술 프로젝트로, 모바일 사용자를 위한 웹사이트 성능을 획기적으로 끌어올리는 것이 목표입니다. 프로젝트 공식 홈페이지에 따르면, AMP는 거의 즉시 페이지가 로드되는 웹 페이지를 손쉽게 만들 수 있도록 지원하는 오픈소스 라이브러리입니다. AMP 페이지는 일반 웹 페이지처럼 링크할 수 있으며, 사이트 운영자가 직접 관리하고 제어할 수 있습니다.

AMP 페이지는 다음 세 가지 핵심 구성 요소로 이루어져 있습니다.

  • AMP HTML: AMP 페이지의 HTML은 일반 HTML과 약간 다르며 몇 가지 제약 조건이 있습니다. 덕분에 사이트를 열 때 모든 기능을 한꺼번에 로드하지 않아도 됩니다.
  • AMP JS: 사이트가 열릴 때 모든 리소스를 로드하는 핵심 구성 요소입니다. 인바운드 콘텐츠를 모두 비동기 방식으로 처리하여, 페이지 내 어떤 콘텐츠도 외부 콘텐츠의 렌더링을 차단하지 못하게 만듭니다.
  • AMP Cache: 유효한 모든 AMP 문서를 전달하기 위한 프록시 기반 CDN(콘텐츠 전송 네트워크)입니다. 모든 문서, JS 파일, 이미지는 HTTP 2.0을 사용하는 동일한 오리진(origin)에서 로드되어 최대 효율성을 보장합니다.

AMP for WP 플러그인의 코드 삽입 취약점

문제가 된 플러그인은 "AMP for WP – Accelerated Mobile Pages"입니다. 이 플러그인은 워드프레스 페이지를 AMP 형식으로 변환해 모바일 환경에서 빠른 로딩 속도를 제공합니다. 하지만 구버전(0.9.97.20 이하)에는 인증 및 세션 관리 결함(Broken Authentication and Session Management)이라는 근본적인 보안 문제가 존재합니다.

실제로 이 취약점을 악용한 공격으로는 파일 삽입(file injection), 백도어 파일 다운로드(wp-config.php 포함), DDoS 취약점 유발, 데이터베이스 업그레이드, 옵션 및 포스트 메타데이터 덮어쓰기, 대역폭 악용(전체 WP 미디어 라이브러리 다운로드), 필터링되지 않은 워드프레스 포스트 삽입 등 다양한 형태가 확인되었습니다. 코드 삽입 취약점은 쿠키나 브라우저 측 스크립트 등 여러 경로를 통해 웹사이트에 악성 코드를 주입하며, 이를 통해 공격자는 민감한 정보를 탈취하거나 데이터 유출 사고를 일으킬 수 있습니다.

왜 이런 취약점이 발생할까?

원인은 세션 관리 요소가 적절히 보호되지 않았기 때문입니다. 구체적으로 다음과 같은 상황에서 문제가 발생합니다.

  • 사용자 인증 정보가 해싱 또는 암호화 과정 없이 저장될 때
  • 취약한 계정 관리 기능(계정 생성, 비밀번호 변경·복구, 약한 세션 ID 등) 때문에 인증 정보가 추측되거나 덮어씌워질 수 있을 때
  • 세션 ID가 URL에 노출될 때 (예: URL 재작성)
  • 세션 ID가 세션 고정(session fixation) 공격에 취약할 때
  • 로그아웃 시 세션 ID, 사용자 세션, 인증 토큰(특히 SSO 토큰)이 제대로 무효화되지 않을 때
  • 로그인 성공 후 세션 ID가 갱신(로테이션)되지 않을 때
  • 비밀번호, 세션 ID 등 인증 정보가 암호화되지 않은 연결을 통해 전송될 때

이 취약점은 CWE(Common Weakness Enumeration) 목록에서 CWE-287(부적절한 인증)으로 분류되어 있습니다.

이 취약점의 잠재적 피해로는 민감한 리소스나 기능이 의도치 않은 사용자에게 노출되는 것이 있습니다. 공격자는 민감한 정보에 접근할 수 있고, 심각한 경우 웹사이트에서 임의의 코드를 실행할 수도 있습니다. 특히 사용자 회원가입을 허용하는 웹사이트라면 이 플러그인 취약점은 매우 치명적인 문제입니다.

대응 방안

이 취약점으로부터 안전해지기 위한 가장 간단한 대응 방법은 다음 두 가지입니다.

  • 최신 버전으로 업데이트: 0.9.97.20 이후 릴리즈된 최신 워드프레스 AMP 플러그인으로 즉시 업데이트하세요.
  • 플러그인 비활성화: 취약점이 해결될 때까지 해당 플러그인을 비활성화하세요.

마지막으로, AMP를 활성화한 사이트의 취약점 점검이 필요하다면 전문가의 도움을 받아 체계적인 보안 진단을 받아보는 것도 좋은 방법입니다.

참고: 취약한 코드가 발견된 해당 플러그인은 최근 워드프레스 플러그인 디렉터리에서 일시적으로 삭제되었지만, 개발자와 워드프레스 팀 어느 쪽도 정확한 문제 원인을 공개하지 않았습니다.