DApps: 보안 문제, 해킹 및 예방 조치 PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.

DApp: 보안 문제, 해킹 및 예방 조치 

읽기 시간: 4

각계각층의 탈중앙화는 다가오는 시대의 새로운 코드입니다. DApp은 데이터 개인 정보 보호 및 소유권 품질을 병합하여 앱 운영 방식에 혁신을 가져왔습니다. 

블로그의 깊숙한 곳으로 들어가 봅시다.

DApp이란 무엇입니까?

DApp은 블록체인을 사용하여 분산 네트워크를 통해 데이터를 처리하고 트랜잭션을 실행하는 분산 응용 프로그램입니다. 중앙 집중식 앱과 달리 DApp은 PXNUMXP 네트워크로 운영됩니다. 

개발자가 DApp용 코드베이스를 출시하면 그 위에 여러 앱을 구축할 수 있습니다. 단일 권한이 없으므로 P2P 네트워크에서 실행되는 단일 실패 지점이 없습니다. 

DApp은 웹 애플리케이션, 게임 및 엔터테인먼트, 소셜 미디어 앱 등과 같은 수많은 애플리케이션을 만드는 데 도움이 됩니다.       

DApp의 주요 특징

다음은 DApp의 주요 속성에 대한 몇 가지 지침입니다.

  • 오픈 소스 코드이며 사용자가 제어합니다. 이것은 모든 변경 사항이나 새로운 추가 사항이 투표되고 구현됨을 의미합니다. 
  • 분산화는 모든 세부 사항이 공개적으로 배포된 원장에 보관되는 핵심 측면입니다.
  • DApp은 플랫폼 고유의 토큰을 사용하여 참여하거나 채굴한 사용자에게 보상합니다.

DApp 사용 소식

보고서에 따르면 dapprad입니다, 분산 응용 프로그램에 참여하는 사용자의 수는 매년 396%씩 증가하여 현재 2.4만 명입니다. 

그 중 게임 DApp은 50년 1분기 사용자 활동의 2022% 이상을 차지하며 NFT는 약 12억 달러의 거대한 컬렉션을 만들었습니다. 

DApp 코딩 보안 문제

DApp의 전반적인 아이디어에 대해 알았으므로 이제 DApp과 관련된 일반적인 기술 오류 몇 가지를 살펴보겠습니다.

서명 확인: 검사 형식 "case_=> true" 사용 @검증자 DApp 코딩의 기능은 다른 거래 유형을 허용하면서 전송 거래를 금지합니다.

{-# STDLIB_VERSION 3 #-}
{-# CONTENT_TYPE EXPRESSION #-}
{-# SCRIPT_TYPE ACCOUNT #-}

match (tx) {
	case t:TransferTransaction => false
	case _ => true # NEVER DO THIS!
}

그러나 이러한 유형의 코드를 사용하면 전송 트랜잭션을 제외한 모든 사용자가 트랜잭션을 수행할 수 있습니다. 서명을 추가하지 않고 "senderPublicKey" 필드에 공개 키를 입력하면 모든 사용자에게 트랜잭션을 실행할 수 있는 액세스 권한을 부여합니다. 

{-# STDLIB_VERSION 3 #-}
{-# CONTENT_TYPE EXPRESSION #-}
{-# SCRIPT_TYPE ACCOUNT #-}

match (tx) {
	case t:TransferTransaction => false
	case _ => sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublikey)
}

따라서 언급된 취약점이 없도록 DApp 코딩에 서명 검사가 있는지 확인하는 것이 중요합니다.

키 입력: DApp의 작업에는 키-값 저장이 포함됩니다. 일반적인 실수는 개발자가 한 키에 쓰고 다른 키에서 읽는다는 것입니다. 따라서 키를 작성할 때 주의해야 합니다. 

let NONE = "NONE"

func keyVoteByAddress(votingId: Int, address: String) = "voting_" + votingId + "_vote_" + address


@Callable(i)
func vote(id: Int) => {
	let voteKey = keyVoteByAddress(id, i.caller.toBase58String())
	let vote = getString(this, voteKey).valueOrElse(NONE)

	# alternative option

	let vote = match getString(this, voteKey){
    	case s: String => s
    	case _ => NONE
	}

	if (vote == NONE) then ...
	else ...
}

또 다른 실수는 기본값을 제공하는 대신 value() 또는 extract()와 같은 변수에서 값을 읽으려는 시도가 제안되지 않는다는 것입니다.

통제된 거래: DApp 작업은 순서대로 실행되는 몇 가지 상호 의존적인 작업을 포함합니다. 이러한 경우 첫 번째 트랜잭션이 블록에 추가된 후 확인을 한 번 받는 "waitForTxWithNConfirmations" 기능을 갖는 것이 안전합니다.

DApp과 관련된 일반적인 문제

낮은 유동성 수준의 DApp: 분산 응용 프로그램의 낮은 유동성은 예상 가격으로 토큰을 구매하거나 판매하기 어렵게 하여 미끄러짐을 유발합니다. 슬리피지는 예상 가격과 실행 가격의 차이로, 자금 손실로 이어질 수 있습니다.

사용자는 거래량을 기반으로 자산의 유동성을 추적하고 토큰을 매매하기 전에 현명한 결정을 내릴 수 있습니다. 

보안 위반 또는 실패:  DApp은 스마트 계약을 통해 작동하며 코딩에 버그가 있는 DApp은 해커의 이상적인 대상입니다. 극단적인 시장 상황이나 코드 악용으로 인해 DApp의 평가 절하 또는 자금 손실은 불가피합니다.

타사 회사에서 코드를 감사하면 이 문제를 극복하는 데 더 큰 도움이 됩니다. 

피싱 DApp: DApp의 코딩에 손상이 있을 경우 공식 사이트에 피싱 링크가 유포됩니다. 무의식적으로 클릭하면 사용자 지갑에서 모든 자금이 유출됩니다. 

따라서 지갑에서 자금을 추가하거나 지갑 정보를 입력하기 전에 URL을 다시 확인하십시오. 

2022년 DApp 해킹 및 사기 현황

DApp의 단점은 해킹에 취약하다는 것입니다. DAppRadar가 발표한 데이터에 따르면 DApp 사기만 해도 1.2억 달러의 손실이 발생했습니다. 

주요 해킹 사건의 하이라이트는 다음과 같습니다.

로닌 브리지 해킹: 검증자 노드에 대한 액세스 권한을 얻은 해커는 Axie Infinity의 600억 달러의 손실을 초래한 Ronin 브리지 네트워크. 

웜홀 프로토콜: 해커는 웜홀 프로토콜 코드의 보안 결함을 악용하여 325억 XNUMX만 달러의 손실을 입었습니다. 

DApp 보안을 채택하기 위해 보안 및 예방 방법을 유지하는 방법은 다음과 같습니다.

보안 결함을 극복하면 문제의 주요 부분이 해결됩니다. DApps. 몇 가지 방법으로 정리할 수 있습니다. 

  1. 감사 서비스 시작: 와 같은 감사법인의 철저한 코딩분석 지면에서 버그를 제거합니다. 
  2. 침투 테스트 : 침투 테스트는 숨겨진/노드 취약점을 찾고, API를 테스트하고, 새로운 공격 경로를 발견하는 데 우위를 점합니다. 

DApp 보안에 대한 일반적인 예방 조치

  1. 지갑에서 자금에 접근하기 위해 개인 시드 문구의 비밀 유지
  2. DApp 웹사이트의 진위 및 적법성 확인
  3. 문법 오류가 있는 링크나 텍스트에 주의하십시오.

114 조회수

타임 스탬프 :

더보기 퀼해시