안전한 움직임
Aptos Labs 및 OtterSec 제공
Aptos 네트워크는 기본 프로그래밍 모델로 Move 스마트 계약 언어를 사용합니다. Move는 안전한 스마트 계약의 생태계를 위해 설계되었지만 Move 자체의 잘못된 구현은 이러한 속성을 위태롭게 할 수 있습니다. Aptos Labs는 커뮤니티와 함께 Move를 최대한 안전하게 만들기 위해 최선을 다하고 있습니다. 우리는 올바른 스마트 계약을 작성하기 위한 도구(예: 주로 Aptos에서 개발한 Move Prover)와 Move Virtual Machine과 같은 런타임 핵심 구성 요소의 정확성에 투자하고 있습니다. 이 기사에서는 파트너와 함께 기본 구현의 감사, 버그 바운티, 퍼징 및 보안 강화를 통해 후자를 달성하는 방법을 설명합니다.
우리는 무엇을 확보하고 있습니까?
Move의 보안은 몇 가지 기본 속성을 기반으로 합니다. 이러한 속성은 Move 실행 엔진이 사용하고 소스 언어와 독립적인 바이트코드 측면에서 정의됩니다.
- 유형 안전성 : 각 값에는 고유하고 위조할 수 없는 유형이 있습니다. 예를 들어 'address' 유형의 일부 값을 가져와서 'signer' 유형의 보안 관련 토큰으로 바꾸는 것은 불가능합니다.
- 모듈식 캡슐화 : 스토리지의 리소스는 해당 리소스를 선언하는 모듈 내의 코드에서만 조작할 수 있습니다. 가시성이 일치하는 함수만 교차 모듈이라고 할 수 있습니다.
- 소유권 및 수명 : Move의 능력 시스템은 값 유형에 대해 해당 능력이 선언되지 않는 한 값을 복사, 삭제, 저장 또는 키로 사용하지 않도록 강제합니다.
- 참조 안전성 : 참조는 참조가 가리키는 값보다 오래 지속되지 않습니다. 변경 가능한 참조는 배타적으로 소유되므로 별칭이 불가능합니다.
관심 있는 질문은 다음과 같습니다.
- 바이트코드 검증기는 완전 합니까? 그리고 모든 프로그램에 대해 위의 모든 속성이 충족됨을 보장합니까? 위의 속성을 위반하면 잠재적으로 자산 손실이 발생할 수 있으므로 이는 중요합니다.
- 지정된 Move 바이트코드 프로그램이 실행 엔진을 충돌시킬 수 있습니까? 복제된 상태 기계에서는 모든 노드가 동일한 프로그램을 실행하므로 네트워크를 정지시키는 데 사용할 수 있습니다.
- 주어진 프로그램으로 인해 실행 엔진의 리소스(메모리 또는 시간)가 부족해질 수 있습니까? 이것은 네트워크 속도를 늦추거나 중단시키는 DoS 공격에 악용될 수 있습니다.
버그가 없는 코드를 개발하는 핵심에는 올바른 도구와 짝을 이루는 잘 훈련된 소프트웨어 엔지니어링 사례가 있습니다. Aptos에서 우리는 Rust 생태계의 모범 사례와 결합된 필수 코드 검토와 지속적인 테스트 및 통합의 엄격한 프로세스를 따르고 있습니다. 이러한 전통적인 측면 외에도 우리는 Move가 설계된 대로 안전하게 유지하기 위해 다음과 같은 측정을 적용하고 있습니다.
감사 및 컨설팅
블록체인 네트워크에 대한 신뢰를 얻기 위해 업계에서 가장 존경받는 측정 중 하나는 감사입니다. Aptos Labs에서는 Move Virtual 머신 감사를 위해 Certik( 보고서 ) 및 Holburn과 계약했습니다. 여러 가지 중요한 문제가 발견되었으며 그 중 하나는 유형 안전성 범주에 속합니다.
외부 감사 외에도 Aptos Labs는 바이트코드 검증기에 중점을 둔 커뮤니티 감사 노력을 주도하고 조직했습니다. Mysten Labs, Starcoin 및 MoveBit 및 OtterSec과 같은 감사 회사의 엔지니어는 이러한 노력을 위해 Aptos 엔지니어와 팀을 이루어 약 6인 주간의 감사 시간을 투자했습니다. 그 결과는 이 감사 중에 생성된 수십 개의 문서를 참조하여 이 스프레드시트에 캡처됩니다 . 이 감사 노력은 Aptos가 메인넷에 도달하기 전에 여러 문제를 발견하고 해결했습니다.
마지막으로 OtterSec 과 긴밀한 협력 관계를 유지하고 있습니다. OtterSec 팀은 수동 코드 검토를 수행하고 다양한 대상에 대한 퍼징 기술을 개발하여 Move VM 및 Aptos 프레임워크 코드에서 여러 중요한 문제를 식별했습니다. 그들은 또한 Move VM(아래 참조)에 중복 심층 방어 논리를 추가하는 노력을 주도하여 자금 손실 취약성을 완화하기 위해 진행 중인 설계 작업에 영향을 미쳤습니다.
버그 바운티
Aptos Labs는 버그 바운티 프로그램 을 운영합니다 . 자산 손실로 이어질 수 있는 치명적인 버그의 경우 최대 $1,000,000의 포상금이 제공됩니다. 마찬가지로 크래시 버그는 최대 $100,000까지 보상받을 수 있습니다.
현상금 프로그램을 통해 우리는 재능 있는 보안 연구원들과 긴밀히 협력하여 버그를 찾고 수정했습니다. 이러한 버그 중 일부는 심각한 범주에 속했고 다른 버그는 fuzzer를 사용하여 발견된 충돌이었습니다.
Aptos Labs는 버그 포상금에 대한 약속을 지켰고 상당한 포상금이 지급되었습니다. 또한 Aptos Labs는 바운티 프로그램을 통해 만난 whitehats의 전문 지식을 계속 활용하고 이 커뮤니티와 계속 협력할 계획입니다.
퍼징
현상금 프로그램은 우리가 Aptos Labs에서 퍼징에 투자하도록 동기를 부여했습니다. Move VM 코드는 관련 지점에서 'Arbitrary' Rust 퍼징 특성을 구현하도록 수정되었으므로 'cargo fuzz'를 사용하여 바이트코드 모듈을 동적으로 생성하고 유효성을 검사할 수 있습니다. 이러한 퍼징 대상으로 실행되는 몇 가지 연속 작업이 있습니다.
중복성
보안을 추가로 보장하는 한 가지 방법은 중복성을 이용하는 것입니다. 소위 편집증 모드 를 Move VM에 추가하여 실행 시 위에서 언급한 유형 안전 및 기타 규칙을 적용합니다. 코드가 시스템에 입력될 때 바이트코드 검증기가 이미 이러한 속성을 확인하는 동안 편집증 모드는 바이트코드 실행 시간 동안 동일한 확인을 다시 확인합니다. 편집증 모드는 Move 커뮤니티 내에서 광범위하게 논의되었으며 Aptos 엔지니어가 설계를 이끌었습니다. 자세한 내용은 이 PR (최종 버전) 및 이 PR (중간 버전)을 참조하십시오.
무엇 향후 계획?
Aptos Labs는 Move를 최대한 안전하게 만들기 위해 최선을 다하고 있으며 이 분야에 막대한 투자를 했습니다. 여기에서 우리와 파트너가 수행하는 감사, 버그 바운티, 퍼징 및 강화에 대한 지속적인 노력에 대해 설명했습니다. 앞으로 우리는 이 공간에 대한 투자를 계속할 계획입니다. 우리는 계속해서 버그 바운티 프로그램을 제공하고 평판이 좋은 보안 감사자와 협력하며 퍼징 기술과 같은 보안 강화 도구 개발을 추진할 것입니다.

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































