민터레스트 프로토콜, 2차 오딧 감사 통과

Trail of Bits와 진행한 1차 스마트 컨트랙트 오딧 감사를 성공적으로 마친 저희 민터레스트 팀은 이번에 Hacken과 함께 진행한 2차 보안 오딧 감사 또한 성공적으로 통과했음을 기쁜 마음으로 전달해 드립니다.

선도적인 블록체인 보안 컨설팅 펌, Hacken이 진행한 오딧 감사 결과 궁금하신 분들은 해당 웹사이트를 통해 확인하실 수 있습니다.

보안이 중요한 이유

디파이(DeFi, 탈중앙화 금융) 프로토콜에 본인의 자금을 예치하던, 특정 기관이나 제삼자에게 자산을 전송하며 트랜잭션을 남기던, 유저들은 자신의 자산이 안전하게 관리되고 있는지를 매우 중요하게 고려할 것입니다. 특히, 디파이 분야의 TVL(Total value locked, 총 예치금)이 최고가였던 2,400억 달러를 초과한 지금, 디파이 프로토콜들은 유저의 자산이 착취당할 수 있는 잠재적인 시나리오를 더욱 유의할 수밖에 없는 상황입니다. 그런 시나리오 중 악성 코드를 이용한 공격이 가장 흔히 이뤄지는 만큼, 스마트 컨트랙트 보안은 모든 디파이 프로토콜의 가장 중요한 표준이 됐습니다.

이를 고려해, 디파이 업계는 철저한 내부 및 외부적 코드 감사와 전반적인 플랫폼 보안 검사 과정을 통해 유저들의 자산을 관리할 수 있는 조치를 더욱 강화했습니다.

민터레스트 역시 보안을 최우선사항으로 여겼기 때문에 여러 최고급 보안 기업들을 고용해 민터레스트의 개발 과정을 검토받을 수 있도록 했습니다. 저희 팀은 Trail of Bits와 Hacken에게 오딧 감사를 의뢰해 그들이 제시한 엄격한 수준의 코드 보안성을 민터레스트 프로토콜이 만족했는지 확인해 봤습니다.

Hacken 보고서 내용에는 뭐가 있나요?

Hacken의 스마트 컨트랙트 보안 감사는 다음과 같은 다양한 방법론을 통해 진행됩니다.

  • 기술구조 평가
  • 기능 테스트
  • 컴퓨터 지원 평가
  • 검증
  • 수동적 검토

민터레스트는 문서화 및 기술구조 품질 검사에서 10점 만점을 획득했으며, 이번에 Hacken과 진행한 초기 감사에서는 2개의 고 위험 급, 4개의 중 위험 급, 4개의 저 위험 급 취약점을 발견했습니다. 해당 취약점들은 팀에게 전달된 뒤 즉각 수정됐으며, Hacken 2차 보안 감사에서 10점 만점을 취득했습니다.

다음 문단에서, 보안 등급을 4개로 나눠 각 취약점에 대해 상세하게 설명한 Hacken 감사 보고 결과를 확인하실 수 있습니다.

최고 위험 급

이번 오딧 감사에서 최고 위험급 취약점은 발견되지 않았습니다.

고 위험 급

베스팅 잔액 불충분 (Insufficient vesting balance) – 감사 결과에 따르면, “Vesting.sol” 컨트랙트 코드는 각기 다른 베스팅에 대해 충분한 토큰이 있다고 검증함. 그러나 모든 베스팅 기록에 대한 컨트랙트 자금이 충분함을 검증하지는 못함. 고로, 해당 컨트랙트는 모든 유저가 자신의 자금을 받을 수 있다고 보증하지 못한 셈.

상태: 수정 완료

기능 무제한 접근 (Unrestricted function access) – “EmmisionBooster.sol” 컨트랙트의 “updateBorrowIndexesHistory” 기능은 아무나에 의해 활성화될 수 있으며, 이는 컨트랙트 상태에 원치 않는 변화를 초래할 수 있음.

상태: 수정 완료

중 위험 급

결여 이벤트 누락 (Missing events emitting) – 화이트리스팅된 새로운 주소가 생성자에 추가된 경우, “Whitelist.sol” 컨트랙트의 “MemberAdded” 이벤트가 따로 누락되지 않았음. 만약 “MemberAdded” 이벤트에 의존하는 별도의 오프체인 로직이 있었을 경우, 해당 기능은 오작동했을 것.

상태: 수정 완료

중복적인 제어자 (Redundant modifiers) – “MToken.sol” 컨트랙트에 중복되는 “nonReentrant” 제어자 존재. 외부 호출이 수행되지 않는 순간 “nonReentrant” 제어자가 중복됨.

상태: 고지 완료

TODO 알림 (TODO notices) – 해당 코드에 ‘TODO’ 알림이 많이 내포됐음. 이는 코드가 아직 완성되지 않았음을 나타낼 수 있음.

상태: 수정 완료

회로 손실 발생 (Costly loops) – “EmmisionBooster.sol” 컨트랙트의 코딩은 여러 시장에 대한 배출을 허용하지 않고, 이를 단일 호출로 처리했음. 만약 “supervisor.getAllMarkets()”에 의해 돌아온 시장의 수가 적당히 클 경우 해당 기능은 중단될 수 있음.

상태: 취약점 완화 조치 완료

저 위험 급

추상 코드로 분류될 수 있는 컨트랙트 (The contract can be declared as abstract) – “SupervisorV1Storage.sol” 컨트랙트에 구현되어야 할 일부 기능들이 있으며, 별도로 사용되지 않았음.

상태: 수정 완료

오해의 소지가 있는 명명 (Misleading naming) – “Supervisor.sol” 컨트랙트 내 기능명 “redeemAllowedInternal”에 따르면 무언가는 상환함을 나타냄. 그러나 해당 기능은 검증 목적의 단순한 열람 기능만 내포함.

상태: 수정 완료

중복 추가 (Redundant addition) – “DeadDrop.sol” 컨트랙트 내 “swapTokensForExactTokens, swapExactTokensForTokens” 기능에 30초 타임스탬프를 추가할 경우, 이미 “block.timestamp” 기능을 통해 목표한 시간 내로 스왑할 수 있음으로 중복되는 코드를 추가하게 되는 셈.

요약

민터레스트 팀은 보안을 중요시하고 있으며, 특별한 문제 없이 2차 보안 감사를 마친 지금 여러분께 풀가동 가능하며 여러분들의 자산을 안전히 관리할 수 있는 신뢰 가는 플랫폼을 빠른 시일 내에 기쁜 마음으로 전달해 드리도록 하겠습니다.


민터레스트에 대해

민터레스트는 디파이 랜딩 프로젝트들에 예치되어 있는 수십 억 달러의 자금 (TVL, Total Value Locked)에 대한 서비스를 제공하기 위한 목적으로 유저 혜택을 핵심 가치로 내세운 암호화폐 업게 선도자들에 의해 구축된 독특한 대출/대여 프로토콜입니다. 민터레스트는 공정하고 포용적인 탈중앙 금융 플랫폼을 유저에게 제공합니다.

민터레스트 프로토콜은 세계 최초의 바이백 메커니즘을 보유하고 있으며, 해당 메커니즘은 자동적으로 수익을 플랫폼에 기여하고 있는 유저에게 전달합니다. 이러한 방법을 통해, 유저들은 업계 최고 수준의 대출/대여 이자율을 상회하는 수준의 프로토콜의 수익을 거둘 수 있게 되며, 디파이 영역에서 장기적이면서도 가장 높은 수준의 이자 수익을 거둘 수 있는 잠재성을 불러옵니다. 또한, 본 프로토콜은 청산 수익을 확보하고 유저와 나누는 온체인 금고를 보유하고 있습니다.