XRP는 2012년 XRP 원장(XRP 거래를 서버들이 함께 적는 장부)이 처음 열릴 때 1,000억 개가 한꺼번에 만들어졌다. 그 뒤로는 한 개도 더 생기지 않게 설계됐다. 그런데 10월 9일 XRP 원장 개발진이 공개한 보안 보고서에 따르면, 이 약속을 깰 수 있는 계산 오류가 2015년부터 약 10년 동안 숨어 있었다.
버그는 고쳤고 실제로 악용된 흔적도 없으니 끝난 일로 읽기 쉽다. 하지만 핵심은 따로 있다. “개수가 정해져 있다”는 약속은 바꿀 수 없는 자연법칙이 아니었다. 사람이 짠 계산 코드와, 그 코드를 며칠 만에 고칠 수 있는 소수의 개발자·검증자가 지켜 온 것이었다.
- 공짜 XRP는 어떻게 생길 수 있었나
XRP 원장 안에는 코인끼리 바꾸는 장터가 있다. 공격자는 계정 수백 개를 만들고, 계정마다 “아주 적은 토큰을 줄 테니 XRP를 엄청 많이 달라”는 주문을 낸다. 그다음 다른 계정에서 결제 한 번으로 이 주문을 전부 한꺼번에 산다.
문제는 합계를 더하는 순간이다. 프로그램이 금액을 담는 칸에는 최대치가 있었는데, 주문 수백 개의 금액을 더하자 이 최대치를 넘어 아주 작은 숫자로 되돌아갔다. 파는 계정들은 각자 주문 금액을 다 받았지만, 사는 계정은 되돌아간 작은 합계만 냈다. 그 차이가 원래 없던 새 XRP다.
옛날 자동차의 여섯 자리 주행거리계를 떠올리면 쉽다. 999,999km에서 1km를 더 가면 0km로 돌아간다. 다만 주행거리계는 숫자만 틀리지만, 이번 오류는 계산대에 거의 아무것도 안 찍히는 동안 물건이 실제로 다 나가는 일이었다.
- 왜 안전장치도 못 잡았나
XRP 원장은 거래마다 “새 XRP가 생기지 않았는지” 확인하는 검사를 돌린다. 그런데 이 검사도 같은 방식으로 합계를 더해, 똑같이 작은 숫자로 되돌아갔다. 계정 하나가 전체 공급량보다 많이 가지면 걸리는 검사도 있었지만, 새 XRP를 계정 수백 개에 나눠 담으면 걸리지 않았다.
준비물도 적었다. 계정과 주문을 만들 때 묶어 두는 보증금 수백 XRP(나중에 돌려받는다)와 수수료가 전부였다. 개발진은 공격자가 검증된 거래 한 번으로 전체 공급량을 훨씬 넘는 XRP를 만들 수 있었고, 그 XRP는 다른 XRP처럼 거래소로 보낼 수 있었다고 밝혔다. 쉽게 말해, 계산대 영수증과 금고 장부가 같은 고장 난 계산기를 써서 둘 다 틀렸는데 서로는 맞아떨어진 셈이다.
- 10년 동안 왜 아무도 몰랐나
지금의 결제 엔진은 2015년에 만들어졌고, 새 XRP가 생겼는지 보는 검사는 2년 뒤 같은 계산 방식 위에 더해졌다. 보통 결제는 이 최대치 근처에도 가지 않는다. 엉뚱한 가격의 주문 수백 개를 일부러 짜야만 닿는 구멍이었다.
신고한 건 연구자 케이든 리아오와 Veria AI다. 9월 22일 XRP 원장의 버그 신고 보상 제도(구멍을 찾아 알리면 상금을 주는 제도)로 신고했다. 리플(XRP 원장 개발에 참여해 온 회사)의 개발 조직 RippleX는 같은 날 공격을 재현해, 새로 생긴 XRP를 다음 거래에서 실제로 쓸 수 있다는 것까지 확인했다.
- 어떻게 막았나 — 처음으로 건너뛴 투표
XRP 원장의 규칙은 보통 투표로 바뀐다. 거래 기록을 확인하는 검증자(장부를 맞춰 보는 서버 운영자) 가운데 믿을 만한 곳의 80% 넘게 2주 동안 찬성해야 새 규칙이 켜진다.
이번엔 그 절차를 건너뛰었다. 9월 25일 긴급 업데이트 xrpld 3.4.1(XRP 원장 서버 프로그램)을 내면서 보안 문제를 고친다고만 밝히고, 세부 내용과 소스 코드는 공개하지 않았다(소스 코드는 10월 9일 공개). 고친 코드를 공개하면 그게 곧 구멍의 위치를 알려 주는 지도가 되고, 몇 주짜리 투표를 기다리는 동안 구멍이 알려진 채 열려 있게 되기 때문이다. 기본 검증자의 80% 넘게 출시 당일 업데이트했다.
개발진은 거래 처리 방식을 이렇게 투표 없이 바꾼 건 투표 제도가 생긴 지 10년 넘게 만에 처음이라고 밝혔다. 실제로 악용된 흔적은 없었고, 보고서는 10월 9일 공개됐다.
- 비트코인에서도 있었던 일, 이번과 다른 점
2010년 8월 15일 비트코인에서도 합계가 넘치는 비슷한 오류로, 거래 한 건이 약 1,844억 개의 비트코인을 만들어 냈다. 상한이 2,100만 개인 코인이다. 5시간 안에 수정판이 나왔고, 기록이 두 갈래로 갈라졌다가 정상 기록이 앞서면서 그 비트코인은 사라졌다.
이번과 다른 점은 순서다. 비트코인은 실제로 악용된 뒤 기록을 되돌렸고, XRP는 악용된 흔적이 나오기 전에 막았다. 두 경우 모두 숫자를 지킨 건 코드에 적힌 상한이 아니라, 빨리 움직인 사람들이었다.
- 비트프레스 인사이트
XRP를 가진 사람에게 “1,000억 개가 끝”이라는 약속은 중요하다. 공격자가 100억 개를 새로 만들어 시장에 판다면, 1,000억 개가 1,100억 개가 되면서 내가 가진 XRP가 전체에서 차지하는 몫은 약 9% 줄어든다(가정 계산). 같은 크기의 피자를 더 많은 사람이 나눠 먹는 셈이다.
이번 일은 그 약속을 지킨 게 숫자 하나가 아니라 사람이었다는 걸 보여 줬다. 구멍을 신고한 연구자, 같은 날 재현한 개발진, 당일 업데이트한 검증자들이다. 동시에 이번 수정은 개발진이 투표 없이 내놓고 검증자들이 직접 업데이트해 적용됐다. 급할 때는 소수의 판단으로 거래 규칙이 바뀔 수 있다는 뜻으로 볼 수 있다.
그래서 “개수가 정해진 코인”이라는 말을 들을 때는, 그 숫자만이 아니라 그 숫자를 지키는 코드와 그걸 고치는 사람들까지 함께 믿고 있는 것이라고 보는 편이 정확하다.
출처
https://xrpl.org/blog/2026/vulnerabilitydisclosurereport-bug-20261009
https://xrpl.org/blog/2026/xrpld-3.4.1
https://xrpl.org/docs/introduction/what-is-xrp
https://www.coindesk.com/tech/2026/10/10/xrp-ledger-patched-decade-old-bug-that-could-create-billions-of-dollars-in-xrp-from-nothing
https://u.today/how-critical-xrp-ledger-bug-nearly-unleashed-unlimited-xrp-mint
https://en.bitcoin.it/wiki/Value_overflow_incident
용어 풀이
XRP 원장(XRPL) — XRP를 누가 누구에게 보냈는지를 전 세계 서버들이 똑같이 적어 두는 공동 장부다.
검증자 — 새 거래 기록이 맞는지 서로 맞춰 보고 장부에 올리는 서버 운영자다.
넘침 오류(오버플로) — 더한 값이 프로그램이 담을 수 있는 최대치를 넘어, 엉뚱하게 작은 숫자로 되돌아가는 오류다.
버그 신고 보상 제도 — 프로그램의 보안 구멍을 찾아 먼저 알려 준 사람에게 상금을 주는 제도로, 영어로 버그 바운티라고 한다.
소스 코드 — 프로그램이 어떻게 움직이는지 사람이 읽을 수 있게 적어 둔 설계도다.
비트프레스 기사는 투자 판단을 돕기 위한 정보이며, 특정 종목·코인의 매수나 매도를 권하지 않습니다. 투자 결정과 그 결과의 책임은 투자자 본인에게 있습니다.