7분의 버그, 284억의 파장 — 토스뱅크 환율 오류 사태의 해부학
무슨 일이 있었나
2026년 3월 10일 오후 7시 29분, 토스뱅크 앱에서 엔화 환율이 100엔당 472원으로 표시됐습니다. 당시 정상 환율은 100엔당 약 934원. 정확히 절반 가격이었습니다.
이 오류는 7시 36분까지 7분간 지속됐고, 그 사이 약 4만 명의 고객이 반값에 엔화를 환전하여 총 284억 원 규모의 거래가 체결됐습니다.
"외환시스템 개선 작업 중 문제가 발생했으며, 환율 고시 체계 전반을 전면 개선하겠다" — 토스뱅크 공식 사과문, 2026.03.13
왜 환율이 반값이 됐나
토스뱅크는 2개 해외 금융기관으로부터 환율 데이터를 수신하고, 이 두 값의 평균을 산출하여 자체 고시 환율로 사용합니다.
문제는 시스템 점검 과정에서 2개 기관 중 1곳의 데이터가 반영되지 않은 것이었습니다. 한 쪽 데이터만으로 산출된 고시 환율은 실제 시세의 약 절반 수준인 472원이 됐습니다.
rate_a = 934 # 해외 기관 A
rate_b = 934 # 해외 기관 B
published = (rate_a + rate_b) / 2 # = 934
# 사고 당시 (기관 B 데이터 누락)
rate_a = 934
rate_b = None → 0 or 10 # 누락/이상값
published = (934 + ~10) / 2 # ≈ 472
구조적 결함
외부 데이터 소스가 단 2개뿐인 상태에서, 하나만 누락되면 고시 환율이 50% 왜곡됩니다. Failover 로직이나 이상치 검증 없이 평균값을 그대로 사용한 것이 근본 원인입니다.
7분 만에 4만 명이 거래한 비밀
불과 7분 만에 4만 명이 거래할 수 있었던 핵심 원인은 "원하는 환율에 환전하기" 서비스입니다. 사용자가 미리 설정한 목표 환율에 도달하면 자동으로 매수하는 기능인데, 472원이라는 비정상 환율이 대부분의 사용자 목표 환율보다 낮았기 때문에 자동환전이 대량으로 트리거됐습니다.
사고 타임라인
| 시간 | 사건 | 상태 |
|---|---|---|
| 19:29 | 환율 산출 로직에서 기관 B 데이터 미반영, 472원 고시 | 오류 발생 |
| 19:30 | 자동환전 서비스가 목표 환율 도달로 인식, 대량 체결 시작 | 증폭 |
| ~19:33 | SNS/커뮤니티에 "엔화 반값" 확산, 수동 환전 고객 합류 | 확산 |
| 19:36 | 오류 감지, 환전 서비스 긴급 중단 | 중단 |
| 3/11 | 금감원 IT검사국 + 은행검사국 합동 현장점검 착수 | 조사 |
| 3/16~ | 전자금융거래법 제8조 근거 거래 전건 취소, 고객당 1만 원 보상 | 후속 |
어떤 시스템이 있었어야 했나
이번 사고는 여러 계층의 안전장치가 부재하거나 작동하지 않았기 때문에 발생했습니다. 방어적 설계(Defensive Design) 관점에서 필요했던 시스템을 정리합니다.
1. 환율 이상치 탐지
- 직전 고시 환율 대비 ±5% 초과 변동 시 자동 차단
- 최소 3개 이상의 외부 데이터 소스 교차 검증
- 데이터 소스 누락 시 직전 환율 유지(Fallback)
2. 환전 서킷브레이커
- 1분 내 거래량이 일평균의 10배 초과 시 자동 일시정지
- 환율 변동 10% 초과 시 거래 중단 + 담당자 알림
- 수동 확인 후에만 재개 가능
3. 자동환전 안전장치
- 시장가 대비 ±3% 범위 밖의 환율에서는 자동환전 보류
- 분당 체결 건수 상한선(Rate Limit) 설정
- 5분 내 1만 건 초과 시 긴급 경보 발송
threshold: "±5% from previous rate"
min_sources: 3
fallback: "use_last_valid_rate"
circuit_breaker:
volume_spike: "10x daily avg → pause"
rate_deviation: ">10% → halt"
resume: "manual_approval_only"
역사가 반복된다: 금융 IT 장애 연대기
| 사례 | 원인 | 피해 규모 | 소요 시간 |
|---|---|---|---|
| Knight Capital (2012, 미국) | 8개 서버 중 1개에 구코드 잔존, 배포 오류 | $4.4억 (약 5,700억 원) | 45분 |
| 토스증권 (2022, 한국) | 원·달러 환율 10% 저렴 표시 | 비공개 (자체 흡수) | 25분 |
| 토스뱅크 (2026, 한국) | 외부 환율 데이터 1곳 미반영, 50% 오표시 | 100억 원대 추정 | 7분 |
Knight Capital은 자동 매매가, 토스뱅크는 자동 환전이 사고를 증폭시켰습니다. 공통 교훈은 하나입니다 — 자동화는 편의성을 높이지만, 이상 상황에서의 안전장치(서킷브레이커) 없이는 피해를 기하급수적으로 키울 수 있습니다.
나스닥 IPO에 미치는 영향
토스(비바리퍼블리카)는 2026년 2분기 나스닥 상장을 준비 중이며, 기업가치 100억 달러(약 13조 원)를 목표로 하고 있습니다. 이번 사고는 금융 서비스의 근간인 시스템 무결성에 흠집을 낸 것으로, 상장 심사 과정에서 부담 요인이 될 수 있다는 분석이 나옵니다.
이은미 토스뱅크 대표는 연임에 성공했지만, 2기 체제 출범과 동시에 터진 이번 사고로 리스크 관리 체계의 실효성이 시험대에 올랐습니다.
장애를 막는 사람들 — 뜨는 직무 3선
SRE (Site Reliability Engineer)
- SLI/SLO 기반 서비스 안정성 설계
- 서킷브레이커 패턴, Chaos Engineering
- 인시던트 대응 프로세스(포스트모템)
FDS 엔지니어 (이상거래 탐지)
- 실시간 룰 엔진 + ML 기반 이상치 탐지
- Kafka 등 스트림 처리 파이프라인
- 금융 도메인 지식 (환율, 결제, 수신)
QA / 테스트 엔지니어
- 경계값 테스트, 장애 주입(Fault Injection)
- E2E 시나리오 자동화
- 외부 API Mock 전략
핵심 정리
토스뱅크 환율 오류 사태는 편의 기능(자동환전)이 안전장치(서킷브레이커) 없이 운영될 때, 7분 만에 100억 원대 손실로 이어질 수 있음을 보여준 사건입니다.
- 외부 데이터 소스 의존 시 최소 3개 이상 교차 검증 필수
- 자동화 기능에는 반드시 서킷브레이커가 동반되어야 함
- 금융 시스템은 "정상 동작"이 아닌 "비정상 상황"을 기준으로 설계해야 함
- 빠른 성장과 편의성 뒤에는 방어적 설계(Defensive Design)가 있어야 함
참고자료
'금융 IT' 카테고리의 다른 글
| 5,000원으로 빌딩 주인이 된다 (0) | 2026.03.24 |
|---|---|
| 골드만삭스의 새 직원은 AI입니다 (0) | 2026.03.23 |
| 원화 스테이블코인 발행 전쟁이 시작됐다 (0) | 2026.03.21 |
| 110조 보조금도 토큰으로 지급한다 (0) | 2026.03.21 |
| 수천억을 들여 코드를 갈아엎는 이유 (1) | 2026.03.19 |