Smart Contract Assessment - Moonwell


Prepared by:

Halborn Logo

HALBORN

Last Updated 03/11/2026

Date of Engagement: September 18th, 2022 - September 26th, 2022

Summary

100% of all REPORTED Findings have been addressed

All findings

9

Critical

0

High

1

Medium

0

Low

0

Informational

8


1. INTRODUCTION

Moonwell Finance engaged Halborn to conduct a security audit on their Governance smart contracts beginning on September 18th, 2022 and ending on September 26th, 2022. The security assessment was scoped to the smart contracts provided to the Halborn Team.

2. AUDIT SUMMARY

The Team at Halborn was provided one week for the engagement and assigned a full-time security engineer to audit the security of the smart contract. The security engineer is a blockchain and smart-contract security expert with advanced penetration testing, smart-contract hacking, and deep knowledge of multiple blockchain protocols.

The purpose of this audit is to:

    • Ensure that smart contract functions operate as intended.

    • Identify potential security issues with the smart contracts.

In summary, Halborn identified some security risks that were addressed by the Moonwell team.

3. TEST APPROACH & METHODOLOGY

Halborn performed a combination of manual and automated security testing to balance efficiency, timeliness, practicality, and accuracy regarding the scope of the smart contract audit. While manual testing is recommended to uncover flaws in logic, process, and implementation; automated testing techniques help enhance coverage of smart contracts and can quickly identify items that do not follow security best practices. The following phases and associated tools were used throughout the term of the audit:

    • Research into architecture and purpose.

    • Smart Contract manual code review and walkthrough.

    • Graphing out functionality and contract logic/connectivity/functions(solgraph).

    • Manual Assessment of use and safety for the critical Solidity variables and functions in scope to identify any arithmetic related vulnerability classes.

    • Static Analysis of security for scoped contract, and imported functions.(Slither)

    • Dynamic Analysis (ganache-cli, brownie, hardhat).

4. SCOPE

\begin{enumerate} \item Moonwell Finance Smart Contracts \begin{enumerate} \item PR 80: \href{https://github.com/moonwell-fi/moonwell-contracts-private/pull/80}{Moonwell Finance - Moonwell Core} \end{enumerate} \end{enumerate}

    • INSCOPE COMMIT ID :

d248cc9a4fc08849f0a5f5d34560f7998b182d4b

FIX COMMIT ID :

TAG :

5. RISK METHODOLOGY

Halborn assesses the severity of findings using either the Common Vulnerability Scoring System (CVSS) framework or the Impact/Likelihood Risk scale, depending on the engagement. CVSS is an industry standard framework for communicating characteristics and severity of vulnerabilities in software. Details can be found in the CVSS Specification Document published by F.I.R.S.T.
Vulnerabilities or issues observed by Halborn scored on the Impact/Likelihood Risk scale are measured by the LIKELIHOOD of a security incident and the IMPACT should an incident occur. This framework works for communicating the characteristics and impacts of technology vulnerabilities. The quantitative model ensures repeatable and accurate measurement while enabling users to see the underlying vulnerability characteristics that were used to generate the Risk scores. For every vulnerability, a risk level will be calculated on a scale of 5 to 1 with 5 being the highest likelihood or impact.
RISK SCALE - LIKELIHOOD
  • 5 - Almost certain an incident will occur.
  • 4 - High probability of an incident occurring.
  • 3 - Potential of a security incident in the long term.
  • 2 - Low probability of an incident occurring.
  • 1 - Very unlikely issue will cause an incident.
RISK SCALE - IMPACT
  • 5 - May cause devastating and unrecoverable impact or loss.
  • 4 - May cause a significant level of impact or loss.
  • 3 - May cause a partial impact or loss to many.
  • 2 - May cause temporary impact or loss.
  • 1 - May cause minimal or un-noticeable impact.
The risk level is then calculated using a sum of these two values, creating a value of 10 to 1 with 10 being the highest level of security risk.
Critical
High
Medium
Low
Informational
  • 10 - CRITICAL
  • 9 - 8 - HIGH
  • 7 - 6 - MEDIUM
  • 5 - 4 - LOW
  • 3 - 1 - VERY LOW AND INFORMATIONAL

6. SCOPE

Out-of-Scope: New features/implementations after the remediation commit IDs.

7. Assessment Summary & Findings Overview

Critical

0

High

1

Medium

0

Low

0

Informational

8

Impact x Likelihood

HAL-01

HAL-02

HAL-03

HAL-04

HAL-05

HAL-06

HAL-07

HAL-08

HAL-09

Security analysisRisk levelRemediation Date
MISSING QUORUM CAP COMPARISON CAN BREAK THE GOVERNANCEHighSolved - 09/25/2022
ABIENCODERV2 IS ACTIVATED BY DEFAULT 0.8+InformationalSolved - 09/25/2022
BUMP SOLIDITY VERSIONInformationalSolved - 09/25/2022
NO NEED TO INITIALIZE QUORUMADJUSTED WITH FALSEInformationalSolved - 09/25/2022
CURRENT QUORUM CAN BE EMITTED DURING THE PROPOSAL CREATIONInformationalSolved - 09/25/2022
USE PREFIX INCREMENT WITH THE UNCHECK CAN SAVE GASInformationalSolved - 09/25/2022
SAFEMATH IS ACTIVATED BY DEFAULT AFTER 0.8.XInformationalSolved - 09/25/2022
MISSING NATSPEC DOCUMENTATION ON THE FUNCTIONSInformationalSolved - 09/25/2022
CHANGING FUNCTION VISIBILITY FROM PUBLIC TO EXTERNALInformationalSolved - 09/25/2022

8. Findings & Tech Details

8.1 MISSING QUORUM CAP COMPARISON CAN BREAK THE GOVERNANCE

//

High

Description
Score
Impact: 4
Likelihood: 4
Remediation Comment

8.2 ABIENCODERV2 IS ACTIVATED BY DEFAULT 0.8+

//

Informational

Description
Score
Impact: 1
Likelihood: 1
Recommendation
Remediation Comment

8.3 BUMP SOLIDITY VERSION

//

Informational

Description
Score
Impact: 1
Likelihood: 1
Recommendation
Remediation Comment

8.4 NO NEED TO INITIALIZE QUORUMADJUSTED WITH FALSE

//

Informational

Description
Score
Impact: 1
Likelihood: 1
Recommendation
Remediation Comment

8.5 CURRENT QUORUM CAN BE EMITTED DURING THE PROPOSAL CREATION

//

Informational

Description
Score
Impact: 1
Likelihood: 1
Recommendation
Remediation Comment

8.6 USE PREFIX INCREMENT WITH THE UNCHECK CAN SAVE GAS

//

Informational

Description
Score
Impact: 1
Likelihood: 1
Recommendation
Remediation Comment

8.7 SAFEMATH IS ACTIVATED BY DEFAULT AFTER 0.8.X

//

Informational

Description
Score
Impact: 1
Likelihood: 1
Recommendation
Remediation Comment

8.8 MISSING NATSPEC DOCUMENTATION ON THE FUNCTIONS

//

Informational

Description
Score
Impact: 1
Likelihood: 1
Recommendation
Remediation Comment

8.9 CHANGING FUNCTION VISIBILITY FROM PUBLIC TO EXTERNAL

//

Informational

Description
Score
Impact: 1
Likelihood: 1
Recommendation
Remediation Comment

Halborn strongly recommends conducting a follow-up assessment of the project either within six months or immediately following any material changes to the codebase, whichever comes first. This approach is crucial for maintaining the project’s integrity and addressing potential vulnerabilities introduced by code modifications.