스마트 에스크로 시리즈 #3: 보안
Source: Dev.to
XRP Ledger (XRPL)는 안정성, 효율성, 그리고 견고함으로 잘 알려져 있습니다. XRPL이 스마트 에스크로와 기본 WebAssembly (WASM) 가상 머신을 통해 맞춤형 온‑체인 비즈니스 로직을 도입함에 따라, 가장 중요한 설계 목표 중 하나는 네트워크의 무결성과 보안을 유지하는 것입니다.
스마트 에스크로의 구현은 보안 우선 설계에 기반합니다.
엄격한 샌드박스: 무단 접근 방지
WASM 코드는 안전하고 샌드박스된 환경에서 실행됩니다. 버그와 악용 가능성을 최소화하기 위해 고급 WASM 기능이 비활성화되고, WASM 모듈의 메모리 제한이 엄격하게 설정됩니다.
스마트 에스크로에서 WASM 코드에 적용되는 기본 규칙은 읽기 전용 접근이며, 매우 제한된 쓰기 접근만 허용됩니다. WASM 코드는 모든 원장 객체와 다양한 온‑체인 데이터(예: 원장 헤더 정보)에 대해 읽기 전용 접근 권한만 가집니다. 쓰기 권한은 자신이 연결된 에스크로의 Data 필드에만 부여됩니다. WASM 코드가 할 수 있는 유일한 영향은 Data 필드를 업데이트하고 에스크로를 해제할 수 있는지 여부를 반환하는 것입니다. 이러한 엄격한 제한은 사용자 정의 로직이 원장의 무결성이나 다른 계정의 잔액에 부정적인 영향을 미치는 것을 방지합니다.
Guarding the Network: Resource Limits and Gas
프로그래머블 코드를 도입함에 따라 발생할 수 있는 주요 보안 문제는 서비스 거부(DoS) 공격이며, 악의적인 코드가 무한 루프를 만들거나 과도한 자원을 소모하려 할 때 발생합니다. 이를 완화하기 위해 실행은 엄격히 제한됩니다.
WASM 실행의 모든 단계는 가스(gas) 를 소모합니다. 사용자가 EscrowFinish 트랜잭션을 제출할 때는 ComputationAllowance 필드를 포함해야 하며, 이는 코드 실행에 대해 지불할 의향이 있는 최대 가스 양을 지정합니다. 커스텀 코드가 ComputationAllowance에 제공된 가스 예산을 초과하면 실행은 즉시 종료되고 결정적인 실패가 발생합니다. 이는 악의적이거나 버그가 있는 코드가 무한히 실행되는 것을 방지하고, 실행이 빠르고 예측 가능하도록 보장합니다.
최대 WASM 코드 크기와 허용되는 최대 연산량과 같은 핵심 자원 제약은 UNL‑조정 가능한 파라미터이며, 표준 수수료 투표 과정을 통해 제어됩니다. 이를 통해 네트워크는 성능 변화나 악용 시도에 따라 자원 사용량과 가격을 동적으로 조정할 수 있으며, 별도의 개정 없이도 가능합니다. 또한 빠른 차단 메커니즘을 제공하여, 연산 제한을 0으로 설정함으로써 WASM 코드 사용을 전면 차단할 수 있습니다.
사용자 및 개발자 보호
버그가 있는 맞춤 코드로 인해 자금이 영구적으로 잠기는 위험을 완화하기 위해, FinishFunction을 포함하는 모든 에스크로는 취소 가능해야 합니다. 이 필수 기능은 맞춤 조건이 결코 충족될 수 없을 경우(버그나 논리 오류 때문에) 지정된 CancelAfter 시간이 지나면 송신자가 여전히 자금을 회수할 수 있도록 보장합니다.
Audits and Testing
전체 구현은 현재 엄격한 테스트와 다중 보안 감사를 진행 중이며, WASM 런타임이 rippled에 안전하게 통합되고 WASM 코드가 설정된 가정 및 불변성을 위반할 수 없음을 확인하고 있습니다.
선택된 런타임인 Wasmi는 블록체인 사용 사례에 대해 이전에 두 차례 감사를 받았습니다. 해당 감사 보고서는 여기에서 공개적으로 확인할 수 있습니다:
https://github.com/wasmi-labs/wasmi/tree/main/resources
이 보안 프레임워크는 기존 XRPL 기본 요소의 안정성을 활용하면서 사용자 배포 코드와 관련된 위험을 엄격히 제한하고, 작고 측정된 단계를 통해 맞춤형 프로그래밍의 유연성을 도입하도록 보장합니다.


