< 뉴스룸으로 돌아가기

LavaMoat이 SSP에 — 멀티시그를 위한 런타임 샌드박싱

·4분 읽기·작성자: SSP Editorial Team
보안 배지 아래 자물쇠, 체크 표시 방패, 칩, 번개 아이콘이 놓이고, 헤드라인은 「LavaMoat이 SSP에」.

2025-10-23, SSP Wallet v1.27.0이 올해 가장 깊은 런타임 보안 변화를 안고 도착했습니다. MetaMask가 선구적으로 도입한 JavaScript 컴파트먼트화 프레임워크인 LavaMoat가 이제 SSP에 통합되었습니다. 지갑이 로드하는 모든 서드파티 의존성은 각자의 샌드박스에 봉인되어, 손상된 패키지 — 모든 현대 지갑이 마주하는 npm 공급망 위험 — 가 더 이상 지갑의 다른 부분이 하는 일을 읽거나 변경할 수 없습니다. 이번 릴리스는 또한 Content Security Policy를 더 강하게 조이고, 보안 테스트 페이지를 이스터에그 제스처 뒤에 숨기며, 한 줌의 UI 다듬기 승리를 함께 가져옵니다.

런타임 샌드박싱이 SSP에 도착

LavaMoat을 30초로 말하면: JavaScript 앱의 의존성 트리를 가져와 각 패키지를 자신만의 컴파트먼트로 격리하고, 각 컴파트먼트가 정책 파일에서 명시적으로 부여된 글로벌과 API만 만질 수 있게 하는 런타임입니다. 기본적으로 서드파티 의존성은 localStorage를 읽을 수 없고, fetch를 호출할 수 없으며, 키링에 손댈 수 없고, Object.prototype을 몽키패치할 수 없습니다. 시도하면 런타임이 멈춥니다.

이는 대부분의 웹 앱과는 다른 보안 자세입니다. 보통의 웹 앱에서는 모든 임포트된 패키지가 앱 자체와 같은 권한으로 실행됩니다. SSP 내부에서는 비밀 키를 다루는 코드, 거래소 API와 대화하는 swap 통합, 그리고 서드파티 UI 헬퍼들이 예전에는 단일 글로벌 스코프를 공유했습니다. v1.27.0부터는 더 이상 그렇지 않습니다.

컴파트먼트화가 왜 중요한가

컴파트먼트화가 무력화하려는 위협은 npm 공급망 공격입니다. 이 패턴은 야생에서 반복해서 목격되어 왔습니다: 공격자가 인기 패키지의 통제권을 인수하고, 악성 버전을 게시하며, 그것을 임포트하는 모든 앱으로 전이 의존성의 물결을 타고 들어갑니다. 지갑에게, 앱의 완전한 권한으로 실행되는 악성 패키지의 영향은 재앙적입니다 — 메모리에서 시드 자료를 읽고, 비밀 키를 유출하고, 사용자가 서명하기 전에 트랜잭션 목적지를 다시 쓸 수 있습니다.

LavaMoat은 공격이 앱에 도달하는 것을 막지 않습니다. 영향을 제거합니다. 손상된 의존성은, 트리의 다섯 단계 깊숙이 묻혀 있어도, 서명 표면에 대한 접근이 없고, 정책이 허용하는 범위를 넘는 네트워크 접근이 없으며, 다른 컴파트먼트의 상태를 읽을 방법이 없는 컴파트먼트 안에서 실행됩니다. 손상된 패키지 ≠ 손상된 지갑 — 이 등가는 v1.27.0에서 처음으로 성립합니다.

이는 올해 초에 도착한 보호 장치를 대체하는 것이 아니라 보완합니다. SSP 자체 소스 코드는 이미 Halborn의 전체 감사로 검증되었고, 당신이 설치하는 바이너리는 결정적 빌드와 GPG 서명을 통해 이미 그 감사된 소스에 대해 증명 가능했습니다. LavaMoat은 런타임 간극을 닫습니다: 의존성이 빌드 서명 후에 악성으로 변하더라도, 지갑 수준 접근까지 권한을 상승시킬 수 없습니다.

더 강한 Content Security Policy

런타임 샌드박싱과 함께, v1.27.0은 브라우저 계층의 Content Security Policy도 조입니다. CSP는 지갑이 자신을 위해 선언하는 예산입니다 — 어떤 오리진에서 스크립트를 로드할 수 있는지, 어떤 오리진과 대화할 수 있는지, 어떤 인라인 동작이 허용되는지. 더 엄격한 CSP는 LavaMoat이 페이지 내에서 정책을 강제하기도 전에 공격자가 활동할 수 있는 공간을 좁힙니다.

결합된 효과는 두 겹의 봉쇄입니다: 브라우저는 선언된 정책 외부의 리소스를 로드하기를 거부하고, 그래도 실행되는 JavaScript는 그 후 LavaMoat에 의해 컴파트먼트화됩니다. 각 계층은 서로 다른 실패 모드를 다루며, 이것이 바로 심층 방어의 요점입니다.

숨겨진 보안 테스트 페이지

내부 검증을 위해 — 그리고 이번 릴리스에서 의도적인 이스터에그를 동반한 유일한 기능입니다 — v1.27.0은 일반 내비게이션에 노출되지 않는 보안 테스트 페이지를 포함합니다. 버전 번호를 빠르게 여러 번 연속 클릭하면 드러납니다. 페이지는 LavaMoat 정책과 CSP 규칙에 대한 일련의 검사를 실행하므로, 리뷰어와 레드팀은 자신이 검사하는 빌드에서 보호가 활성화되어 있음을 지갑에 직접 계측기를 다는 일 없이 확인할 수 있습니다. 일상 사용자를 위한 것이 아니며, 그 뒤에 악용 가능한 것은 아무것도 없습니다. v1.27.0이 약속하는 바를 더 편리하게 검증하는 방법일 뿐입니다.

심층 방어: 감사 + 재현 가능 + 샌드박스

v1.27.0의 흥미로운 부분은 고립된 LavaMoat이 아니라, 세 조각이 어떻게 구성되는가입니다. 감사된 소스 코드 (Halborn), 누구나 그 소스에 대해 검증할 수 있는 재현 가능한 바이너리 (결정적 빌드), 그리고 손상된 의존성을 가두는 런타임. 셋이 합쳐 질문을 "SSP의 의존성 트리 전부를 신뢰하는가?"에서 "감사된 코어를 신뢰하는가?"로 바꿉니다 — 훨씬 작고 답하기 쉬운 신뢰 표면입니다.

UI 다듬기는 그 위에 얹힙니다: swap 거래소 로고가 이제 올바르게 렌더링되고, 브랜드 팔레트가 화면 전반에서 정렬되었습니다. 지갑이 어떻게 살아남는지를 바꾸는 것, 그것이 바로 컴파트먼트화입니다.

이 글 공유하기

관련 글