콘텐츠로 건너뛰기

암호화폐 보안 보고서: 2022년 5월

MetaMask 모듈 호환성을 위한 Endo의 import.meta 및 __dirname 구현, MetaMask Flask용 다자간 계산 기반 분산 키 생성 프로토타입 스냅, MetaMask HackerOne 버그 바운티 프로그램 출시.

4분
암호화폐 보안 보고서: 2022년 5월

매달 MetaMask 보안 책임자 Luker가 여러분이 알아야 할 최신 암호화폐 공격과 새롭게 부상하는 위험에 대해 보고합니다.

2022년 5월 호에서는 MetaMask의 HackerOne 버그 바운티 프로그램 출시, MetaMask 의존성 호환성 향상을 위한 Endo의 import.meta 및 __dirname 구현, 그리고 MetaMask Flask에서 다자간 연산(MPC) 서명을 시연하는 분산 키 생성 프로토타입 snap을 다루었습니다. 아래에서 자세한 내용을 살펴보세요. 그 전에 먼저...

주목할 STEM 선구자: RSA 공동 발명자이자 비밀 공유 기법 창시자, Adi Shamir

Adi Shamir는 이스라엘의 암호학자로, 1977년 Ron Rivest, Leonard Adleman과 함께 RSA 알고리즘을 공동 발명했습니다. 이는 최초의 실용적인 공개 키 암호 시스템으로, 세 사람은 2002년 튜링상을 수상했습니다. 1979년에는 "비밀을 공유하는 방법(How to Share a Secret)"을 발표하며 Shamir의 비밀 공유 기법을 소개했습니다. 이 기법은 비밀을 여러 조각으로 나누어, 일정 수 이상의 조각만 있으면 원래의 비밀을 복원할 수 있는 방식입니다. 이 특성은 본 보고서에서 다루는 분산 키 생성 작업의 근간이 됩니다.

MetaMask, HackerOne 버그 바운티 프로그램 출시

MetaMask는 2022년 6월 HackerOne에 버그 바운티 프로그램을 출시하며, 보안 연구자들이 MetaMask 제품의 취약점을 공식적으로 보고할 수 있는 채널을 열었습니다.

Endo, import.meta 및 __dirname 구현으로 MetaMask 의존성 호환성 향상

2022년 4월 Endo의 CommonJS 지원 작업이 진행되면서, 엔드투엔드 테스트 결과 인기 모듈 실행의 주요 장애물이 import.meta.url 및 __dirname 지원 부재임이 확인되었습니다.

2022년 5월 3일 Agoric, MetaMask, Moddable 간의 회의에서 모듈 임포트 과정 중 import.meta를 처리해야 하는 시점에 대한 합의가 이루어졌습니다. importMetaHook 개념이 Compartment 명세에 도입되었습니다. 이 훅은 정적 분석을 통해 모듈이 import.meta에 접근한다고 판단될 때만 호출됩니다. Node.js가 resolve 함수를 해당 위치에 연결하며 생성 비용이 크기 때문에, 결과가 실제로 사용될 가능성이 있을 때만 훅을 호출하는 것이 바람직합니다.

import.meta 구현은 완료되었습니다(명세 이슈, 구현 PR). 남은 작업은 Endo에서 기본적으로 import.meta.url을 모듈에 전달하는 기능을 구현하는 것입니다. __dirname 구현도 완료되었으며(PR), 정확성과 Windows 경로 지원을 보장하기 위해 여러 차례 반복 작업을 거쳤습니다.

또한, .js 파일의 기본 모듈 타입 가정을 변경하는 중첩 package.json 파일에 대한 지원이 추가되어, compartment-mapper가 CommonJS와 ES 모듈 명세를 모두 지원하도록 설계된 복잡한 구조의 패키지를 처리할 수 있게 되었습니다(소스).

__esModule 동작 지원은 현재 보류 중입니다. 두 차례의 구현 시도 모두 엔드투엔드 테스트 점수가 오히려 낮아지는 결과를 초래했습니다. 세 번째 접근 방식인 SES 내부 ThirdPartyModuleInstance에 지원 로직을 배치하는 방법은 논란의 여지가 있는 것으로 평가됩니다. 해당 기능은 이슈 #927에서 추적 중입니다.

분산 키 생성 프로토타입 snap, MetaMask Flask에서 MPC 서명 시연

다자간 연산(MPC) 기능 개발에 진전이 있었습니다. 팀은 기존의 개념 증명(PoC) WebAssembly(WASM) 바인딩을 기반으로 MetaMask Flask에서 사용 가능한 프로토타입 snap을 제작했으며, 이를 통해 분산 키 생성(DKG)과 메시지 서명을 시연합니다. 이 snap은 키 생성 및 서명 증명 저장 외에도 키 공유의 내보내기 및 가져오기를 지원합니다.

내부적으로 이 패키지는 GG2020(Gennaro and Goldfeder 2020, 논문)의 구현체를 활용합니다. GG2020은 참여자들이 동시에 온라인 상태일 필요 없이 비동기적으로 참여할 수 있는 비대화형 온라인 단계를 지원하며, 이탈하는 참여자를 효율적으로 감지할 수 있는 프로토콜입니다.

다음 단계로는 snap 코드에서 키 공유의 수동 암호화를 제거하기 위해 snap_manageState에 암호화 지원을 추가하고, 이후 트랜잭션 서명 지원을 추가할 예정입니다. 프로토타입은 tss-snap 저장소에서 추적 중입니다(최초 ecdsa-wasm으로 공개).


MetaMask의 2022년 5월 암호화폐 보안 보고서에서는 MetaMask 모듈 호환성 체인을 위한 Endo의 import.meta 및 __dirname 구현과, MetaMask Flask에서 다자간 연산 서명을 시연하는 분산 키 생성 프로토타입 snap을 다루었습니다. 생태계 전반의 더 많은 위협, 트렌드, 안전 유지 팁을 확인하려면 MetaMask 암호화폐 보안 보고서의 이전 호를 살펴보세요.

AI가 번역했습니다. 오류가 있을 수 있습니다. 항상 정보를 확인하시기 바랍니다.

번역 평가하기

이 글의 작성자:

  • Luker

      대부분의 사람들에게 그냥 Luker로 알려진 Jen Luker는 Consensys의 제품 보안 디렉터로, 탈중앙화 기술 전반에 걸쳐 수백만 명의 사용자를 취약점, 신흥 위협, 악의적인 행위자로부터 보호하는 최전선 방어팀을 이끌고 있습니다. 2017년부터 이더리움 생태계에 적극적으로 참여해 온 그녀는 ETHNews 편집자 및 MyCrypto 프로젝트 매니저를 포함한 주요 역할을 맡아왔습니다. Luker는 업계 컨퍼런스의 단골 연사이자 MetaMask의 월간 Crypto Security Report 저자이며, The DAO가 지정한 공식 ETH Security Badge 보유자입니다. 또한 그녀는 이더리움과 블록체인 기술의 미래를 위한 필수 기반으로서 지속적인 교육과 보안 인식 제고를 열정적으로 옹호하고 있습니다.

      모든 글 읽기