Workspace IndexDev Notes › A heist that has to wait is one you can still stop

#212PoC

A heist that has to wait is one you can still stop

SlowMist flagged (via The Block, 2026-09-07) two attackers replaying last week's ~$1.7M Notional Finance exploit on BNB Chain: they have already opened malicious fCash positions on an unnamed contract (0x0795…D9F0), but the positions must mature before the funds can be pulled. Unlike an atomic flash-loan drain, this attack is staged on-chain in advance and leaves a maturity window — the rarest thing in an exploit: time to notice and act before the money moves.

Not yet scoped — the deliverable is a detector and a rescue path, not a new exploit, and it splits in two. (1) Signature. fCash is Notional's tokenized fixed-term lending claim that settles only at maturity, so the malicious set-up sits on the target contract as ordinary positions long before payout. Write the on-chain query that flags an account whose settle-at-maturity value exceeds what it actually deposited, and alert on the gap between the current block and the maturity block — that gap is the defense window. (2) Rescue, and its arithmetic. Within the window, list what could actually stop it — a pause guardian, a parameter change, a counter-position, a governance action — and how many blocks each takes to land against how many blocks are left. The one number is maturity_block − (detect + respond) cost: positive means the heist is stoppable, negative means the window was theater. Then the copycat question: given the disclosed playbook, enumerate other live contracts on BNB and elsewhere that share the same state gap, because a public exploit is a template. Facts: The Block / SlowMist, 2026-09-07 — two attackers, BNB Chain, contract 0x0795…D9F0, positions awaiting maturity. Partial address and social-sourced attribution; confirm on-chain before acting on any of it.

Why

Almost every on-chain exploit is atomic, and this one is not — that is the whole card. A flash-loan price manipulation (sec-oracle-flashloan) or a reentrancy drain (sec-reentrancy) executes inside a single transaction: by the time it is visible it is already done, and "detection" means forensics. This attack inverts that. fCash settles only at maturity, so the protocol's own time-lock holds the attacker's malicious positions in plain view on-chain for the entire gap between set-up and settlement. The internet's "slowest heist ever" jokes are the actual security insight: a delay between staging and payout is a defense window, and almost no exploit gives you one.

But a window only defends you if someone is watching and can act inside it — so the deliverable is an inequality, not an alert. Detection latency plus response latency versus blocks-to-maturity. A window nobody monitors, or one shorter than the pause path takes to execute, is theater — the same failure as a fixed deadline nobody set in private-rpc-visibility, and the same known-future-resolution shape as the reorg tier machine in receipt-is-not-settlement: a state that will resolve at a known block, and a decision that must land before it. The rescue path is itself the "who can halt, and how fast" question that who-holds-the-mint and the-bridge-is-inside-the-token raise — and most protocols never measure their own pause latency until the clock is already running.

The second lesson is about the population, not the incident: a disclosed exploit is a template. "Two attackers copying the playbook" and the reply "how many other unnamed contracts share those exact state gaps" are the same observation — the bug does not belong to one contract, it belongs to every deployment sharing the state gap. This is sec-cve-zeroday and sec-competitive-audit seen from the attacker's side: the week between the first Notional drain and this BNB copy was the patch window for everyone else running the pattern, and the ones who did not go looking are the next headline. Fixing the exploited contract does nothing for its siblings. (A darker footnote from the same feed: attackers increasingly settle by declaring themselves "whitehats" after the fact — the Liquid Network ~4,000 BTC message the same day — so the post-exploit negotiation is becoming part of the playbook too.)

How it works

Atomic exploit vs staged (maturity) exploit

Atomic drain (flash loan / reentrancy) Staged / maturity exploit (this)
When you see it after — inside one tx before — positions sit on-chain awaiting maturity
Detection is forensics prevention
Defense window none the maturity gap
The number that matters maturity_block − (detect + respond) cost
Related sec-oracle-flashloan, sec-reentrancy this card

The window is only real if the inequality holds

Term What it is Where it comes from
Detect latency blocks from set-up to your alert your monitoring
Respond latency blocks for a pause/param/counter to land your governance path
Blocks to maturity set by the fCash term the protocol
Stoppable? maturity − (detect + respond) > 0 the whole PoC

A window nobody watches, or one shorter than your pause takes, is theater — measure your own pause latency before the clock starts.

The incident, with its caveats

Field Value
Source The Block, citing SlowMist, 2026-09-07
Chain BNB Chain
Contract unnamed, 0x0795…D9F0 (partial)
Status malicious fCash positions opened; awaiting maturity
Precedent last week's ~$1.7M Notional Finance exploit (the copied playbook)
Confidence social + a single-firm attribution; partial address — confirm on-chain

The copycat corollary

A public exploit is a template, so the exposed unit is not the contract but the pattern: every live deployment sharing the state gap is pre-exploited the moment the first one is disclosed. The patch window is the gap between the original drain and the first copy — here, about a week. Enumerating siblings is the defensive half of sec-competitive-audit; the attackers are already running the offensive half.

Related cards

sec-oracle-flashloan and sec-reentrancy (the atomic exploits this one contrasts with), sec-cve-zeroday / sec-competitive-audit (a disclosed bug as a template), who-holds-the-mint and the-bridge-is-inside-the-token (who can halt, and how fast), receipt-is-not-settlement and private-rpc-visibility (a known-future resolution and a deadline you must beat).

← All Dev Notes · Workspace Index · Top ↑

기다려야 하는 강도는 아직 막을 수 있는 강도다

SlowMist 가 (The Block, 2026-09-07 경유) 지난주 약 $1.7M Notional Finance 익스플로잇을 BNB 체인에서 재연하는 공격자 둘을 지목했습니다 — 이미 미상 컨트랙트(0x0795…D9F0)에 악성 fCash 포지션을 열어 뒀지만, 자금을 빼내려면 포지션이 만기돼야 합니다. 원자적 플래시론 드레인과 달리 이 공격은 온체인에 미리 준비되고 만기 창(maturity window)을 남깁니다 — 익스플로잇에서 가장 드문 것, 즉 돈이 움직이기 전에 알아채고 행동할 시간입니다.

아직 범위 미정 — 산출물은 새 익스플로잇이 아니라 탐지기와 구조 경로이고, 둘로 나뉩니다. (1) 시그니처. fCash 는 Notional 의 토큰화된 고정만기 대출 청구권으로 만기에만 정산되므로, 악성 세팅은 지급 한참 전부터 대상 컨트랙트에 평범한 포지션으로 앉아 있습니다. 만기 정산가치가 실제 예치액을 초과하는 계정을 표시하는 온체인 쿼리를 짜고, 현재 블록과 만기 블록 사이의 간극에 경보를 겁니다 — 그 간극이 방어 창입니다. (2) 구조, 그리고 그 산수. 창 안에서 실제로 막을 수 있는 것을 나열합니다 — pause 가디언, 파라미터 변경, 반대 포지션, 거버넌스 조치 — 그리고 각각이 안착하는 데 걸리는 블록 대 남은 블록. 한 숫자는 만기블록 − (탐지 + 대응) 비용입니다 — 양수면 막을 수 있고, 음수면 창은 연극이었습니다. 그다음 카피캣 질문: 공개된 플레이북을 놓고, 같은 상태 간극을 공유하는 BNB 및 다른 곳의 살아있는 다른 컨트랙트들을 열거합니다 — 공개된 익스플로잇은 템플릿이니까요. 사실: The Block / SlowMist, 2026-09-07 — 공격자 둘, BNB 체인, 컨트랙트 0x0795…D9F0, 만기 대기 중인 포지션. 주소는 일부이고 출처가 소셜이므로 무엇이든 행동에 옮기기 전에 온체인으로 확인할 것.

거의 모든 온체인 익스플로잇은 원자적인데 이것은 아닙니다 — 그게 이 카드의 전부입니다. 플래시론 가격 조작(sec-oracle-flashloan)이나 재진입 드레인(sec-reentrancy)은 한 트랜잭션 안에서 실행됩니다 — 보일 때는 이미 끝났고, "탐지"는 사후 부검입니다. 이 공격은 그것을 뒤집습니다. fCash 는 만기에만 정산되므로, 프로토콜 자신의 타임락이 공격자의 악성 포지션을 세팅과 정산 사이 내내 온체인에 훤히 붙들어 둡니다. 인터넷의 "역대 가장 느린 강도" 농담이 곧 보안 통찰입니다 — 세팅과 지급 사이의 지연이 방어 창이고, 그런 창을 주는 익스플로잇은 거의 없습니다.

그러나 창은 누군가 지켜보고 그 안에서 행동할 수 있어야만 방어가 됩니다 — 그래서 산출물은 경보가 아니라 부등식입니다. 탐지 지연 + 대응 지연 대 만기까지 블록. 아무도 감시 않는 창, 또는 pause 경로 실행보다 짧은 창은 연극입니다 — private-rpc-visibility 의 아무도 안 정한 고정 데드라인과 같은 실패이고, receipt-is-not-settlement 의 리오그 계층 머신과 같은 알려진 미래 시점에 해결되는 상태 모양입니다. 구조 경로 자체가 who-holds-the-mint·the-bridge-is-inside-the-token 가 던지는 "누가, 얼마나 빨리 멈출 수 있나" 질문이고 — 대부분의 프로토콜은 시계가 이미 돌기 전까지 자기 pause 지연을 재본 적이 없습니다.

두 번째 교훈은 사건이 아니라 모집단에 관한 것입니다 — 공개된 익스플로잇은 템플릿이다. "플레이북을 베끼는 공격자 둘"과 "같은 상태 간극을 공유하는 다른 미상 컨트랙트가 몇 개냐"는 같은 관찰입니다 — 버그는 한 컨트랙트의 것이 아니라 그 상태 간극을 공유하는 모든 배포본의 것입니다. 이것이 공격자 쪽에서 본 sec-cve-zeroday·sec-competitive-audit 입니다 — 첫 Notional 드레인과 이번 BNB 복제 사이의 일주일이 같은 패턴을 돌리는 모두에게 패치 창이었고, 들여다보지 않은 쪽이 다음 헤드라인입니다. 털린 컨트랙트를 고쳐도 그 형제들에게는 아무 소용이 없습니다. (같은 피드의 더 어두운 각주: 공격자들이 점점 사후에 스스로를 "whitehat"이라 선언해 마무리합니다 — 같은 날 Liquid Network 의 약 4,000 BTC 메시지 — 그래서 사후 협상도 플레이북의 일부가 되어 갑니다.)

동작 방식

원자적 익스플로잇 대 준비형(만기) 익스플로잇

원자적 드레인 (플래시론 / 재진입) 준비형 / 만기 익스플로잇 (이것)
언제 보이나 사후 — 한 tx 안에서 사전 — 포지션이 만기 대기 중 온체인에 앉아 있음
탐지는 사후 부검 예방
방어 창 없음 만기 간극
중요한 숫자 만기블록 − (탐지 + 대응) 비용
관련 sec-oracle-flashloan, sec-reentrancy 이 카드

창은 부등식이 성립할 때만 실재한다

무엇인가 어디서 오나
탐지 지연 세팅에서 경보까지의 블록 당신의 모니터링
대응 지연 pause/파라미터/반대포지션이 안착하는 블록 당신의 거버넌스 경로
만기까지 블록 fCash 만기가 정함 프로토콜
막을 수 있나? 만기 − (탐지 + 대응) > 0 PoC 전부

아무도 안 보는 창, 또는 pause 소요보다 짧은 창은 연극입니다 — 시계가 돌기 전에 자기 pause 지연을 재 두십시오.

사건, 그 단서와 함께

필드
출처 The Block, SlowMist 인용, 2026-09-07
체인 BNB 체인
컨트랙트 미상, 0x0795…D9F0 (일부)
상태 악성 fCash 포지션 개설; 만기 대기
선례 지난주 약 $1.7M Notional Finance 익스플로잇(베낀 플레이북)
신뢰도 소셜 + 단일 업체 지목; 주소 일부 — 온체인 확인 필요

카피캣 따름정리

공개된 익스플로잇은 템플릿이라, 노출된 단위는 컨트랙트가 아니라 패턴입니다 — 상태 간극을 공유하는 모든 살아있는 배포본이 첫 번째가 공개되는 순간 이미 익스플로잇된 셈입니다. 패치 창은 원본 드레인과 첫 복제 사이의 간극 — 여기선 약 일주일입니다. 형제들을 열거하는 것이 sec-competitive-audit 의 방어 절반이고, 공격자들은 이미 공격 절반을 돌리고 있습니다.

관련 카드

sec-oracle-flashloan·sec-reentrancy(이 카드가 대비하는 원자적 익스플로잇), sec-cve-zeroday·sec-competitive-audit(템플릿이 된 공개 버그), who-holds-the-mint·the-bridge-is-inside-the-token(누가, 얼마나 빨리 멈추나), receipt-is-not-settlement·private-rpc-visibility(알려진 미래 해결과, 이겨야 하는 데드라인).

← 전체 개발 노트 · 워크스페이스 인덱스 · 맨 위 ↑