한 기사에서 EOS 모기지 취약성에 대한 세부 정보 읽기
星球君的朋友们
2018-06-26 12:07
本文约1048字,阅读全文需要约4分钟
이제 보안 인식이 온라인 상태가 될 때입니다.

편집자 주: 이 기사는 Digital Comet Technology에서 작성했으며 허가를 받아 게시되었습니다.

얼마 전 EOS 취약점 이슈에 대한 대응으로 이번 글에서 전반적인 내용을 리뷰할 ​​예정이니, 보안에 대한 경각심을 높이되 너무 당황하지 마시고 보안 이슈에 대한 올바른 시각을 가지시기 바랍니다.

1. 이벤트 개요

6월 22일 이른 시간에 EOS 공식 커뮤니티는 EOS 취약점이 발견되었으며 사용자가 투표하기로 약속한 토큰은 취약점이 수정될 때까지 사용할 수 없다는 메시지를 발표했습니다. 이후 관련 정보에 따라 취약점을 확인하여 취약점이 존재함을 확인하였으며, 취약점이 수정되기 전 치밀하게 구성된 공격을 통해 특정 사용자 자산을 무기한 저당잡혀 환매가 불가능함을 확인하였습니다.

우리는 EOS가 커뮤니티 투표를 통해 21개의 슈퍼 노드를 선출하여 EOS 네트워크를 유지하고 EOS 네트워크에 컴퓨팅 성능, 대역폭 및 스토리지 지원을 제공하는 DPoS 합의 메커니즘을 채택한다는 것을 알고 있습니다. 사용자는 투표를 위해 EOS를 소비할 필요가 없지만 EOS는 잠깁니다. 사용자는 언제든지 저당 EOS 상환을 신청할 수 있으며 크레딧은 상환 신청 후 72시간 후에 도착하며 동시에 투표가 차감됩니다.

이 취약점은 EOS의 환매 과정에서 발생한 것으로, 다른 사용자가 환매 사용자에게 EOS를 담보로 담보를 설정하면 시스템은 먼저 환매 사용자의 환매 과정에서 EOS를 재저당하게 됩니다. 우리는 이미 환매가 신청된 EOS가 계정에 도착하는 데 72시간이 걸린다는 것을 알고 있으며, 전술한 바와 같이 치밀하게 구성된 공격은 이론적으로 지정된 사용자의 자산을 무기한 담보로 만들어 사용자에게 심각한 피해를 입힙니다.

2. 취약점 공격 프로세스

1. 공격당한 사용자가 0.0005 EOS를 소유하고 있고 환매 과정에 있다고 가정합니다.

2. 이때 공격자는 환매 사용자에게 0.0001 EOS를 저당 잡습니다.

3. 트랜잭션이 적용된 후 공격자의 잔액이 변경되지 않았으며 환매 사용자가 환매하려는 0.0001 EOS는 다시 담보로 강제됩니다.

3. 취약점 분석 원칙

공격 순서도의 공격 명령은 다음과 같습니다.

cleos --wallet-url http://localhost:6666 --url http://mainnet.genereos.io:80 system delegatebw (attacker) (victim) "0.0001 EOS" "0.0000 EOS" --transfer

공격자가 명령을 호출할 때 --transfer 매개 변수를 추가했기 때문에 저당 함수 delegatebw 호출 시 changbw 함수가 호출되며 이때 transfer는 true입니다.

transfer 변수가 참이면 from 주소가 공격 대상의 주소가 되고,

다음으로 공격 대상의 데이터를 수정하고 EOS를 다시 저당 잡습니다.

4. 취약점 완화 계획

위의 분석을 바탕으로 본 백서는 모기지 취약성을 완화하고 복구하기 위해 일부 비즈니스 로직을 수정할 것을 권장합니다.

1. 양도 매개변수의 사실 여부와 관계없이 모기지 개시자의 잔액에서 직접 공제되어야 합니다(상환 절차는 이 제한의 대상이 아님).

2. 관련 비즈니스 로직을 정리하고 유사한 허점이 있는지 확인하십시오.

V. 취약점 분석 요약

위의 분석을 통해 신중하게 구성된 공격은 특정 사용자 자산을 무기한 담보로 만들고 상환할 수 없게 만듭니다. 완화 조치로 코드를 패치하면 이 취약점을 효과적으로 완화하고 수정할 수 있습니다.


星球君的朋友们
作者文库