블로그 1뉴스 개발자 엔터프라이즈 블록 체인 설명 이벤트 및 컨퍼런스 보도 자료뉴스 레터

뉴스 레터 구독.

이메일 주소

우리는 귀하의 개인 정보를 존중합니다

홈 블로그 블록 체인 개발

스마트 계약 보안 사고 방식

모든 이더 리움 개발자가 알아야 할 5 가지 보안 원칙과 기본적인 절충점. by ConsenSys 6 월 17, 2020Posted on June 17, 2020

블록 체인 보안

ConsenSys Diligence, 블록 체인 보안 전문가 팀.

산업이 성숙하고 있지만 스마트 계약 개발은 여전히 ​​비교적 새롭고 성숙하는 분야입니다. 따라서 새로운 버그와 보안 위험이 발견되고 새로운 모범 사례가 개발됨에 따라 보안 환경의 지속적인 변화를 예상해야합니다. 학습 및 팔로우 모범 사례 스마트 계약 개발자로서해야 할 보안 작업의 시작일뿐입니다..

스마트 계약 프로그래밍에는 익숙한 것과는 다른 엔지니어링 사고 방식이 필요합니다. 실패 비용이 높을 수 있고 변경이 어려울 수 있으므로 웹이나 모바일 개발보다 하드웨어 프로그래밍이나 금융 서비스 프로그래밍과 더 비슷합니다. 따라서 알려진 취약점을 방어하는 것만으로는 충분하지 않습니다. 대신 새로운 개발 철학을 배워야합니다.

실패에 대비

사소하지 않은 계약에는 오류가 있습니다. 따라서 코드는 버그 및 취약성에 적절하게 대응할 수 있어야합니다..

  • 일이 잘못 될 경우 계약 일시 중지 ( “회로 차단기”).
  • 위험에 처한 금액 관리 (요율 제한, 최대 사용량).
  • 버그 수정 및 개선을위한 효과적인 업그레이드 경로 확보.

신중하게 롤아웃

정식 출시 전에 버그를 잡는 것이 항상 좋습니다..

  • 계약을 철저히 테스트하고 새로운 공격 벡터가 발견 될 때마다 테스트를 추가합니다..
  • 제공 버그 현상금 알파 테스트 넷 릴리스부터.
  • 단계별 롤아웃, 각 단계에서 사용량 및 테스트 증가.

계약을 단순하게 유지

복잡성은 오류 가능성을 높입니다..

  • 계약 로직이 간단한 지 확인.
  • 코드를 모듈화하여 계약 및 기능을 작게 유지.
  • 가능한 경우 이미 작성된 도구 또는 코드를 사용합니다 (예 : 자신의 난수 생성기를 사용하지 마십시오)..
  • 가능한 한 성능보다 명확성을 선호하십시오..
  • 분산화가 필요한 시스템 부분에만 블록 체인을 사용하십시오..

최신 상태 유지

새로운 보안 개발 추적.

  • 새로운 버그가 발견되는 즉시 계약을 확인하십시오..
  • 가능한 한 빨리 모든 도구 또는 라이브러리의 최신 버전으로 업그레이드.
  • 유용 해 보이는 새로운 보안 기술 채택.

EVM의 특이성에주의

프로그래밍 경험의 상당 부분이 이더 리움 프로그래밍과 관련이있을 수 있지만주의해야 할 몇 가지 함정이 있습니다..

  • 악의적 인 코드가 실행되고 제어 흐름이 변경 될 수있는 외부 계약 호출에 매우주의하십시오..
  • 공개 기능은 공개되어 있으며 악의적으로 어떤 순서로든 호출 될 수 있음을 이해하십시오. 스마트 계약의 개인 데이터는 누구나 볼 수 있습니다..
  • 가스 비용과 블록 가스 한도를 염두에 두십시오..
  • 블록 체인에서는 타임 스탬프가 정확하지 않습니다. 채굴자는 몇 초의 여유 시간 내에 거래 실행 시간에 영향을 미칠 수 있습니다..
  • 난수 생성에 대한 대부분의 접근 방식은 블록 체인에서 게임 가능합니다..

기본적인 장단점

스마트 계약 시스템의 구조와 보안을 평가할 때 고려해야 할 여러 가지 근본적인 장단점이 있습니다. 스마트 계약 시스템에 대한 일반적인 권장 사항은 이러한 근본적인 절충에 대한 적절한 균형을 식별하는 것입니다..

소프트웨어 엔지니어링 편향의 이상적인 스마트 계약 시스템은 모듈 식이며 코드를 복제하는 대신 재사용하고 업그레이드 가능한 구성 요소를 지원합니다. 안전한 아키텍처 편향의 이상적인 스마트 계약 시스템은 특히 더 복잡한 스마트 계약 시스템의 경우 이러한 사고 방식을 공유 할 수 있습니다..

그러나 보안 및 소프트웨어 엔지니어링 모범 사례가 일치하지 않을 수있는 중요한 예외가 있습니다. 각각의 경우 다음과 같은 계약 시스템 차원에 따라 최적의 속성 조합을 식별하여 적절한 균형을 얻습니다.

  • 리지드 vs. 업그레이드 가능
  • 모 놀리 식 대 모듈 식
  • 복제 vs. 재사용
리지드 vs. 업그레이드 가능

이 리소스를 포함한 여러 리소스는 Killable, Upgradeable 또는 Modifiable 패턴과 같은 가단성 특성을 강조하지만 가단성과 보안 사이에는 근본적인 절충점이 있습니다..

정의에 따른 가단성 패턴은 복잡성과 잠재적 공격 표면을 추가합니다. 단순성은 스마트 계약 시스템이 사전 정의 된 제한된 기간 동안 매우 제한된 기능 세트를 수행하는 경우 복잡성보다 특히 효과적입니다 (예 : 거버넌스없는 유한 시간 프레임 토큰 판매 계약 시스템).

모 놀리 식 대 모듈 식

모 놀리 식 자체 포함 계약은 모든 지식을 로컬에서 식별하고 읽을 수 있도록 유지합니다. 모놀리스로 존재하는 스마트 계약 시스템은 거의 없지만, 코드 검토 효율성을 최적화하는 경우와 같이 극단적 인 데이터 및 흐름의 위치에 대한 논쟁이 있습니다..

여기에서 고려되는 다른 트레이드 오프와 마찬가지로 보안 모범 사례는 단순한 단기 계약에서는 소프트웨어 엔지니어링 모범 사례에서 멀어지고 더 복잡한 영구 계약 시스템의 경우 소프트웨어 엔지니어링 모범 사례로가는 추세입니다..

복제 vs. 재사용

소프트웨어 엔지니어링 관점에서 본 스마트 계약 시스템은 합리적인 경우 재사용을 극대화하고자합니다. Solidity에서 계약 코드를 재사용하는 방법에는 여러 가지가 있습니다. 자신이 소유하고있는 입증 된 이전에 배포 된 계약을 사용하는 것이 일반적으로 코드 재사용을 달성하는 가장 안전한 방법입니다..

자가 소유 이전에 배포 한 계약을 사용할 수없는 경우 중복이 자주 사용됩니다. 다음과 같은 노력 OpenZeppelin의 Solidity 라이브러리 보안 코드를 중복없이 재사용 할 수있는 패턴을 제공합니다. 모든 계약 보안 분석에는 대상 스마트 계약 시스템에서 위험에 처한 자금에 상응하는 신뢰 수준을 이전에 설정하지 않은 재사용 코드가 포함되어야합니다..

Ethereum에서 애플리케이션을 구축하고 실행하는 것은 오늘날 소프트웨어 엔지니어에게 가장 흥미로운 영역이지만 지속적인 위협 모델링, 보안 감사 및 사고 대응 계획이 필요합니다..

Diligence 팀은 경계를 유지하고 배포에 대한 신뢰를 구축 할 수 있도록 도와드립니다..

블록 체인 보안 스팟 체크 예약

당사의 1 일 리뷰는 처음부터 블록 체인 코드에 보안을 구축하는 데 도움이되므로 장기적으로 시간과 비용을 절약 할 수 있습니다. 지금 예약하세요 보안 스마트 계약 뉴스 레터 최신 이더 리움 뉴스, 엔터프라이즈 솔루션, 개발자 리소스 등을 보려면 뉴스 레터를 구독하십시오.성공적인 블록 체인 제품을 구축하는 방법웨비나

성공적인 블록 체인 제품을 구축하는 방법

이더 리움 노드를 설정하고 실행하는 방법웨비나

이더 리움 노드를 설정하고 실행하는 방법

나만의 Ethereum API를 구축하는 방법웨비나

나만의 Ethereum API를 구축하는 방법

소셜 토큰을 만드는 방법웨비나

소셜 토큰을 만드는 방법

스마트 계약 개발에서 보안 도구 사용웨비나

스마트 계약 개발에서 보안 도구 사용

금융 디지털 자산 및 DeFi의 미래웨비나

금융의 미래 : 디지털 자산 및 DeFi

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me