EOSIO 스마트 계약에서 누락된 인증 오류 찾기


이것은 일련의 블로그 기사입니다. 저는 흔히 볼 수 있는 EOSIO 스마트 계약의 빈틈을 소개한 다음에 EOSIO 빈틈 스캐너Inspect를 사용하여 정적 분석을 실시하여 이러한 빈틈을 발견하는 방법을 설명할 것입니다.
이번 주에 나는 부족한 권한을 주목할 것이다.

취약성


EOSIO에서 개발자는 두 가지 기능을 사용하여 스마트 계약 행동의 권한을 제어할 수 있다. 방법은 발표된 행동 권한이 이 행동을 실행할 수 있는 계정과 같은지 검사하는 것이다.다음과 같습니다.
  • 권한 수여 필요(계좌[, 허가])
  • 소유수권(계좌)
  • 권한 부여 제어가 부족하기 때문에 공격받기 쉬운 스마트 계약은 신뢰할 수 없는 계정(예를 들어 악의적인 측)에게 다음과 같은 권한을 부여한다.
  • 액세스/수정 특권 스마트 계약 자원, 예를 들어 스마트 계약표
  • 공격받기 쉬운 계약을 대표하여 다른 계약의 함수를 호출하거나
  • 관건적인 임무 계약 행동, 예를 들어 기호화폐 추출을 집행한다.
  • 예를 들어 스마트 계약의 설정은 EOSIO RAM(EOSIO는 체인 데이터베이스라고 부른다)의 저장 비용을 지불하기 위한 것이다. 이런 상황에서 데이터베이스에 대한 매번 쓰기를 검사하여 데이터베이스에 기록된 조작을 포함하는 실체가 적당한 권한을 부여받도록 해야 한다.그렇지 않으면 잘못된 데이터가 기록되거나 RAM 채우기 공격이 발생할 수 있습니다(아래 심각도 참조).
    다음 조작 코드에서 emplace 호출(데이터를 users 테이블에 쓰기) 전에 Require auth() 호출이 있었지만 사용자는 RAM 지불자가 아니기 때문에 모든 사용자가 계약 계정을 사용하여 자신의 RAM을 데이터베이스에 쓸 수 있도록 허락함으로써 계약이 RAM에 의해 공격을 받기 쉽다.

    사용자가 RAM에 비용을 지불하고 RAM 충전 공격을 받지 않도록 이 조작을 수정합니다(사용자가 더 이상 RAM에 계약 자원을 사용하지 않기 때문).





    Severity


    이런 빈틈의 영향은 해커가 가능하다는 것이다:


    • RAM에 저장된 데이터를 쓰기/수정/삭제할 때 적절한 인증 검사를 받지 못함
    • 표면적으로 스마트 계약의 관리자/특권 사용자만을 위한 통화 기능
    • EOSIO에서 램은 무료가 아니기 때문에 해커는 허위 데이터로 스마트 계약의 램을 채우고 dAPP의 자원을 소모하여 합법적인 사용자에 대한 서비스 거부를 초래할 수 있다.

    Finding the vulnerability with Inspect


    Inspect는 정적 분석이라고 불리는 기술을 채택했다.정적 분석은 컴퓨터 프로그램의 원본 코드나 특정한 중간 표시를 추리하여 실행하는 것이지 실제 실행하는 것이 아니다


    Inspect를 사용하여 우리는 WASM 바이너리 코드에 대해 정적 분석을 하고 이를 역컴파일한 다음에 전유의 중간 표시(IR)로 향상시켰다.Inspect에서 IR을 가져와 데이터베이스에 표시하면 우리가 알고 있는 빈틈을 발굴할 수 있습니다


    상기 스마트 계약 조작을 포함하는 스마트 계약에서Inspect를 실행하면 다음과 같은 결과를 얻을 수 있습니다:



    Auth Violation: ✘ Action: emplaceself1 Insn: ($fel) = db_store_i64($feb, $fec, $fef, $feh, $fej, $fek)
    

    첫 번째 동작은 권한 위반 검사로 정확하게 표시됩니다.Inspect가 WASM 바이트 코드를 조작할 때 EOSIO의 내부 함수db store i64 () 에서 발생한 충돌을 보고합니다. 이 함수는 emplace () 호출에 대응합니다


    안전으로 인해 두 번째 행동은 보고되지 않았습니다


    실제 분석 장면에서 다음 단계는 이 결과를 원본 코드와 연결하고 이것이 확실히 빈틈인지 확인하는 것이다


    또 뭐 있어요?다음은 어떤 빈틈을 알려주고 싶으세요


    최초 발표: 2021년 3월 8일 https://klevoya.com


    Join Coinmonks Telegram group and learn about crypto trading and investing


    Also, Read



    Get Best Software Deals Directly In Your Inbox




    좋은 웹페이지 즐겨찾기