BLOCKCHAIN AI.NEWS

Security

Pragma Says a Third Price Source Would Have Stopped the Nostra Drain

An attacker borrowed about $3.5 million from Nostra, a Starknet lender, against a token whose entire market was worth roughly $550,000. The oracle provider's own account says the price that allowed it came from two sources. A day later, Pragma rated six of its 22 mainnet feeds critical risk.

Editorial illustration: a chrome balance scale on a three-legged stand, a small glowing gold pebble on one pan level with a tall stack of chrome discs on the other
✓ Incident first reported Sep 17 by Nostra Finance on X and covered by Crypto Times (Sep 18) · Attack timeline from GoPlus Security via The Cryptonomist · Fund tracing by PeckShield · Primary documents read by this desk: Pragma's NSTR incident update and September 2026 liquidity report, first highlighted by CryptoSlate · TVL and incident classification from DefiLlama

For about two minutes on the morning of September 17, a token that normally traded around six-tenths of a cent was worth $49.50 as far as Nostra's lending market could tell. That was long enough.

Nostra, a money market on Starknet, paused supply, borrowing, withdrawals and liquidations later that day after one account borrowed roughly $3.5 million in ETH, STRK, USDC, USDT, WBTC and DAI against collateral denominated in NSTR, Nostra's own token, according to Crypto Times, which cited the protocol's statement on X. The same report put NSTR's whole market capitalization at between $550,000 and $590,000. The loan was several times larger than everything the collateral token was worth.

No contract was broken. DefiLlama logs the incident as oracle manipulation, technique "spot price manipulation," and the security firms that traced it describe it the same way. The interesting document is the one the oracle wrote about itself.

Two sources where the guidance says three

Pragma, the Starknet-native price oracle that served the NSTR feed, published a short incident update the same day. It is unusually direct about the one number that mattered. "The affected response had two contributing sources," it says. "An enforced three-source minimum would have rejected it."

Pragma's position is that three was always the advice. "Our integration guidance recommends at least three pricing sources, alongside freshness checks and thresholds appropriate to the asset's risk," the update says. It adds that NSTR had already been classified as high risk because of thin liquidity, and that one of its earlier sources, Gate.io, "was removed as a source at Nostra's request, citing illiquidity and manipulation concerns."

Put those sentences together and the sequence is plain. A source was pulled because it was thin and manipulable. The feed kept publishing with what remained. The recommended floor was three, and nothing in the path enforced it. The update does not say who was responsible for enforcing it, the oracle or the lender reading from it, and it does not say which two sources were left.

Pragma also draws a line around its own role: "An oracle listing does not establish that an asset is suitable for that use." That is a fair point about how lending markets choose collateral. It is also the oracle saying the feed was not built for the job it was doing. The update closes with one operational line: "The attacker's address has been frozen, and we are working on recovery." It does not say who froze it or what it holds.

How the price got to $49.50

The most detailed public reconstruction comes from GoPlus Security, as reported by The Cryptonomist. Per that timeline, the attacker accumulated NSTR and pre-positioned collateral in March and August. At 05:23 UTC on September 17 a new NSTR/SolvBTC pool was created with about 1.5 SolvBTC of one-sided liquidity. Wash trades ran through it from 05:27 to 05:47. Repeated swaps between 05:47 and 05:48 printed NSTR near $49.50, roughly 8,000 times its normal price. The borrowing happened between 05:48 and 05:50. From 05:51 to 07:08 the proceeds were sold across AVNU, Ekubo and JediSwap, and about 2.2 million STRK left Starknet through the NEAR Intents bridge.

GoPlus's account says the new pool was selected by GeckoTerminal as the reference market for NSTR, which is how a pool with almost no depth came to set the price. Pragma's update does not name the pool or any aggregator; it says only that the incident "involved manipulation of an illiquid NSTR market." The two accounts are compatible, but the specific GeckoTerminal mechanism rests on GoPlus's reconstruction, not on anything Pragma or Nostra has published.

PeckShield, per Crypto Times, traced about $1.92 million to Ethereum, including 234.57 ETH and 1.3 million DAI, with roughly $1.55 million still on Starknet at the time. Nostra told users that the final loss and any recoveries were not yet known.

The oracle graded itself the next day

On September 18 Pragma published a liquidity assessment of its 22 mainnet market and rate feeds, a snapshot of that day rather than a monthly average. It sorted them into four bands. Six were critical: BROTHER, DAI, DOG, EKUBO, LORDS and NSTR. Nine more, including STRK, wstETH and several wrapped-bitcoin assets, were high. Three were moderate. Only four, BTC/USD, ETH/USD, USDC/USD and USDT/USD, were rated lower risk.

The report's warning about the critical six is blunt: they "should not be treated as safe collateral simply because an oracle price is available." Its test is how far the price falls when someone actually sells. At a $10,000 sale, it estimates deterioration of roughly 15% for NSTR, 17% for EKUBO, more than 20% for BROTHER and 22% for LORDS. For the current DAI deployment on Starknet, the figure is about 62%.

Price deterioration on a $10,000 sale, Pragma's critical-risk feeds

NSTR~15%
EKUBO~17%
BROTHER>20%
LORDS~22%
DAI (current)~62%
Source: Pragma, September 2026 liquidity report, snapshot of Sep 18, 2026. DOG is also rated critical but its quote curves were rejected as unreliable, so no figure is shown. Bar widths are proportional to the reported percentage; BROTHER is drawn at 20%.

Two details in the report bear directly on NSTR. It says the NSTR response it received from DefiLlama carried an upstream timestamp more than four hours old. And it states a rule about counting sources that matters for any "two" or "three": aggregator labels that draw on the same underlying pools do not count as separate sources. By that standard, two labels can be one market.

The report also makes a distinction lenders tend to skip. Deep order books on centralized exchanges, or a deep perpetual futures market, do not show that a liquidation can be completed on Starknet. A collateral price is only as good as the local market that has to absorb the forced sale.

Not the first time for this market

Nostra has been here before, on a smaller scale. In March 2025, per Crypto Times, the xSTRK and sSTRK feeds used by the market inflated about threefold, and Nostra paused borrowing and set the affected collateral caps to zero. The protocol published a post-mortem on its governance forum. xSTRK appears in Pragma's high-risk band this month.

The market has not reopened. DefiLlama's figures show Nostra's total value locked at about $4.15 million on September 16 and $710,632 on September 17. It was about $759,000 on September 22. Depositors with funds in the paused pools are waiting on a reconciliation that Nostra says is under way pool by pool; no reimbursement plan has been published.

The Take

Credit where it is due: Pragma wrote down the number that makes it look worst, two sources against its own recommended three, on the day of the incident, then published a report that says six of its 22 feeds should not be treated as safe collateral. Most oracle post-mortems read like a weather report. But "recommends" is the word doing the damage. A minimum that nothing enforces is a suggestion, and a feed that keeps publishing after its source count drops below the floor is making a decision on behalf of every lender reading it. Nostra, for its part, accepted its own thinly traded token as collateral large enough to borrow several times that token's entire market value. Each side can point at the other's sentence. The fix is not complicated: the feed should fail closed when it falls below its own floor, and a lender's collateral limits should be sized to what the local market can absorb, not to what the price says.

More on the subject