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

Security Logging & Monitoring Failures

CVSS Score
6.5
medium

보안 관련 이벤트가 기록되지 않거나, 로그를 모니터링하지 않아 침해 탐지가 불가능한 상태입니다.

💥 공격 시 영향

  • 출금·로그인 등 중요 이벤트 미기록 → 사후 추적 불가
  • 침해 사고 발생 후 원인 분석 불가
  • 규정(PCI-DSS, GDPR) 위반

🎯 이 사이트에서 실습하기

API 출금 로그 없음
출금 후 transactions 테이블 미기록
실습 페이지 →
감사 로그
기록된 로그 확인 (인증 없이 접근 가능 - 이중 취약점)
실습 페이지 →

💻 취약 코드 vs 안전한 코드

❌ 취약한 코드
// ❌ 취약: 출금 후 로그 없음
router.post('/withdraw', verifyToken, (req, res) => {
  run('UPDATE users SET balance_btc = balance_btc - ?',
    [amount, user.id]);
  // 트랜잭션 로그 기록 없음!
  res.json({ success: true });
});
✅ 안전한 코드
// ✅ 안전: 모든 중요 이벤트 기록
router.post('/withdraw', verifyToken, async (req, res) => {
  run('UPDATE users SET balance_btc = balance_btc - ?',
    [amount, user.id]);
  // 감사 로그 기록
  run('INSERT INTO audit_logs (user_id, action, detail, ip) VALUES (?,?,?,?)',
    [user.id, 'WITHDRAW', `${amount} BTC to ${address}`, req.ip]);
  // 거래 내역 기록
  run('INSERT INTO transactions (...) VALUES (...)', [...]);
  res.json({ success: true });
});

🛡️ 대응 방안

📚 참고 자료

OWASP A09:2021 CWE-778: Insufficient Logging PCI-DSS Requirement 10