L1 · PR Check
Deps, secrets, SRI, web3 patterns. App or Action. Source is data.
Shipped01 Product
Smart contracts get the audit budget. Attackers still hit the frontend: packages, keys in git, unlimited approvals, live JS that no longer matches review, and blind signing when UI ≠ payload. Norekt is frontend & supply-chain security for web3 — not a Solidity auditor.
02 Layers
We ship L1 first. L2 and L3 are real code with dogfood/pilot labels — not vapor.
Deps, secrets, SRI, web3 patterns. App or Action. Source is data.
ShippedDecode what is about to be signed. Danger shapes + optional UI intent. Partner SDK.
DogfoodCDN asset hashes + DNS vs trusted baseline. Server-owned poller.
PilotMultisig / Safe risk, simulation gates. Enterprise later.
Roadmap03 Story
Check + Files annotations. Shadow by default. Policy from the default branch only.
Partner ships our SDK in their dApp. Pre-sign sheet on danger / UI≠payload — not a GitHub write.
Enrolled asset URLs and DNS drift vs a reviewed baseline. Incomplete coverage is not green.
04 Layer 1
| Area | Codes | Detects |
|---|---|---|
| Secrets | W3-SEC-* | Private keys, CI tokens — type / path / line only, never the value |
| Dependencies | W3-DEP-* | Lockfiles, OSV when enabled, unpinned protected packages |
| SRI / scripts | W3-SRI-001 | External scripts without integrity |
| Web3 patterns | W3-W3-* | Unlimited approve (incl. viem object form), eth_sign, localStorage → tx |
Delivery: hosted App or your Action (same analyzer). Taxonomy: ATTACK_TAXONOMY.md.
05 Layer 2
Blind signing is when the user (or multisig) approves bytes that don’t match what the UI claimed. L2 decodes the signing request, checks danger shapes and optional declared intent. We do not claim to understand every contract on Ethereum.
Partner installs @norekt/sdk — not injected from GitHub, App still never gets contents: write. L2 alone does not stop Bybit; pair with L3 (+ often L4).
Docs: L2_INTENT.md · intent-verify, sdk, l2-demo
Review carefully. UI says send to Alice. Calldata recipient is Bob — UI ≠ payload.
W3-RT-001 · ATK-SIGN-00106 Layer 3
Live HTTPS asset hash poll and DNS A/AAAA/NS vs an operator-owned baseline. Baselines are never auto-promoted from “current.” Fail closed when coverage is incomplete.
Docs: L3_MONITOR.md
Status
Scheduled poller on Fly. Design-partner domains only. Not a full production SOC claim.
Pilot07 Scope
Install L1 on a frontend repo. Design partners can dogfood L2 SDK and L3 baselines next.