Skip to content
THREATWIRE

DeFi & Crypto

Nostra Finance lost about $3.5M after a thin pool price fooled its oracle

On 17 September 2026 an attacker pushed the price of Nostra's own NSTR token through a thin pool and borrowed about $3.5M against it. Pragma says the price response had two sources and that a three-source minimum would have rejected it. Nostra's final loss and any recovery are not known.

High

By ThreatWire Desk · Published 19 Oct 2026

On this page

What happened

Nostra is a lending market on Starknet: you deposit collateral, you borrow something else. To value that collateral it reads prices from an oracle run by Pragma.

On 17 September 2026 an attacker made Nostra believe its own token, NSTR, was worth far more than it was. They posted NSTR as collateral and borrowed about $3.5 million in other assets. Pragma published an incident update the same day. It says the price came from a manipulated on-chain pool, and that the answer rested on only two sources.

What is confirmed

Pragma and BlockSec are the main sources. Credora's review adds figures. Times are UTC.

From Pragma's update

  • The incident involved manipulation of an illiquid NSTR market. NSTR was then used as collateral to borrow other assets.
  • NSTR was already classed as a high-risk feed because of its limited liquidity and few sources. Pragma says it had told Nostra.
  • Gate.io had been removed as a source at Nostra's request, citing illiquidity and manipulation concerns.
  • The price that moved was a manipulated on-chain pool price. Pragma found no decimals or median calculation error.
  • The affected response had two contributing sources. Pragma recommends at least three. It says an enforced three-source minimum would have rejected the response.
  • Pragma says the attacker's address has been frozen and that recovery is ongoing.

From BlockSec and Credora

  • The oracle setup used by Nostra required only one source (BlockSec).
  • With two sources, the result was the average of the two. One source said about $99 per NSTR. The other said about $0.006. The average was about $49.5, which is roughly 8,000 times the market price (BlockSec, Credora).
  • Nostra reported that the borrowing involved STRK, USDC, USDT, WBTC and DAI, worth about $3.5M in total (BlockSec).
  • Nostra paused its markets. The final loss and any recovery were unknown at the time of BlockSec's report.
  • PublicAML, citing rekt.news, reports that about $1.6M stayed on Starknet and about $1.92M went to one Ethereum wallet. On 3 October it saw about $2M there (253.47 ETH and 1,347,821 DAI). On 4 October that balance moved to a new wallet. PublicAML saw no mixer, bridge or exchange use as of 5 October. This is a single source.
  • Nostra's status page shows no incident for September or October. Pragma's update was last changed on 17 September and still says recovery is ongoing.
  • Credora adds that the attacker prepared since March and bridged about $1.9M to Ethereum. It also says Nostra's TVL fell from about $4M to $710K. These points come from Credora only.

How the bug worked

The short version, with no code and no trade sizes:

A lending market needs to know what collateral is worth. Nostra took the NSTR price from Pragma. Pragma gathers prices from several sources. Some sources read prices from on-chain pools.

The weak points were:

  1. NSTR was thin. Its market was small, so one trade could move the price a lot.
  2. The attacker made their own pool. A new pool with almost no liquidity can be set to any price.
  3. One source picked it up. Halborn and GoPlus say a price aggregator selected the fake pool. Pragma does not name the source.
  4. Only two sources reached the answer. The average of one fake price and one real price still looked very high.
  5. Nothing rejected the jump. An 8,000 times move was accepted as collateral value.
Fake pool price    ->  $99
Real market price  ->  $0.006
Two-source average ->  ~$49.5  -> accepted as collateral value

Pragma says its own code was correct. The fault was that a thin token had a thin feed and a low bar for how many sources must agree.

What is not known

  • Nostra's final loss. Nostra said it was unknown.
  • Whether any funds will come back. Pragma says the attacker's address is frozen. No recovery had been reported as of mid-October.
  • Which source carried the fake price. Pragma does not name it. Halborn and GoPlus say GeckoTerminal. Nostra's own statement names no oracle provider, as CoinPaprika notes.
  • Who the attacker is.
  • How the attacker pre-positioned. Only Credora describes this.
  • Who covers affected depositors. No source says.

Where sources disagree

  • Who set the minimum. BlockSec says Nostra's configuration accepted one source. Pragma says it recommends three. Credora says Pragma's three-source minimum was not enforced. The sources put the weight in different places, but none says the check was enforced.
  • Which source moved. Pragma does not say. Halborn and GoPlus name GeckoTerminal. Credora agrees.
  • Amount. All sources say about $3.5M. BlockSec calls it an incident-time estimate.
  • Size of the move. Credora and BlockSec say roughly 8,000 times. PublicAML, citing rekt.news, says roughly 8,300 times.
  • Funds sent to Ethereum. Credora says about $1.9M. PublicAML, citing rekt.news, says about $1.92M. These agree.
  • Pre-positioning. Credora says since March. No other source confirms it.

Separately, Pragma published a post-mortem on 4 September for a different incident, a faulty price that triggered liquidations on Vesu. That case involved a different failure.

Lessons for builders

  • Do not accept thin tokens as collateral. Set exposure limits that match market depth.
  • Require a minimum number of sources and reject answers below it.
  • Reject large jumps. Cap how far a price can move between updates.
  • Be careful with on-chain pool prices. A new pool can be created by anyone.
  • Add a circuit breaker. Pause borrowing when a price moves abnormally.
  • Do not rely on an oracle listing alone. Pragma says a listing does not show that an asset is fit for collateral.

What users should do

  • If you used Nostra, follow its official announcements for the final loss and any plan for depositors.
  • Do not connect your wallet or sign messages from unsolicited messages about refunds.
  • If you hold NSTR, check the status of its markets.

Sources: Pragma's update, BlockSec, Halborn, Credora and PublicAML. ThreatWire has not verified the on-chain figures.

Sources

Share on X@threatwire_https://www.threatwire.tech/defi/nostra-finance-nstr-oracle-manipulation-pragma-postmortem

More articles