All audits

Web3 · Smart contract audit · Design mock

Northwind Protocol

softstack audited Northwind Protocol's Ethereum lending core in March 2026, identifying 14 findings (0 critical, 2 high, 5 medium, 6 low, 1 informational), of which 13 were resolved before release.

Key facts

Client
Northwind Protocol
Completed
Type
Smart contract audit
Chains
Ethereum
Languages
Solidity
Commit
a3f21b9c8d7e
Lines of code
4,120
Market cap
$420M as of 2026-03-12

About the project

Northwind is a fictional Ethereum money market focused on over-collateralised lending for institutional treasuries.

Scope

Source repositorygithub.com/example/northwind

Components reviewed

4 modules · 11 files
  1. Core lending pool contracts
  2. Interest rate model
  3. Oracle adapter
  4. Liquidation module

Findings

0Critical
2High
5Medium
6Low
1Informational

13 of 14 findings resolved before final report.

IDTitleSeverityStatus
NW-01Missing zero-address check on collateral token setter

setCollateralToken accepted address(0), which could brick deposits.

Highfixed
NW-02Interest accrual can underflow on empty markets

Empty markets with stale indexes caused underflow on first deposit.

Highfixed
NW-03Oracle staleness window longer than stated SLA

Price feed accepted updates up to 4 hours old versus the documented 1 hour.

Mediumfixed
NW-04Liquidation bonus not capped per market

Governance can set an unbounded bonus; a soft upper bound was added.

Mediummitigated
NW-05Event missing on pause toggle

pause() emitted no event, hindering off-chain monitoring.

Lowfixed

Methodology

Review process

2 independent reviewers
  1. Scoping and threat modelling

    The commit hash is frozen and the attack surface is mapped: asset flows, trust assumptions, privileged roles and the external systems the code depends on.

  2. Automated analysis

    Static analysers sweep the full codebase to surface known weakness patterns, unreachable states and deviations from established conventions.

  3. Manual code review

    Independent engineers read the code line by line, concentrating on business logic, access control, arithmetic and the handling of external calls.

  4. Adversarial testing

    Property-based fuzzing and invariant tests attack the assumptions the protocol relies on, targeting states that ordinary unit tests never reach.

  5. Reporting

    Every finding is documented with a severity rating, its impact, the steps to reproduce it and a concrete remediation the team can act on.

  6. Remediation verification

    Submitted fixes are re-reviewed against the original finding, and the final report records the resolved state of each one.

Tooling

  • SlitherStatic analysis across the full Solidity source for known weakness patterns.
  • FoundryUnit and invariant suites executed against the frozen commit.
  • EchidnaProperty-based fuzzing that attacks stated protocol invariants.
  • Manual reviewLine-by-line reading of logic, access control and economic assumptions.

Standards and references

  • SWC RegistrySmart Contract Weakness Classification
  • SCSVSSmart Contract Security Verification Standard
  • CWECommon Weakness Enumeration

FAQ

13 of 14 findings were fixed or mitigated before the final report. One informational finding was acknowledged.

The lending pool, interest rate model, oracle adapter, and liquidation module. That covers 11 Solidity files, 4,120 LOC at commit a3f21b9.

This audit covers commit a3f21b9 as of March 2026. Code changed after that commit is outside the reviewed scope.