Solana Program Authority Security: 5 Upgrade Guardrails That Would Have Saved Step Finance's $27M
Step Finance가 단일 개인 지갑으로 프로그램 업그레이드 권한을 관리해 261,854 SOL($27.3M) 손실, 5가지 운영 보안 가드레일 도입으로 방지 가능
AI 요약
Context
Solana의 업그레이드 가능한 프로그램은 기본적으로 단일 개인 지갑(deployer wallet)이 upgrade_authority로 지정되어 승인 없이 언제든 새로운 바이트코드를 배포할 수 있다. Step Finance의 경우 개인 장치 침해로 upgrade_authority가 탈취되어 공격자가 프로그램을 제어하고 재무 자산을 수 분 내에 유출시켰다. 스마트 계약 감사로는 이러한 운영 보안 취약점을 방지할 수 없었다.
Technical Solution
- Multisig Upgrade Authority: Squads Protocol을 사용해 upgrade_authority를 3-of-5 또는 그 이상의 멀티시그 지갑으로 변경, 단일 침해 장치로 업그레이드 불가능하게 구성
- Time-Locked Upgrades: 업그레이드 제안 후 48시간의 최소 잠금 기간을 설정하고, 임의의 단일 서명자도 실행 전 취소 가능한 온체인 메커니즘 구현
- Bytecode Verification: 제안된 버퍼의 SHA256 해시를 공개 소스코드의 검증 가능한 빌드와 비교하는 단계 추가, 불명확한 바이트코드 배포 시 즉시 취소
- On-Chain Upgrade Monitor: BPF Loader의 로그를 모니터링하는 자동화된 시스템 배포, 업그레이드 관련 활동 발생 시 초 단위로 알림 발생
- Conditional Immutability: 팀 임의 구성원이 즉시 프로그램을 동결할 수 있는 메커니즘, 동결 해제는 별도 고위험 카운슬(higher-threshold council)이 1주일 대기 후 승인
Impact
Step Finance 사건에서 제시한 5가지 가드레일을 모두 적용했을 경우 $27.3M 자산을 재무에 유지할 수 있었음. 구현 시간: Multisig 전환 30분, 업그레이드 모니터 설정 2시간, 타임락 업그레이드 1~2일, 바이트코드 검증 통합 분기 내, 조건부 불변성 평가 후속 단계.
Key Takeaway
Upgrade authority는 프로그램의 루트 액세스이므로 재무 자산과 동일한 수준의 냉동 저장소 보안으로 취급해야 하며, Multisig 도입은 최소 요구사항이고 타임락과 모니터링, 검증 메커니즘이 함께 구성되지 않으면 조율된 공격으로부터 침묵 속에 침해될 수 있다.
실천 포인트
Solana의 업그레이드 가능한 프로그램을 운영하는 개발팀이 Squads Protocol의 3-of-5 Multisig로 upgrade_authority를 전환하고, 48시간 타임락 및 BPF Loader 모니터링을 추가하면, 단일 개인 장치 침해 또는 내부자 공격만으로는 프로그램 제어 및 자산 유출이 불가능하게 할 수 있다.