← 메인으로

🔑 전자금융 보안 모의해킹 · 거래 비밀번호 변경 보안

Target: 거래 비밀번호 변경 API
평가기준: 위험도 4 WEB-FIN 비밀번호 변경
💡 쉽게 말하면
현관 비밀번호를 바꾸려면 먼저 지금 비밀번호를 한 번 더 눌러 본인임을 증명해야 합니다. 또 새 번호를 예전과 똑같이 설정하면 바꾼 의미가 없으니 막아야 합니다.
🔓 공격 시뮬레이션 (Red Team)
🛡️ 대응 방안 (Blue Team)
거래 비밀번호 변경 요청🔒 Secured Channel
거래 비밀번호 변경 시 본인확인 절차(현재 비밀번호 재입력 등)가 생략되거나, 변경 시 이전 비밀번호 재사용이 허용되면, 세션 탈취 공격자가 본인 인증 없이 비밀번호를 바꾸거나 사실상 동일한 값으로 되돌려 계정을 장악할 수 있습니다.
⚡ 본인확인 생략 + 이전 비밀번호 재사용
currentPassword 미검증, 직전 값 그대로 재설정
OFF
🖥️ 금융 시스템 처리 로그
[SYSTEM] Core Banking Channel ready.
[INFO] 거래 요청 대기 중...
⚖️ 컴플라이언스 위반 분석
공격 실행 후 분석 결과가 표시됩니다.
[심각] 전자금융 보안 기준 위반 감지
  • 평가기준 WEB-FIN [전자금융] 비밀번호 변경 시 본인확인(위험도 4)
  • 비밀번호 변경 시 이전 비밀번호 재사용 방지 미흡
  • 전자금융감독규정 제34조: 이용자 인증정보 관리대책 미흡
🛡️ 대응 코드/설정 실습

서버는 비밀번호 변경 시 현재 비밀번호로 본인확인을 강제하고, 새 비밀번호가 이전 비밀번호와 동일/유사하지 않은지 검증해야 합니다. 아래 코드를 보완하세요.

📚 금융보안원 평가기준 / 조치 가이드

1. 점검 항목

이용자 인증정보 관리 > 비밀번호 변경 보안

2. 위험 분석

  • 본인확인 생략 시 세션 탈취만으로 비밀번호 변경 가능
  • 이전 비밀번호 재사용 시 사실상 비밀번호 변경 효과 무력화

3. 조치 방법

  • 변경 시 현재 비밀번호 재입력 등 본인확인 절차 수행
  • 이전 비밀번호(최근 N개) 재사용 방지 정책 적용
  • 변경 이력·실패횟수 모니터링
🏗️ 현대 금융 IT 환경에서의 변형
재인증세션 폐기Argon2id

어디가 달라졌나

비밀번호 변경은 계정 탈취의 마지막 단계입니다. 공격자가 세션을 잡은 뒤 비밀번호를 바꿔 정당한 소유자를 밀어내는 흐름이라, “변경 기능의 보안”은 곧 탈취 복구 가능성의 문제입니다.

현대 스택에서의 조치

  • 변경 시 현재 비밀번호 재확인(step-up). 세션이 있다는 사실만으로 허용하지 않습니다.
  • 변경 성공 시 다른 모든 세션·토큰을 폐기하고 등록된 연락처로 알림을 보냅니다. 알림은 되돌릴 기회를 줍니다.
  • 저장은 Argon2id(또는 bcrypt) 로. 금융권 레거시에 아직 남아 있는 SHA-256(salt+pw) 는 GPU 공격에 약합니다.
// 변경 = 재인증 + 전 세션 폐기 + 알림, 셋이 한 묶음
requireRecentAuth(session, Duration.ofMinutes(5));
userRepo.updatePassword(userId, argon2.hash(newPw));
tokenStore.revokeAllForUser(userId);
notifier.send(user.email(), "비밀번호가 변경되었습니다");
놓치기 쉬운 곳 — 변경 직후 자기 세션까지 끊어 버리면 사용자가 당황합니다. 현재 세션은 새 토큰으로 교체하고 나머지만 폐기하는 것이 올바른 동작입니다.