⚠️ 훈련용 취약 웹사이트 — 실제 거래소가 아닙니다
취약점 목록 A08
A08

Software & Data Integrity Failures

CVSS Score
7.2
high

무결성 검증 없이 소프트웨어 업데이트를 적용하거나, 서명되지 않은 데이터를 신뢰하는 취약점입니다. CSRF, 안전하지 않은 파일 업로드 포함.

💥 공격 시 영향

  • CSRF: 피해자 세션으로 송금·정보변경 자동 실행
  • 파일 업로드: 서버에 악성 스크립트 업로드 가능
  • 역직렬화 공격으로 원격 코드 실행

🎯 이 사이트에서 실습하기

CSRF 송금
CSRF 토큰 없는 폼 → 외부 사이트에서 자동 요청
실습 페이지 →
파일 업로드
확장자 검증 없이 .js, .ejs 업로드 가능
실습 페이지 →

💻 취약 코드 vs 안전한 코드

❌ 취약한 코드
// ❌ 취약: CSRF 토큰 없음
<form method="POST" action="/dashboard/transfer">
  <input name="to_username" value="attacker">
  <input name="amount" value="1000000">
  <!-- 어느 사이트에서도 이 폼 전송 가능 -->
</form>

// ❌ 취약: 파일 확장자 검증 없음
upload.single('file') // .js, .ejs, .html 모두 허용
✅ 안전한 코드
// ✅ 안전: CSRF 토큰 검증
const csrf = require('csurf');
app.use(csrf());
// 폼에 토큰 포함
<input type="hidden" name="_csrf" value="<%= csrfToken() %>">

// ✅ 안전: 파일 타입 + 확장자 검증
const allowedExt = ['.jpg', '.png', '.pdf'];
const ext = path.extname(file.originalname).toLowerCase();
if (!allowedExt.includes(ext)) cb(new Error('허용되지 않는 파일'));

🛡️ 대응 방안

📚 참고 자료

OWASP A08:2021 CWE-352: CSRF CWE-434: Unrestricted File Upload