defirisk.co
rubric v1.7.0

Save (formerly Solend)

Algorithmic, decentralized lending and borrowing protocol on Solana (formerly Solend, rebranded 2024-07-24). Fork of Solana Labs spl-token-lending with substantial modifications: 13+ isolated pool architecture, custom liquidation engine, Pyth/Switchboard oracle integration, SLND governance token DAO via Realms. Main program So1endDq2YkqhipRh3WViPa8hdiSpxWy6z3Z6tMCpAo; upgrade_authority RY93CZYe5g6drtG7W9PmHRPzaBLZ1uwihTzayQTmJfh is a SINGLE-KEY EOA (on-curve, no multisig, no on-chain timelock). Treasury governed by 4-of-6 Squads v3 multisig and 2-of-4 Squads v4 LM multisig — these control FUNDS only, NOT program upgrades. Small Eclipse L2 deployment ($296K TVL, 0.37% of total). All-time TVL peak ~$928M (Nov 2021). 2022 SLND1/SLND2 governance controversy (DAO voted to take over whale account; reversed 24h later) is a governance-process event, not a smart-contract exploit.

Sector lending
TVL $79.8M
Reviewed May 17, 2026
Factors 184
Categories 13
Risk score 46.5
DeploymentsSolana · $79.5M
01

Risk profile at a glance

2 red · 6 yellow · 4 green
02

Categories & evidence

184 factors · 13 categories
Code & audits Yellow 38 25 of 25
RD-F-002 red Audit recency Last confirmed full-scope audit (Kudelski v1.0) dated 2021-09-28 — approximately 1692 days (>730 days) ago as of 2026-05-17. The program has undergone upgrades since. Neodyme (Dec 2021 vulnerability disclosure) and OSEC (Aug 2022 blog investigation) are not full independent audits. RD-F-004 red Audit count Only one confirmed public full audit (Kudelski v1.0, Sept 2021). Neodyme conducted a vulnerability disclosure (bounty event, not a full audit — not listed on neodyme.io/en/reports/). OtterSec published a targeted blog post investigation (not a full audit — not listed on osec.io). Sec3/Soteria = automated scanner. Effective distinct audit firm count = 1. RD-F-009 red Formal verification coverage No evidence of formal verification (Certora, Kani, Halmos, or equivalent) applied to the Solend/Save token-lending program. No FV report found in the audit directory or protocol docs. RD-F-024 red Code complexity vs audit coverage Substantial unaudited code complexity. The Kudelski audit covered ~22 audit-days on v1.0. Post-audit additions include 13+ isolated pools, Pyth/Switchboard integration extensions, and custom interest-rate models. The repo shows 1,787 commits total per DeFiSafety data, with significant development post-2021-audit. No post-audit audit covers the expanded code surface. The LOC-per-audit-day ratio for the current codebase relative to the Kudelski scope exceeds any credible threshold. RD-F-001 yellow Audit scope mismatch The confirmed public audit is Kudelski Security v1.0 (signed 2021-09-28, audit period July–Aug 2021). The program has been upgraded via BPFLoaderUpgradeable since launch in Aug 2021 — confirmed upgrades include the Dec 2021 Neodyme rounding-error patch. No reproducible-build verification found via verify.osec.io. No post-2021 full-scope audit PDF confirmed publicly. The Kudelski commit does not match current deployed bytecode (~57 months of drift). Yellow rather than red: the architectural baseline is unchanged, the Dec 2021 security patch was applied promptly, but no audit of post-2021 deployed state is verifiable. RD-F-003 yellow Resolved-without-proof findings Kudelski PDF is publicly available but internal finding-level detail was not extractable (binary PDF). The Dec 2021 Neodyme rounding-error patch was verifiably deployed on-chain promptly. The OSEC rent-thief vulnerability received a documented mitigation. No evidence of confirmed resolved findings without on-chain proof. Confidence low due to PDF inaccessibility. RD-F-005 yellow Audit firm tier Kudelski Security is a Tier-2 firm (established, named, public track record in blockchain security) — not in the Tier-1 set (Trail of Bits, OZ, ConsenSys Diligence, Certora, Sigma Prime, Spearbit, Zellic). For Solana-specific work, Neodyme and OtterSec are considered tier-leading, but neither has a confirmed full audit report for Solend. Only Tier-2 coverage confirmed. RD-F-006 yellow Audit-to-deploy gap Audit period July 12 – Aug 3, 2021. Solend mainnet launch Aug 12, 2021. Report signed off Sept 28, 2021. The protocol launched 9 days AFTER audit period ended but 46 days BEFORE audit report. Deploy occurred during/shortly after the audit engagement, before final report. Not a clear >180 day drift but the inverted timeline (launch before report) is a flag. Yellow rather than green. RD-F-017 yellow Mixed-decimals math without explicit scaling Solend operates across assets with different decimals (SOL=9, USDC=6, etc.). Kudelski audit covered decimal math in v1.0 scope. The 13+ isolated pools added post-audit introduce per-pool decimal configurations not confirmed as within Kudelski audit scope. No confirmed finding of un-normalized arithmetic, but audit coverage of post-v1.0 pools is unverified. RD-F-010 gray Static-analyzer high-severity count Solana-specific static analysis tools (Sec3 X-Ray, Anchor linter) exist but no published quantitative high-severity finding count available for the Solend program. EVM tools (Slither/Mythril/Semgrep) do not apply to Rust/BPF. Needs a dedicated Solana static analysis tool run. RD-F-011 n/a SELFDESTRUCT reachable from non-admin path Solana BPF/SBF programs do not have a SELFDESTRUCT opcode. Structurally inapplicable to non-EVM Rust programs. RD-F-012 n/a delegatecall with user-controlled target EVM delegatecall opcode does not exist in the Solana BPF instruction set. Structurally inapplicable to Rust/BPF programs. RD-F-013 n/a Arbitrary call with user-controlled target EVM arbitrary .call(target, data) pattern does not exist in Solana BPF programs. Solana CPI is based on account-referencing, not arbitrary target addresses. Structurally inapplicable. RD-F-015 n/a ERC-777/1155/721 hook without reentrancy guard Solana uses SPL Token standard, not ERC-777/1155/721 with callback hooks. No tokensReceived/onReceived callbacks exist in the SPL Token model. Structurally inapplicable. RD-F-019 n/a ecrecover zero-address return unchecked Solana programs use Ed25519 signature verification via native Solana instruction, not ecrecover. No ecrecover calls exist in Rust/BPF programs. Structurally inapplicable. RD-F-020 n/a EIP-712 domain separator missing chainId EIP-712 is an Ethereum signature standard. Solana uses native Ed25519 with program-specific message schemas. No EIP-712 domain separators in BPF programs. Structurally inapplicable. RD-F-021 n/a UUPS _authorizeUpgrade correctly permissioned UUPS is an EVM proxy pattern. Solana uses BPFLoaderUpgradeable with upgrade_authority access control. The upgrade authority is RY93CZYe5g6drtG7W9PmHRPzaBLZ1uwihTzayQTmJfh (single-key EOA). Structurally inapplicable as an EVM-proxy factor. RD-F-022 n/a Public initialize() without initializer modifier Solana BPF/SBF programs are not EVM programs. No OpenZeppelin initializer modifier, no proxy-initializer pattern, no initialize() function in the EVM sense exists. Initialization in Solana uses instruction discriminators and account state validation. Structurally inapplicable to non-EVM substrate per protocol-type guidance. RD-F-023 n/a Constructor calls _disableInitializers() Solana BPF programs have no constructors in the EVM sense. The _disableInitializers() OZ pattern is specific to EVM upgradeable proxy implementations. Structurally inapplicable.
RD-F-007 green Bug bounty presence & max payout Save operates a self-hosted bug bounty program at security@solend.fi. Max payout: $1,000,000 USD for critical (or 10% of value at risk). $50,000 high; $5,000 medium. Scope: token-lending smart contracts on Solana. Exceeds $500K threshold for green. Not on Immunefi but substantive self-hosted program.
RD-F-008 green Ignored bounty disclosure No evidence found of a disclosed vulnerability being ignored before an exploit. The Dec 2021 Neodyme disclosure was responded to and patched within hours. The Aug 2022 OSEC rent-thief investigation did not result in significant user fund loss. No post-mortem evidence of ignored disclosures.
RD-F-014 green Reentrancy guard on external-calling functions Solana's runtime prevents true EVM-style reentrancy. Flash-loan access control was specifically addressed in commit 4c2d5c1 (Sept 2021, in Kudelski audit scope). No reentrancy vulnerability confirmed in deployed code.
RD-F-016 green Divide-before-multiply pattern The Dec 2021 Neodyme vulnerability was precisely a rounding-direction error (divide-before-multiply class). Solend patched this on Dec 2, 2021 within the coordinated disclosure window, replacing rounding-up with floor operations. Current deployed code has the fix applied. No subsequent rounding-error finding identified.
RD-F-018 green Signed/unsigned arithmetic confusion Rust type system prevents many implicit signed/unsigned conversions that affect EVM. Kudelski audit covered arithmetic correctness for v1.0. No confirmed signed/unsigned confusion finding in Solend program.
RD-F-183 green Bug bounty scope gap on highest-TVL contracts Save's self-hosted bug bounty explicitly covers the token-lending smart contracts on Solana. Scope: the token-lending program code on GitHub. Max payout $1M critical. The main program and isolated pool contracts appear in scope. No explicit exclusion of any highest-TVL contract identified. Eclipse wrapper program scope is ambiguous but ~0.37% of TVL.
Governance & admin Red 76 24 of 24
RD-F-025 red Admin key custody type Upgrade path is a single-key EOA (is_on_curve: True) at RY93CZYe5g6drtG7W9PmHRPzaBLZ1uwihTzayQTmJfh (on-chain authoritative). Lending market owner is 5pHk2TmnqQzRF9L6egy5FfiyBgS7G9cMZ5RFaJAvghzw (controls reserve params only). Treasury/LM use Squads multisigs but these do NOT control program upgrades. Admin key custody type = EOA (worst tier). RD-F-026 red Upgrade multisig signer configuration (M/N) Program upgrade path: 1/1 (single EOA, no multisig). Treasury Squads v3 multisig BRtRjAsgRgQ7vrw4riyrueiqotwH9VaKjQ1vYrNo7YLB: threshold 4/6 (funds only). LM Squads v4 multisig AfLPTjX5Z8QkeHBqago1GiYmj3Uz6b1hiWUmoNMMQhdp: threshold 2/4, time_lock_seconds=null (funds only). Neither Squads multisig controls program upgrades. Operative upgrade M/N = 1/1. RD-F-027 red Single admin EOA [★ CRITICAL] Main program upgrade_authority = RY93CZYe5g6drtG7W9PmHRPzaBLZ1uwihTzayQTmJfh (on-chain ProgramData, is_on_curve: True = single keypair). Eclipse wrapper upgrade_authority BownY7uPxZ5jLjBxPNvqaWa3VD9WJvwQEUYVC5sERzET also on-curve. Docs-stated key 2Fwvr3MKhHhqakgjjEWcpWZZabbRCetHjukHi1zfKxjk also on-curve (discrepancy noted). Neodyme confirmed 'Solend is using a hot wallet' — 'this entity has complete control over the funds the contract holds.' Single private key can push arbitrary bytecode to $79.5M lending program; no multisig, no timelock. RD-F-030 red Hot-wallet signer flag Neodyme confirmed the upgrade authority is a hot wallet: 'signing and landing a large amount of transactions in such a short time is practically impossible without durable nonces when using a proper cold wallet.' The upgrade authority single EOA is definitively a hot wallet. Treasury/LM multisig signers not public — cannot assess for them. RD-F-032 red Timelock duration on upgrades No on-chain upgrade timelock exists. Solana BPFLoaderUpgradeable has no built-in timelock. Squads v3 (treasury) has no time_lock field by design. Squads v4 LM multisig has time_lock_seconds = null (confirmed in data cache). The upgrade authority single EOA can push new bytecode in a single transaction with 0-hour delay. RD-F-033 red Timelock on sensitive actions No on-chain timelock covers any sensitive action. Program upgrades (EOA, instant), reserve parameter changes (lending market owner, instant), Recovery Mode activation (council-of-contributors, instant — docs state this is invoked during volatility without formal on-chain timelock), treasury/LM fund movements (Squads multisig approval, time_lock=null). Zero timelocked sensitive actions. RD-F-040 red Emergency-veto multisig present No emergency veto multisig exists. The Squads treasury multisig (4-of-6) controls only treasury funds. Recovery Mode (docs.save.finance/protocol/parameters) allows a 'council of contributors' to make parameter changes but this is not a veto structure that can block a malicious proposal or upgrade. No on-chain mechanism can stop the single-EOA upgrade authority from pushing malicious bytecode. RD-F-041 red Rescue/emergencyWithdraw without timelock The lending market owner (5pHk2TmnqQzRF9L6egy5FfiyBgS7G9cMZ5RFaJAvghzw) can set reserve supply/borrow limits to zero (functional halt). Recovery Mode grants emergency parameter change powers with no on-chain timelock. The upgrade authority EOA can deploy arbitrary new bytecode including any rescue/drain function. November 2022 oracle attack response involved team 'temporarily disabling the liquidity pool' via admin action with no timelock. No emergency function or admin action is restricted to a timelocked path. RD-F-043 red Admin = deployer EOA after 7 days [★ CRITICAL] Protocol launched August 2021 (~57 months ago). Upgrade authority remains a single-key EOA (on-chain: RY93CZYe5g6drtG7W9PmHRPzaBLZ1uwihTzayQTmJfh) — never transferred to a multisig or DAO in 57 months. Factor definition (admin = deployer EOA + no multisig transfer within 7d) is met and sustained for 57 months. The Squads multisigs were created for treasury/LM funds only, not for program upgrade authority. RD-F-047 red Governance token concentration (Gini) SLND1 incident: one wallet provided 1M of 1.15M yes votes (~87%). SLND2 incident: one wallet paid ~$700K for tokens representing ~90% of votes. Team allocation 25M + investor allocation 10M = 35M of 100M total supply could dominate any vote. Functional 1-person governance demonstrated empirically in June 2022. Extremely high concentration. RD-F-035 yellow Role separation: upgrade ≠ fee ≠ oracle Three distinct addresses documented: upgrade authority (RY93CZYe...), lending market owner (5pHk2TmnqQzRF9L6egy5FfiyBgS7G9cMZ5RFaJAvghzw), fee receiver (9RuqAN42PTUi9ya59k9suGATrkqzvb9gk2QABJtQzGP5). Oracle config is per-reserve via lending market owner. Addresses differ on-chain. Partial role separation exists at address level. However, all power ultimately reduces to the upgrade authority EOA since program upgrades override all other roles. Yellow: partial separation but no structural guarantee. RD-F-036 yellow Flash-loanable voting weight SPL governance (Realms) voting weight = tokens deposited into realm; not time-locked, not snapshotted at proposal creation. The SLND1 incident (June 2022) confirmed: a single address transferred 1M SLND in, voted, moved tokens back out — demonstrating weight is determined by deposited balance. No vote-escrow lock (no veSLND). Full flash-loan atomicity constrained by Solana transaction architecture (deposit and vote are separate txs). Flash-loan attack requires separate deposit transaction but within-block coordination is possible in theory. Practical exploitability limited by current SLND liquidity for flash loans; not zero. Yellow: structural risk real but not fully atomically exploitable. RD-F-037 yellow Quorum achievable via single-entity flash loan SLND1 showed ~1.15M tokens (97% from one address) swung a governance vote. SLND total supply 100M; team 25M + investors 10M = 35M potentially aligned. Quorum achievable by a single large tokenholder without flash loans (as demonstrated). Flash-loan-specific quorum attack constrained by SLND available liquidity. Assessed yellow: quorum achievable by a large tokenholder but flash-loan-only path less certain. RD-F-038 yellow Proposal execution delay < 24h SLND1 executed within ~6h of proposal submission. SLND2 increased voting period to 1 day. Current confirmed voting period: 1 day. No confirmed on-chain execution timelock after voting closes — execution may be immediate post-vote. Yellow: 1-day voting period (improvement from 6h) but no post-vote execution delay confirmed. RD-F-028 n/a Low-threshold multisig vs TVL The program upgrade path is a bare single EOA — there is no multisig in the upgrade path. No threshold to evaluate. Per multipli/marinade precedent, do not double-count F027 + F028. The two Squads multisigs (4-of-6 treasury; 2-of-4 LM) govern only funds, not program code. RD-F-029 gray Multisig signers co-hosted Treasury multisig (4-of-6) and LM multisig (2-of-4) signer identities are not publicly disclosed. Cannot assess co-hosting or same-custody status. Upgrade authority is a single EOA (co-hosting not applicable to a single key). Assessed gray due to opaque signer identities. RD-F-031 gray Signer rotation recency No publicly documented upgrade authority key rotation date found. The discrepancy between docs-stated key (2Fwvr3MK...) and on-chain key (RY93CZYe...) may indicate a past rotation, but no date or governance record for this rotation exists in public sources. Treasury/LM multisig signer rotation dates not public. RD-F-034 gray Guardian/pause-keeper distinct from upgrader No formal on-chain pauser/guardian role distinct from the upgrade authority is documented. Recovery Mode involves an undefined 'council of contributors' — no on-chain enforcement mechanism or distinct role address found. The lending market owner can set supply/borrow limits to zero (functional halt) but whether this address is operationally distinct from the upgrade authority key holder is unclear. Insufficient evidence to confirm distinct role. RD-F-039 n/a delegatecall/call in proposal execution without allowlist Save/Solend governance runs on Solana via Realms/SPL governance (BPF program). The EVM delegatecall/call pattern in Governor Bravo/OpenZeppelin Governor proposal execution does not exist in Solana BPF architecture. Solana does not have delegatecall; CPI (cross-program invocation) is structurally different. This factor is structurally inapplicable to this Solana-native protocol. RD-F-042 n/a Admin has mint() with unlimited max SLND is a fixed-supply (100M total) SPL token. Save is a lending protocol; its core function does not involve minting a protocol-controlled synthetic asset. No admin-callable unlimited mint on any protocol token found. The Lending Market Owner does not have mint authority on deposited user assets. RD-F-044 gray Admin wallet interacts with flagged addresses No evidence found of the upgrade authority addresses interacting with mixer-funded or DPRK-flagged clusters. Cannot fully assess without on-chain transaction archaeology. Dev-identity-analyst must trace RY93CZYe... and 2Fwvr3MK... for F124/F125 assessment. RD-F-045 gray Constructor args match governance proposal The main lending program was deployed before formal on-chain governance via Realms was established. No specific governance proposal covered the initial deploy parameters. Subsequent parameter changes are made via the lending market owner role (no proposal-vs-deploy comparison available). The Solana deployment context makes this factor difficult to assess. RD-F-167 gray Deprecated contract paused but pause reversible by live admin No officially deprecated contracts with admin pause capability found in public documentation. The November 2022 oracle attack response involved temporarily disabling a live active pool (not a deprecated surface). Some isolated pools may be effectively abandoned but no protocol-announced deprecation with a revertible admin pause has been documented.
RD-F-046 green Contract unverified on Etherscan/Sourcify Lending program source code is publicly available at github.com/solendprotocol/solana-program-library/token-lending/. The Kudelski audit confirms the codebase was reviewable at or near launch. Solscan shows the program as a BPF program accessible to public review. Public IDL/ABI information enables independent review. No evidence of hidden or unverified code at launch.
Oracle & external dependencies Yellow 26 17 of 17
RD-F-057 red Circuit breaker on price deviation No circuit breaker on price deviation implemented in the program. The only guard is slot-based staleness (20 slots for Pyth, 100 for Switchboard). If a price is current and non-stale, it is accepted regardless of magnitude. The November 2022 USDH exploit demonstrated this exactly: the attacker pumped USDH from $0.99 to $8.80 (then to ~$15) — prices were current and non-stale, accepted by the protocol. No deviation-from-reference check exists. Pyth confidence intervals are used informally but do not constitute a configurable circuit breaker. RD-F-181 red Permissionless-pool lending oracle Save's permissionless pool architecture allows anyone to create an isolated lending pool (100 SLND fee) and configure their own oracle, including a self-created Switchboard feed from a single DEX venue (Raydium, Orca, Saber, etc.) with no TWAP requirement, no liquidity-floor enforcement, and no token-age minimum at the protocol level. Protocol docs state: 'pool creators are expected to create their own oracles which can be prone to error or used incorrectly (e.g. USDC oracle used for UST price).' November 2022 USDH exploit ($1.26M loss) was exactly this failure mode: creator-configured Switchboard oracle from single Saber DEX pool, no TWAP — spot price pumped 8-15x, bad debt accrued across 3 isolated pools. Structural vulnerability persists as of 2026-05-17; no protocol-level oracle quality enforcement was added. RD-F-051 yellow Fallback behavior on oracle failure Fallback from Pyth to Switchboard is implemented in processor.rs get_price(): if Pyth returns zero or fails validity, Switchboard is attempted. If both fail, refresh_reserve returns an error (ReserveStale) blocking borrow/liquidate operations. No last-known-price mechanism; no pause mechanism. Operations simply halt on oracle failure. This is a partial fallback (two-layer, not infinite), with operational halt as the terminal state. RD-F-052 yellow Breakage analysis per dependency Pyth failure: refresh_reserve fails → borrow, repay, liquidate all blocked; bad debt accrues without liquidation resolution (existential). Switchboard failure while Pyth valid: no impact; if Pyth also fails → same existential halt. SPL Token Program failure: all supply/borrow/repay/withdraw halted (systemic, Solana-wide). Single-DEX permissionless-pool Switchboard oracle failure: that pool halts, main pool unaffected. Eclipse oracle failure: $296K (0.37% TVL) deployment halted. November 2022 USDH exploit demonstrated oracle failure mode (price manipulation accepted as valid, resulting in $1.26M bad debt). RD-F-053 yellow Oracle source = spot DEX pool (no TWAP) Main pool and team-curated isolated pools: NOT spot-DEX-only — Pyth and Switchboard are multi-source aggregated professional oracles. HOWEVER: permissionless pools allow any creator to configure a Switchboard oracle from a single DEX source. November 2022 USDH exploit confirmed: Switchboard oracle for USDH drawn solely from Saber USDH/USDC pool (single spot price, no TWAP) — $1.26M loss. This structural vulnerability persists for the permissionless pool tier. No protocol-enforced TWAP requirement or multi-source requirement for creator-supplied oracles. Score is yellow (not red) because: (1) main pool and team-curated pools use professional multi-source oracles; (2) permissionless pools are isolated — exploit cannot drain main pool; (3) risk is real and historically confirmed but bounded to permissionless pool TVL. RD-F-056 yellow Single-pool oracle (no medianization) Main pool and team-curated isolated pools: medianized/aggregated — Pyth aggregates from multiple institutional providers; Switchboard aggregates from multiple configured sources. Not single-pool. Permissionless pools: structurally vulnerable — creator-supplied Switchboard feeds may use a single DEX venue (confirmed by 2022 USDH exploit using Saber pool as sole source). Score yellow: main pool architecture is sound (multi-source); permissionless pool tier has confirmed single-source vulnerability. RD-F-054 n/a TWAP window duration Save uses Pyth Network and Switchboard — both are off-chain aggregated price oracles, not DEX TWAP mechanisms. The processor.rs get_pyth_price() reads from Pyth Price account data structures (slot-based staleness, no TWAP computation). get_switchboard_price() reads AggregatorAccountData (aggregated from multiple configured sources, not a TWAP). TWAP window duration is not applicable to the oracle architecture used. RD-F-055 n/a Oracle pool depth (USD) Pyth and Switchboard are not DEX-pool-based oracles for the main pool. Single pool depth is not a relevant metric for aggregated multi-source professional oracles. For permissionless pools, individual creator-configured Switchboard feeds may use a single DEX pool, but this is per-creator dynamic and not enumerable at protocol level. Factor is not_applicable for the main oracle architecture; the permissionless pool pool-depth risk is captured in RD-F-053 and RD-F-181. RD-F-058 n/a Max-deviation threshold (bps) No circuit breaker exists (see RD-F-057 red). No max-deviation threshold bps is configurable. Factor not_applicable because the prerequisite (circuit breaker) does not exist. RD-F-060 n/a Chainlink aggregator min/max bound misconfig Save does not use Chainlink. Protocol uses Pyth Network and Switchboard on Solana. Chainlink aggregator min/max bound misconfig (ETH/USD floor-bug class) is an EVM Chainlink-specific factor with no equivalent in the Pyth/Switchboard architecture used by Save. Factor is not_applicable (Solana substrate + non-Chainlink oracle).
RD-F-048 green Oracle providers used Pyth Network (primary) and Switchboard (fallback/secondary) for all reserves on Solana mainnet. Eclipse deployment uses Pyth on Eclipse (integrated May 2024) and Switchboard on Eclipse. Permissionless pools use creator-supplied Pyth or Switchboard feeds. Two professional off-chain aggregated oracle providers confirmed in protocol docs and processor.rs source code.
RD-F-049 green Oracle role per asset For each reserve: Pyth = Primary, Switchboard = Fallback/Secondary per processor.rs get_price() logic (Pyth attempted first; if zero, Switchboard attempted). Permissionless pools: creator-supplied oracle as primary, no protocol-enforced dual-oracle requirement. Eclipse: Pyth on Eclipse as primary. Eclipse per-reserve oracle config not publicly enumerated (gray for Eclipse-specific; green for main pool architecture).
RD-F-050 green Dependency graph (protocols depended upon) Dependency graph: Pyth Network (critical price oracle), Switchboard (fallback price oracle), SPL Token Program (TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA — all token operations), SPL Associated Token Account Program, Solana BPF Loader Upgradeable. No Uniswap/Aave/Curve/Compound/EVM cross-calls (Solana-native). Eclipse deployment adds Eclipse runtime dependencies. No bridge protocol dependency.
RD-F-059 green Oracle staleness check present Staleness check implemented via slot comparison. Pyth: STALE_AFTER_SLOTS_ELAPSED = 20 slots (~8 seconds at 400ms block time). Switchboard: STALE_AFTER_SLOTS_ELAPSED = 100 slots (~40 seconds). Applied in get_pyth_price() and get_switchboard_price() respectively. All reserve refresh, borrow, and liquidation operations require non-stale oracle reads. ReserveStale error returned if threshold exceeded.
RD-F-061 green LP token balanceOf used for pricing No evidence that Save uses LP token balanceOf for pricing. All pricing goes through Pyth oracle reads (pyth_oracle_pubkey per reserve) or Switchboard reads (switchboard_oracle_pubkey). The Solana BPF program architecture for token-lending does not use LP token balanceOf donation-attack vectors. processor.rs price computation exclusively uses get_pyth_price() and get_switchboard_price(), not any pool balance reads.
RD-F-062 green External keeper/relayer not redundant No mandatory single keeper/relayer dependency identified. Pyth pull oracle (post-2024 migration): users and liquidators submit price updates with their transactions (pull model — no single keeper). Switchboard: relies on Switchboard publisher node network with multiple operators. No Gelato, Chainlink Automation, or single-keeper relayer identified in the program source or docs. Redundancy at oracle network level is assumed for Pyth (major network) and Switchboard.
RD-F-180 green Immutable oracle address Oracle addresses (pyth_oracle_pubkey, switchboard_oracle_pubkey) ARE admin-replaceable via the process_update_reserve_config instruction — no full binary upgrade required. Required signer: lending_market_owner_info (key 5pHk2TmnqQzRF9L6egy5FfiyBgS7G9cMZ5RFaJAvghzw). F180 definition: 'oracle source address or equivalent is not programmatically replaceable by admin action without a full binary or protocol upgrade' — here it IS replaceable, therefore F180 = green. Governance implication: oracle replacement has no timelock (scored under F033/F035 by governance-admin-analyst). F180 strictly tests replaceability, not timelocked replaceability.
Economic risk Yellow 27 13 of 13
RD-F-063 yellow TVL (current + 30d trend) Current TVL $79.77M (Solana 99.63%, Eclipse 0.37%), down 6.61% over 30 days. 90-day CoV=0.055 (stable). All-time peak ~$928M (Nov 2021); 12-month peak ~$350M+ (mid-2025). TVL has declined substantially from peak, now range-bound $65M-$88M. Yellow for significant long-term decline from peak and current sub-$100M TVL. RD-F-064 yellow TVL concentration (top-10 wallet share) Historical precedent of extreme concentration: June 2022, a single account held 5.7M SOL (95% of SOL pool deposits) and $108M USDC borrowed (88% of USDC borrows). Protocol introduced per-account borrow limits after the crisis. Current concentration unverifiable without on-chain scan, but historical pattern establishes yellow-risk floor. Governance post-crisis limits partially mitigate but current enforcement status unverified. RD-F-065 yellow Liquidity depth per major asset Lending protocol — DEX 2%/5% slippage depth not primary metric. Liquidation depth proxy: Nov 2022 SOL congestion event demonstrated that SOL collateral ($32.6M) against a $29.7M USDC loan could not be fully liquidated due to network congestion, resulting in $6M bad debt. Long-tail isolated pools (Stable, Coin98, Kamino) had insufficient on-chain liquidity to resist oracle manipulation (Nov 2022 USDH exploit: $1.26M). Main pool has deeper liquidity; isolated pools are thin. RD-F-066 yellow Utilization rate (lending protocols) DefiLlama cache reports total_borrowed_usd=$143.69M vs total_supplied_usd=$79.77M yielding 180.13% utilization — data anomaly (>100% impossible operationally). Likely a multi-pool aggregation artifact. Per RedStone Dec 2025 report, Solend uses a kinked-curve model with steep rate increase above 80% utilization; USDC pool utilization in Q1 2025 described as 'relatively high'. True per-pool utilization unverifiable from cache alone. Yellow for data anomaly pending curator verification via api.solend.fi/v1/reserves. RD-F-067 yellow Historical bad-debt events Two documented bad-debt events in 2022: (1) ~$6M from SOL congestion preventing timely liquidation of large underwater position — DAO treasury covered shortfall; (2) $1.26M from Nov 2022 USDH oracle-manipulation exploit on Stable/Coin98/Kamino isolated pools — team restored all funds by August 2022. Total documented bad debt: ~$7.26M. No bad-debt events found 2023-2024. Yellow: prior bad debt events occurred but were covered; not systemic at present TVL levels. RD-F-068 yellow Collateralization under stress November 2022 SOL congestion event is the direct stress-test: SOL collateral ($32.6M) fell below borrowed USDC ($29.7M) during a rapid SOL -50% move + network congestion, resulting in $6M bad debt. Collateralization ratio fell below 100% for that position. Isolated pool architecture limits contagion between pools. Main pool remains exposed to large concentrated positions under correlated-stress scenarios. Current healthy positions are expected above 110% given kinked-curve incentives, but historical stress evidence warrants yellow. RD-F-071 yellow Seed-deposit requirement for new market listing No explicit minimum seed deposit enforced in spl-token-lending codebase per reserve.rs inspection ('No explicit minimum deposit enforced in this code section'). Zero-supply protection is provided by INITIAL_COLLATERAL_RATE constant, not a mandatory seed deposit. New isolated pool listings are governance/admin-controlled (not permissionless), partially mitigating risk. Absence of a hard seed-deposit floor is a mild residual risk. RD-F-073 yellow Oracle-manipulation-proof borrow cap November 2022 USDH oracle exploit demonstrates that isolated pool borrow caps were insufficient vs oracle manipulation: attacker spent $113K USDC to pump USDH price 10x via single-source Switchboard/Saber oracle, then borrowed $1.26M against inflated collateral value. Post-exploit: protocol added multi-source oracle requirements and restored funds. Current borrow-cap vs oracle-pool-depth adequacy for all reserves unverifiable without on-chain reads. Historical failure pattern documented. RD-F-069 n/a Algorithmic / under-collateralized stablecoin Save/Solend is a collateralized lending protocol, not an algorithmic or under-collateralized stablecoin. SUSD (Save's newer stablecoin product) is outside the `save` DefiLlama slug scope. RD-F-069 applies to protocols designed as algorithmic/under-collateralized stablecoins (Terra/Luna class); not applicable to collateralized lending protocols. RD-F-070 n/a Empty cToken-style market (zero supply/borrow) Save is a fork of Solana Labs spl-token-lending, NOT a Compound V2 cToken fork. The taxonomy explicitly scopes RD-F-070 as 'Compound-fork-only'. The spl-token-lending reserve model uses INITIAL_COLLATERAL_RATE constant when mint_total_supply==0, preventing donation-based exchange-rate manipulation at the zero-supply path. The Compound V2 empty-cToken vector does not apply to this reserve model structure. RD-F-074 n/a ERC-4626 virtual-share offset (OZ ≥4.9) ERC-4626 is an Ethereum token standard not present on Solana. Save/Solend is a Solana-native protocol built on spl-token-lending (Rust/BPF). OpenZeppelin virtual-share offset (v4.9+) is Solidity/EVM-specific. Not applicable by substrate.
RD-F-072 green Market-listing governance threshold New market listings require governance approval via SLND DAO on Realms (on-chain Solana governance). Main pool asset additions are DAO-voted. Isolated pools are admin-created with custom per-pool parameters, gating long-tail assets to ring-fenced environments. Dual-tier structure (main pool = high-threshold DAO; isolated = admin-controlled with contagion containment) represents a positive risk-containment architecture. Not permissionless.
RD-F-075 green First-depositor / share-inflation guard spl-token-lending reserve model uses INITIAL_COLLATERAL_RATE constant when mint_total_supply==0: 'let rate = if self.mint_total_supply == 0 || total_liquidity == Decimal::zero() { Rate::from_scaled_val(INITIAL_COLLATERAL_RATE)'. This is functionally equivalent to a first-depositor guard — the exchange rate at zero supply is set by a predetermined constant, not derived from user input, preventing donation-inflate attacks. Isolated pools are admin-created (not permissionless), further limiting attack surface.
Operational history Green 13 15 of 15
RD-F-089 red Insurance coverage active No confirmed active insurance coverage found for Solend/Save on Nexus Mutual, Sherlock, or Unslashed. Nexus Mutual product ID 187 (found via search) redirects to homepage without Solend/Save listed. Sherlock public protocol coverage list does not include Save/Solend. Unslashed dashboard not confirmed. At $79.77M TVL, absence of confirmed active coverage scores red (no active coverage). RD-F-077 yellow Prior exploit count Two confirmed distinct smart-contract incidents: (1) 2021-08-19 — insecure admin-check in process_update_reserve_config; $0 direct loss, $16K user compensation paid by team, full remediation within 98 min. (2) 2022-11-02 — oracle price manipulation via thin-liquidity Saber USDH pool; $1.26M bad debt; ~$900K recovered from attacker; DAO proposals SLND5/SLND6 made users whole. Scored yellow: users suffered no final loss (DAO fully compensated), but two distinct incidents occurred and one involved unrecovered bad debt absorbed by the protocol. The 2022 SLND1/SLND2 governance controversy is excluded per U20 (no contract exploited, $0 loss). Nirvana Finance Solend-as-venue entry is excluded per U4/U22. RD-F-081 yellow Post-exploit response score Incident 1 (Aug 2021): Strong response — detect 41 min, mitigate 70 min, fix 98 min, $16K user refund paid by team, SLND-INCDT-01 report published, Neodyme post-mortem Dec 2021 with detailed root cause. Score ~4/5. Incident 2 (Nov 2022): Pools paused after detection; DAO passed SLND5/SLND6 covering bad debt; users made whole; blog post-mortem published at blog.solend.fi; oracle root cause described by Ackee Blockchain. Score ~3/5. No confirmed external re-audit post-Nov-2022 oracle incident. Overall ~3.5 → yellow (green ≥4). RD-F-083 yellow Auditor re-engaged after last exploit After Aug 2021: Neodyme published a detailed post-mortem / security analysis (Dec 2021) — constitutes an external security firm incident review. After Nov 2022 oracle incident: no confirmed external re-audit found in public sources. The oracle manipulation was a configuration/parametric issue (single-source thin-liquidity feed in isolated pools), not a code logic bug, but absence of documented re-audit engagement post-Nov-2022 is a gap. Scoring yellow (external security review for one incident; no confirmed re-audit for most recent).
RD-F-076 green Protocol age (days) Mainnet deployed 2021-08-12; age as of 2026-05-17 ≈ 1,739 days (~57 months). Well above the 365-day green threshold. Protocol has operated continuously through multiple market cycles without full shutdown.
RD-F-078 green Chronic-exploit flag (≥3 incidents) Incident count = 2 (Aug 2021 + Nov 2022). Does not reach the ≥3 threshold for the chronic flag. No CHRONIC designation.
RD-F-079 green Same-root-cause repeat exploit Two confirmed incidents have distinct root-cause clusters: (1) Aug 2021 — Solana program account ownership validation failure (access-control / insecure authentication check class); (2) Nov 2022 — single-source oracle price manipulation via thin-liquidity DEX pool (oracle manipulation class). No same-root-cause repeat.
RD-F-080 green Days since last exploit Last confirmed exploit: 2022-11-02. Days elapsed to 2026-05-17 ≈ 927 days. Green threshold: >365 days or no incidents.
RD-F-082 green Post-mortem published within 30 days Nov 2022 (most recent incident): post-mortem published at blog.solend.fi in November 2022, within 30 days of the Nov 2 incident. Aug 2021: SLND-INCDT-01 public report published shortly after incident; Neodyme post-mortem published Dec 2021 (~4 months later, but initial report was prompt). Most recent incident post-mortem meets the 30-day threshold.
RD-F-084 green TVL stability (CoV over 90d) TVL CoV (90-day trailing) = 0.055. Green threshold: CoV < 0.15. Mean TVL $77.7M, std $4.3M. Window 2026-02-18 to 2026-05-17, 90 samples. Well within green.
RD-F-085 green Incident response time (minutes) Aug 2021 incident (best-documented): team detection at 41 minutes, mitigation at 70 minutes. Green threshold: ≤60 minutes for first on-chain response. Detection at 41 min meets green. Nov 2022 incident: pools paused after detection but precise minute-level timestamp not found in public sources. Primary scoring on Aug 2021 incident; Nov 2022 response time partial gap flagged in issues.
RD-F-086 green Pause activations (trailing 12 months) No pause activations in the trailing 12 months (May 2025–May 2026) found in public sources or data cache. Last known pause was in Nov 2022 following the oracle attack (isolated pools paused). No pause events documented in cache or public reporting for the trailing 12-month window. Scoring green (0 pauses).
RD-F-087 green Pause > 7 consecutive days No pause exceeding 7 consecutive days found in the trailing 12 months. Last known extended pause was the Nov 2022 oracle incident pool freeze (Stable, Coin98, Kamino isolated pools); that is now more than 29 months ago, outside the 12-month window. No pause events found in cache or current public sources for May 2025–May 2026.
RD-F-088 green Re-deployed to new addresses in last year The 2024-07-24 Solend→Save rebrand involved no redeployment to new contract addresses. Main lending program So1endDq2YkqhipRh3WViPa8hdiSpxWy6z3Z6tMCpAo remains the live program both before and after rebrand. No migration of user funds to new address set in trailing 12 months. Rebrand was a UI/brand/product-suite change only, per profile §1 note.
RD-F-166 green Deprecated contracts still holding value No deprecated contracts identified. The 2024-07-24 Solend→Save rebrand did not involve a contract deprecation or migration; the main lending program So1endDq2YkqhipRh3WViPa8hdiSpxWy6z3Z6tMCpAo continues as the live program. No protocol-announced deprecated contracts holding >$100K in assets found in public documentation or on-chain data. Solana substrate note: ERC-20 stale-approval mechanics do not apply on Solana; Solana programs use a different account-authorization model.
Real-time signals Green 0 22 of 22
RD-F-090 gray Mixer withdrawal → protocol interaction Mixer-withdrawal to protocol interaction signal. Tornado Cash is EVM-only (not applicable to Solana). Railgun operates on Solana but requires a licensed Chainalysis/TRM Solana TI feed for attribution. T-09 phase-2 signal. No public attribution report links recent mixer-adjacent activity to Solend/Save program `So1endDq2YkqhipRh3WViPa8hdiSpxWy6z3Z6tMCpAo`. Solana flash-loan provider role creates a broad attack-capital surface but no current mixer-to-protocol interaction detected in available public data. RD-F-091 gray Partial-drain test transactions Partial-drain test transactions: pre-strike small-value drain pattern. Applicable to Solana (on-chain detectable). T-09 phase-2 signal. No public reports of test-transaction patterns against Save/Solend contracts in trailing 90 days. The Nov 2022 oracle attack had a two-phase structure (probe attempt at 12:15 AM, exploit at 2:16 AM same night) that partially matches this pattern, but that is historical context, not a current signal state. RD-F-092 n/a Unusual mempool pattern from deployer wallet EVM-mempool-specific signal. Solana has no public EVM-style mempool. Transactions are broadcast directly to validators without a publicly observable pending pool. Per U10 (Solana substrate rule), this EVM-mempool-specific signal does not apply to Solend/Save (Solana-native protocol). RD-F-093 n/a Abnormal gas-price willingness from attacker wallet EVM gas-price / mempool-race signal. Solana uses compute units and priority fees, not EVM gas. The specific signal pattern (priority-fee ≥5× EMA baseline in a mempool frontrun race) is an EVM-specific construct. Per U10, this signal does not apply to Solana-native protocols. RD-F-094 gray New contract with similar bytecode to exploit template New BPF/SBF program deployment with bytecode similarity to Solend's lending program. Applicable to Solana: BPF program deployments are on-chain and detectable. T-09 phase-2 signal (deferred). No public reports of a Solend-clone attack-template BPF program deployed in trailing 90 days. The Aug 2021 exploit used Solend's own `UpdateReserveConfig` instruction — a similar-bytecode clone of Solend could be used to test attacks against its account structure. Pipeline to scan new BPF program deployments for bytecode similarity has not been built. RD-F-095 n/a Known-exploit function-selector replay EVM 4-byte function-selector replay pattern. Solana does not use EVM 4-byte function selectors. Solana uses instruction discriminators (8-byte anchors for Anchor programs or custom layout). The specific signal methodology (selector sequence + calldata shape matching EVM exploit templates) is EVM-architecture-specific per U10. RD-F-096 n/a New ERC-20 approval to unverified contract from whale ERC-20 approval to unverified contract. Solana uses the SPL Token standard, which does not implement the ERC-20 approve/allowance mechanism. There is no equivalent ERC-20 approval grant pattern on Solana. Per U10, this EVM-specific signal does not apply. RD-F-097 gray Sybil surge of identical-pattern transactions Sybil surge of identical-pattern transactions. Applicable to Solana: identical transaction bursts from multiple new accounts targeting Solend's pools are detectable on-chain. T-09 phase-2 signal (deferred). No public reports of Sybil transaction surges against Save/Solend contracts in trailing 90 days. The Nov 2022 oracle attack involved spamming Saber transactions to write-lock the pool account — a partial Sybil pattern on the external manipulation side, not on Solend's contract side directly. RD-F-098 gray TVL anomaly — % drop in <1h TVL anomaly — severe drop in <1h vs 30d baseline. T-09 v1 shortlist — phase-2. Applicable to Solana (DefiLlama TVL API + Solana on-chain balance reads). Current TVL: $79.77M; 30d change: -6.61%; 1d change: +0.25%; CoV=0.055 over 90d. No acute drop detected. Historical note: the Nov 2022 oracle attack drained ~$1.26M from isolated pools — this signal would have fired within minutes of that attack. Solana TVL polling pipeline at 60s cadence has not been built for this protocol. RD-F-099 gray Oracle price deviation >X% from secondary Oracle price deviation >X% from secondary source. T-09 v1 shortlist — phase-2. Applicable to Solana (Pyth as primary, Switchboard as secondary or vice versa, with DEX TWAP as tertiary). CRITICAL historical context: the Nov 2022 Solend oracle attack exploited a single-source USDH price feed from a Saber pool, pumping USDH from $0.99 to $8.80 (first attempt) and ~$15 (second attempt). A cross-source oracle deviation signal (F099) would have fired within blocks of the first pump. This is the highest-value T-09 signal for Save. No current oracle deviation detected as of 2026-05-17. Per-asset secondary-source map for Solana Pyth/Switchboard feeds has not been built. RD-F-100 gray Flash loan >$10M targeting protocol tokens Flash loan >$10M origination targeting protocol. T-09 v1 shortlist — phase-2. Solana applicable (composability-based flash loans within single transactions, not EVM Aave/Balancer model). Directional context: Solend IS a flash-loan provider — in Jul 2022, the Nirvana Finance attacker borrowed $10.25M USDC from Solend's flash-loan facility to attack Nirvana (Solend was a passive venue per U4 — NOT a Solend exploit). The relevant signal direction is a flash loan sourced FROM Solend's own pools targeting Solend's own oracle/market (self-attack scenario). No such attack-class pattern detected today. Detection pipeline for Solana-native flash loan scan not built. RD-F-101 gray Large governance proposal queued Large governance proposal execution queued with malicious-pattern flag. T-09 v1 shortlist — phase-2. Applicable: Save uses Realms on-chain governance (app.realms.today/dao/SLND) with SLND/SAVE token. Historical context: June 2022 SLND1 emergency proposal — passed in ~6h with 1.13% participation, proposing to take over a whale's collateral account; would have triggered the 'admin role change equivalent' flag. Reversed by SLND2 within 24h. Current posture: no active flagged-pattern proposals visible on govern.save.finance as of 2026-05-17. SLND→SAVE token conversion (Dec 2024 onwards) may have muted governance activity. Solana Realms event pipeline not built. RD-F-102 n/a Admin/upgrade transaction in mempool EVM-mempool-specific: admin/upgrade transaction appearing in mempool. Solana has no EVM-style public mempool. BPFLoaderUpgradeable program upgrade transactions are broadcast directly to validators. There is no observable 'pending upgrade tx in mempool' state on Solana equivalent to EVM. Per U10, this signal does not apply. Note: the underlying risk (single-EOA `RY93CZYe` can silently upgrade the program without governance) is real but is captured under F182 (Squads threshold change) and Cat 2 (governance-admin-analyst's F027 red). RD-F-103 n/a Bridge signer-set change proposed/executed Bridge signer-set change signal. Save does not operate a cross-chain bridge. The Eclipse deployment is a native SVM chain deployment (independent BPF program with its own upgrade_authority BownY7uPxZ5jLjBxPNvqaWa3VD9WJvwQEUYVC5sERzET), not a Save-operated bridge. Cat 10 is entirely N/A for this protocol. No bridge signer set exists to monitor. RD-F-104 gray Stablecoin depeg >2% on shared-LP venue Stablecoin depeg >2% on venues with shared LP. T-09 v1 shortlist — phase-2. Applicable: Save's markets include USDC, USDT, SOL-stablecoins as collateral and borrowing assets across 13 isolated pools plus main pool. Historical context: the Nov 2022 USDH oracle attack was effectively a stablecoin (USDH) depeg-via-manipulation event that drained $1.26M from Solend's USDH isolated pools — exactly the F104 scenario class. No current stablecoin depeg >2% detected on Solana DEX venues as of 2026-05-17. Stablecoin dependency map for Solend's 13+ pools not built in pipeline. RD-F-105 gray DNS/CDN/frontend hash drift DNS/CDN/frontend hash drift. T-09 v1 shortlist — phase-2. Applicable: save.finance is the current frontend (rebranded from solend.fi in July 2024). Both domains are active. No DNS change or frontend hash drift reported in public security channels as of 2026-05-17. Risk note: the July 2024 rebrand from solend.fi to save.finance constituted a legitimate frontend transition; users who still access solend.fi could be redirected to a malicious clone if that domain were acquired. External monitor stack (hash monitor + DNS probes) for save.finance has not been built. RD-F-106 n/a Cross-chain bridge unverified mint pattern Cross-chain bridge tx pattern (deposit src, mint dst without proof). Save does not operate a cross-chain bridge. This signal is for bridge-operating protocols only. Not applicable. RD-F-107 n/a Admin EOA signing from new geography/device Admin EOA signing from new geography/device fingerprint. Requires off-chain signing telemetry. On Solana, BPFLoaderUpgradeable upgrade-authority key signs with standard ed25519 signatures — no device fingerprint or geography metadata is attached to on-chain transactions. Off-chain signing telemetry infrastructure does not exist for Solana-native programs. Per U10 framing (EVM-specific/off-chain-specific), this signal is not applicable. RD-F-108 gray GitHub force-push to sensitive branch GitHub force-push or sensitive-branch push from non-protocol account. Applicable: solendprotocol/solana-program-library is the authoritative repo. A force-push to main or unauthorized push from non-core-contributor would be detectable via GitHub API monitor. T-09 phase-2 signal (deferred). No public reports of unauthorized GitHub activity on Solend repos as of 2026-05-17. GitHub API monitor for this repository has not been built. RD-F-109 gray Social-media impersonation scam spike Social-media impersonation scam-spike. Applicable: @solendprotocol on X is the official account. The rebrand to 'Save' (a highly generic English word, per U22) significantly complicates brand-protection monitoring — automated detection of 'save' scam accounts requires disambiguation. No public reports of a major Solend/Save impersonation spike as of 2026-05-17. Social-media monitor has not been built. RD-F-110 gray Unusual pending/executed proposal ratio Unusual pending/executed proposal ratio vs trailing-30d baseline. Applicable: Save uses Realms on-chain governance. SLND→SAVE token conversion (Dec 2024 onwards) likely reduced proposal cadence during migration period. Insufficient baseline data on proposal cadence for Save/Solend Realms DAO to establish whether current ratio is anomalous. Solana Realms event pipeline not built.
RD-F-182 green Security-Council threshold reduction (RT) Security-Council threshold reduction event (RD-F-182, batch-24, Cat 6B). Applicable to Save's Squads multisigs. Treasury Squads v3 (vault EaFPY9LTQeFR7SEyfbKKFuVMtYvUBbYiiK7WvBJJ7iBU, verified 4-of-6 threshold, on-chain trace sig yGHQUjgk…) and LM Squads v4 (vault 5QbRL9MU5QakL5Fx2He9YaiUzB3TQpVAUBR2ARKN1NrM, verified 2-of-4 threshold, on-chain trace sig yC5opWtg…). No threshold reduction event detected in available on-chain data. No new-signer addition events within 14 days detected. Structural caveat: the program upgrade path is a bare single-EOA (RY93CZYe5g6drtG7W9PmHRPzaBLZ1uwihTzayQTmJfh, is_on_curve: True) — NOT a Security Council multisig. F182 cannot fire on the most critical control surface because there is no multisig threshold to reduce on the program upgrade path. Signal scope is limited to treasury/LM Squads multisigs only.
Dev identity & insider risk Green 17 16 of 16
RD-F-111 yellow Team doxx status All 5 team members (0xrooter, 0xnope, 0xodia, dasichuan, legocactus) operate under consistent pseudonyms. 0xrooter has 57-month operating track record as Solend/Save founder, LinkedIn presence, X account, AMA appearances, podcast interviews, and self-attested ex-Coinbase background. No real-name disclosure confirmed for any member. Classification: consistent-pseudonym-with-track-record. RD-F-112 yellow Team public accountability surface Rooter has LinkedIn, active X, Medium blog, YouTube AMA (Nov 2021), podcast appearances, and multiple media quotes (CoinDesk, CryptoSlate). Other team members have GitHub contribution history. 2 public GitHub org members (nope-finance, 0xrooter). No employer-verified identity or conference speaker credits for any team member. RD-F-116 yellow Contributor tenure at admin-permissioned PR SLND1 was authored and submitted by Rooter (founder, ~10 months tenure at time of June 2022 submission). No low-tenure contributor pattern found for admin-permissioned changes. However the SLND1 governance event — which effectively constituted an insider-initiated emergency admin action — was by the most senior/longest-tenure contributor (founder). The structural concern is the bypass of deliberative process, not junior-contributor insertion. RD-F-121 yellow Contributor OSINT depth score Rooter: LinkedIn + X + Medium blog + YouTube AMA + podcast + media quotes (CoinDesk, CryptoSlate) = estimated 3/5 OSINT depth. Other team members: 1-2/5 (GitHub handles only; minimal independent web presence). Overall team OSINT depth is below average for a 57-month, VC-backed protocol but consistent with Solana pseudonymous-team norms. RD-F-123 yellow Sudden admin-rescue/ACL change without discussion SLND1 emergency proposal (2022-06-19): authored by Rooter (team founder), opened for ~6h vote window with zero preceding governance-forum discussion. 88% of voting power from single address per CoinTelegraph. ~1.13% effective community participation. Granted team emergency admin power to seize a whale's wallet — a non-routine ACL-class action with no corresponding GitHub PR, issue, or governance-forum precedent discussion. Reversed by SLND2 within 24h; no funds taken. Yellow per §7-rule-5: documented insider-governance overreach, not malicious theft. The single-key EOA upgrade authority is disclosed structural centralization, not concealment — F123 scored on conduct evidence only. RD-F-117 n/a ENS/NameStone identity bound to deployer Solana substrate — ENS does not exist on Solana. This factor is structurally inapplicable for all Solana-native protocols. U7 applies. No gap_reason required for not_applicable. RD-F-119 gray Commit timezone consistent with stated geography GitHub contributor commit-time data is JS-rendered and not accessible via WebFetch. Rooter's stated geography is Singapore (LinkedIn) and Taiwan for Solana Season Hackathon (June 2021). No anomalous timezone pattern flagged in any secondary source or DPRK-implant security research for Solend. Factor cannot be scored without API-level GitHub commit-time data. RD-F-120 gray Video-off/voice-consistency flag Rooter participated in at least one YouTube AMA (Nov 2021) and Zeitgeist podcast. Whether video was on or off is not determinable from WebFetch content. No secondary source flags a video-off or voice-inconsistency concern for any team member. This is a curator-observation-required factor that cannot be scored from search results alone. RD-F-122 n/a Contributor paid to DPRK-cluster wallet Off-chain OSINT tier only. No on-chain contributor payment streams from Save/Solend to individual contributor wallets are publicly enumerated. No DPRK cluster proximity found via Chainalysis public reports or OFAC SDN for any Solend wallet. Contributor-wallet routing requires on-chain stream data not available at OSINT tier. RD-F-124 n/a Deployer wallet mixer-funded within 30 days Solscan returns HTTP 403 for all three upgrade-authority EOA account pages (RY93CZYe5g6drtG7W9PmHRPzaBLZ1uwihTzayQTmJfh, 2Fwvr3MKhHhqakgjjEWcpWZZabbRCetHjukHi1zfKxjk, BownY7uPxZ5jLjBxPNvqaWa3VD9WJvwQEUYVC5sERzET). Orb/Helius confirms RY93C... is 'Closed Account' and 2Fwvr3... is 'Save (Solend) Multisig' but funding-chain history is not returned. Tornado Cash is EVM-only (not applicable on Solana). No Solana-native mixer (Elusiv, Whirlpool) proximity found via web search. Full 30-day pre-deploy funding trace not recoverable at OSINT tier. Attempted trace via Solscan, Orb/Helius, Solana Explorer — all blocked or JS-loading. RD-F-184 gray Real-capital social-engineering persona No curator-flagged evidence of a team contributor or external integrator persona depositing >=1M USD to Solend or peer protocols to build credibility ahead of a social-engineering attack. This is M-only OSINT at P1 priority. The team is pseudonymous, limiting individual capital-flow tracing. No secondary-source investigation has flagged a Drift-Protocol-class UNC4736-style setup at Solend. The Nope Finance acquisition (pre-mainnet 2021) was a transparent team merger, not a covert infiltration.
RD-F-113 green Team other-protocol involvement history 0xrooter is an ex-Coinbase engineer (self-attested on LinkedIn and multiple media) who previously co-founded a startup acquired by a multi-billion-dollar company (self-attested). 0xnope came from Nope Finance acquired by Solend pre-mainnet (Aug 2021) — not a rug. 0xrooter also launched Suilend on Sui (March 2024) — additional positive track record. No prior rug or exit-scam affiliations found for any team member.
RD-F-114 green Deployer address prior on-chain history Upgrade authority RY93CZYe5g6drtG7W9PmHRPzaBLZ1uwihTzayQTmJfh is labeled 'Closed Account' by Orb/Helius — consistent with a purpose-built deploy key with limited on-chain footprint (normal-dev-history category). Address 2Fwvr3MKhHhqakgjjEWcpWZZabbRCetHjukHi1zfKxjk is labeled 'Save (Solend) Multisig' by Orb/Helius — confirmed team-controlled. No prior rug or exit-scam-labeled protocol connection found in rekt.news or hacks database.
RD-F-115 green Prior rug/exit-scam affiliation No prior rug or exit-scam affiliation found for any team member. rekt.news database shows no Solend team rug entry. 00-data-cache.json rekt.incidents field is empty. The November 2022 $1.26M oracle exploit was by an external attacker (not team). Nope Finance acquisition was a legitimate acquisition pre-mainnet, not a rug.
RD-F-118 green Handle reuse across failed/rugged projects 0xrooter is a consistent handle used since mid-2021 with no prior association with a failed/rugged project. Nope Finance (acquired pre-mainnet) was not a rug. No cross-handle linking to prior rugged projects found via web search and rekt.news review.
RD-F-125 green Deployer linked within 3 hops to DPRK/Lazarus No OFAC SDN designation found for Solend, Save Finance, 0xrooter, or any disclosed team member or wallet (SDN last updated 2026-05-11). No Chainalysis or published security research attributes any Solend/Save wallet to the Lazarus/UNC4736 cluster. SLND1 governance controversy was a legal governance dispute (U15). November 2022 $1.26M oracle exploit was by an external attacker with no team nexus. 57-month operating history with zero DPRK/Lazarus signal.
Fork / dependency lineage Yellow 27 10 of 10
RD-F-129 red Code divergence from upstream (%) Substantial divergence estimated >50% from upstream. Documented additions: multi-pool architecture (13+ isolated pools vs. upstream single-pool), custom interest-rate models per pool, custom liquidation engine, Pyth/Switchboard oracle integration (vs. upstream simpler price mechanism), SLND governance integration, and numerous bug fixes. The upstream was never deployed to mainnet as a production protocol — Solend is the production implementation with extensive divergence. RD-F-132 red Fork has different economic parameters than upstream The fork has materially different economic parameters vs upstream: per-pool LTV/liquidation thresholds, per-pool borrow/deposit limits, custom interest-rate models, token-specific liquidation bonuses, 13+ isolated pool configurations. These all differ from upstream defaults and were not covered by the Kudelski audit which focused on v1.0 code structure. No confirmed re-audit of these parameter changes. RD-F-131 yellow Fork retains upstream audit coverage The fork has a fresh audit (Kudelski v1.0) covering the initial fork state. However, major subsequent additions (13+ isolated pools, custom liquidation, oracle integration, ~57 months of changes) are not covered by any confirmed subsequent audit. Upstream SPL audits do not cover Solend's modifications. Classification: upstream+partial — initial fresh audit exists but substantial unaudited delta. RD-F-135 yellow Shared-library version with known-vuln status solana-program 1.7.12 (from ~July 2021) is very old relative to current Solana SDK 2.x (2026). No specific CVE/GHSA advisory found for this version in the context of the token-lending functionality. switchboard-program 0.1.45 (Switchboard v1) is effectively abandoned (superseded by v2/v3). Risk is structural (old, unmaintained dependencies) rather than advisory-confirmed.
RD-F-126 green Is-a-fork-of Confirmed fork of Solana Labs spl-token-lending. README explicitly states: 'The Solend lending protocol is based on the token-lending program authored by Solana labs.' Fork is clearly documented.
RD-F-127 green Upstream patch not merged The only confirmed critical upstream patch (Neodyme Dec 2021 rounding error) was applied by Solend BEFORE the upstream fix was merged (Solend patched Dec 2, upstream merged Dec 4). Upstream archived March 2025 with no new security patches since. All known upstream security-relevant changes have been applied to Solend.
RD-F-128 green Upstream vulnerability disclosure (last 90d) Upstream solana-labs/solana-program-library token-lending was archived March 11, 2025 — now read-only, no new security advisories generated. No active upstream vulnerability disclosures in the last 90 days.
RD-F-130 green Fork depth (generations from original audit) Depth 0 — direct fork of Solana Labs spl-token-lending (a reference implementation by Solana Labs, not a fork of another protocol). No additional fork hops.
RD-F-133 green Dependency manifest uses unpinned versions The Cargo.toml for the token-lending program pins ALL dependencies to exact versions: solana-program=1.7.12, spl-token=local path, switchboard-program=0.1.45, arrayref=0.3.6, etc. No ^ or ~ range specifiers found. All pinned to exact versions as of last confirmed update (Nov 2021).
RD-F-134 green Dependency had malicious-release incident (last 90d) Key dependencies pinned to exact versions from late 2021. These frozen versions would not be affected by new malicious releases. Upstream SPL archived March 2025 (no new releases). No active GitHub Security Advisory for solana-program 1.7.12 or switchboard-program 0.1.45 in trailing 90 days.
Post-deploy hygiene & change mgmt Red 78 13 of 13
RD-F-138 red Hot-patch deploys without timelock (last 30 days) The upgrade path is a single EOA with no timelock — every deploy is inherently without timelock by structural reality. Any upgrade executed since launch (including v2 in 2023) bypassed any timelock. No specific hot-patches in last 30 days documented in public sources, but structural reality makes this a permanent red condition. RD-F-139 red Post-audit code changes without re-audit [★ CRITICAL] Only confirmed public audit: Kudelski (2021, v1.0). Post-audit changes: (1) V2 launch April 2023 — new features including protected collateral, TWAP oracle, borrow weights, outflow rate limits, collateralization limits, isolated tier assets (major new code). (2) November 2022 oracle attack response. (3) Recovery Mode mechanism. (4) Rebrand/new products July 2024. No confirmed re-audit from Neodyme or OSEC — their reports not found as public documents as of 2026-05-17 despite references in secondary sources. Single-EOA can push unaudited bytecode at any time. RD-F-185 yellow Bridge rate-limiter / chain-pause as positive mitigant Save does not operate a cross-chain bridge. Solana validators have chain-level pause capability (cluster restarts — known public fact). Solend v2 whitepaper introduced outflow rate limits as a feature; if deployed, this is a positive mitigant, but confirmed deployment status and parameters are not publicly documented. Yellow: Solana chain-level pause exists as network-wide positive mitigant; protocol-level outflow rate limiter mentioned in v2 but parameters unconfirmed. RD-F-136 gray Deployed bytecode matches signed release tag Source published at github.com/solendprotocol/solana-program-library. Whether deployed bytecode at So1endDq2YkqhipRh3WViPa8hdiSpxWy6z3Z6tMCpAo corresponds to a signed release tag cannot be confirmed without local build + bytecode diff. Only solend-audit-v1.0.pdf in the public audit directory (no signed release tag with bytecode hash). Code-security-analyst must verify. RD-F-137 gray Upgrade frequency (per 90 days) Upgrade frequency not determinable from available public sources without on-chain RPC archaeology. V2 launch (April 2023) was a confirmed major upgrade. No further major upgrades publicly announced since July 2024 rebrand. Whether minor bytecode updates occurred in trailing 90 days is unknown. RD-F-140 gray Fix-merged-but-not-deployed gap No specific evidence found of a fix merged in GitHub but not deployed. November 2022 oracle attack response included temporary pool disabling and v2 development. Code-security-analyst must verify current deployed bytecode vs latest repo commit. RD-F-141 gray Test-mode parameters in deploy Lending market owner address (5pHk2TmnqQzRF9L6egy5FfiyBgS7G9cMZ5RFaJAvghzw) is distinct from the upgrade authority — suggests some operational separation from deployer. No evidence of test-mode oracle addresses or infinite allowances remaining. Internal code review process documented ('reviewed internally across multiple members of the team'). Cannot confirm absence of test-mode configs without code-security-analyst bytecode review. RD-F-142 n/a Storage-layout collision risk across upgrades Solana BPF programs use a flat account model (program-owned state accounts with serialized data), not the EVM storage slot model. The EVM storage layout collision risk when upgrading UUPS/Transparent proxies does not exist in the Solana BPF upgrade pattern. When a Solana program is upgraded, the bytecode is replaced and existing account state is preserved in its current layout — no storage layout pointer collision risk. RD-F-143 n/a Reinitializable implementation (no _disableInitializers) Solana BPF programs do not use EVM proxy patterns, _disableInitializers(), or OpenZeppelin Initializable. BPFLoaderUpgradeable replaces entire program bytecode directly, not via implementation+proxy+initializer. The reinitializer attack vector (taking over an unprotected proxy implementation) is structurally inapplicable to this Solana-native program. RD-F-144 n/a CREATE2 factory permits same-address redeploy Solana does not use CREATE2. Program deployment on Solana uses BPFLoaderUpgradeable which assigns a static program address at first deploy and supports in-place upgrades (address does not change on upgrade). No CREATE2 factory redeployment attack surface exists. RD-F-145 gray Deployed bytecode reproducibility Source code is published at github.com/solendprotocol/solana-program-library. Whether reproducible builds from the published source produce the exact deployed bytecode is not confirmed. No explicit reproducibility statement or SHA-256 bytecode attestation found in public repo. Only solend-audit-v1.0.pdf in audit directory. Code-security-analyst must verify. RD-F-146 gray New contract deploys in last 30 days No specific new contract deploys for Save/Solend in the last 30 days confirmed from available public sources. The protocol has been in a stable operational state since the July 2024 rebrand. New isolated pool deploys may occur but are not tracked in available public evidence. Code-security-analyst to verify via on-chain deploy event archaeology. RD-F-168 n/a Stale-approval exposure on deprecated router Solana SPL token approval model differs from EVM. SPL token delegations are per-token-account, not global ERC-20 approvals. The deprecated router stale-approval risk (users' EVM token approvals persisting to a deprecated contract) does not map to Solana's account model. Additionally, no officially deprecated router contracts are identified for Save/Solend.
Cross-chain & bridge Gray 0 12 of 12
RD-F-147 n/a Protocol has bridge surface Solana-native lending protocol; no protocol-operated cross-chain bridge; Eclipse is an independent SVM chain deployment, not a Save-operated bridge. Profile §7: has_bridge_surface=false, is_a_bridge=false. RD-F-148 n/a Bridge validator count (M) Solana-native lending protocol; no protocol-operated cross-chain bridge; Eclipse is an independent SVM chain deployment, not a Save-operated bridge. RD-F-149 n/a Bridge validator threshold (k-of-M) Solana-native lending protocol; no protocol-operated cross-chain bridge; Eclipse is an independent SVM chain deployment, not a Save-operated bridge. RD-F-150 n/a Bridge validator co-hosting Solana-native lending protocol; no protocol-operated cross-chain bridge; Eclipse is an independent SVM chain deployment, not a Save-operated bridge. RD-F-151 n/a Bridge ecrecover checks result ≠ address(0) Solana-native lending protocol; no protocol-operated cross-chain bridge; no EVM bridge code to inspect for ecrecover usage. Eclipse is an independent SVM chain deployment, not a Save-operated bridge. RD-F-152 n/a Bridge binds message to srcChainId Solana-native lending protocol; no protocol-operated cross-chain bridge; Eclipse is an independent SVM chain deployment, not a Save-operated bridge. RD-F-153 n/a Bridge tracks nonce-consumed mapping Solana-native lending protocol; no protocol-operated cross-chain bridge; Eclipse is an independent SVM chain deployment, not a Save-operated bridge. RD-F-154 n/a Default bytes32(0) acceptable as valid root Solana-native lending protocol; no protocol-operated cross-chain bridge; Nomad-pattern (bytes32(0) root) inapplicable. Eclipse is an independent SVM chain deployment, not a Save-operated bridge. RD-F-155 n/a Bridge validator-set rotation recency Solana-native lending protocol; no protocol-operated cross-chain bridge; Eclipse is an independent SVM chain deployment, not a Save-operated bridge. RD-F-156 n/a Bridge uses same key custody for >30% validators Solana-native lending protocol; no protocol-operated cross-chain bridge; Eclipse is an independent SVM chain deployment, not a Save-operated bridge. RD-F-157 n/a Bridge TVL per validator ratio Solana-native lending protocol; no protocol-operated cross-chain bridge; Eclipse is an independent SVM chain deployment, not a Save-operated bridge. RD-F-179 n/a LayerZero OFT DVN config (count, threshold, diversity) Solana-native lending protocol; no LayerZero OFT integration; no protocol-operated cross-chain bridge. Eclipse is an independent SVM chain deployment, not a Save-operated bridge. RD-F-179 applies only to LayerZero OFT adapters.
Threat intelligence & recon Yellow 33 8 of 8
RD-F-160 yellow GitHub malicious-dependency incident touching protocol deps GitHub-flagged malicious-dependency incident touching protocol deps. The December 2024 @solana/web3.js library backdoor (versions 1.95.6 and 1.95.7 contained a hidden private-key-stealing backdoor) is a confirmed supply-chain event directly affecting the Solana ecosystem. Solend/Save's frontend and off-chain tooling (liquidation bots, governance tooling) depend on @solana/web3.js. Whether Save's production systems pinned affected versions 1.95.6 or 1.95.7 is NOT confirmed in public sources. The on-chain lending program itself (Rust/BPF) does not depend on the JS SDK, but frontends do. No GitHub security advisory has been issued against solendprotocol/solana-program-library specifically as of 2026-05-17. Score: yellow (ecosystem-level supply-chain event with unconfirmed but plausible exposure to Save's off-chain components; requires code-security-analyst to check frontend package.json). RD-F-161 yellow Protocol-impersonator domain registered (typosquat) Protocol-impersonator domain registered (typosquat). Applicable. Scope note: save.finance is the LEGITIMATE rebrand domain (July 2024, per Binance Square and Decrypt) — NOT scored as impersonation. Signal is for malicious impersonators. Current posture: no specific typosquat domain targeting save.finance or solend.fi has been confirmed in available public domain-monitoring data as of 2026-05-17. Risk factors: (1) 'Save' is a highly generic English word making automated typosquat detection difficult (U22); (2) the rebrand from solend.fi to save.finance creates a dual-surface risk — users with solend.fi bookmarks could be phished if that domain were acquired; (3) no domain-monitoring feed result confirms specific malicious lookalike domains. Scored yellow [?] (inference): elevated impersonation surface from generic-word rebrand; no confirmed active typosquat. RD-F-163 yellow Avg attacker reconnaissance time for peer-class protocols Attacker wallet reconnaissance time before strike. Applicable. Two confirmed attack attempts against Solend with distinct patterns: (1) Aug 2021 auth-bypass: direct exploit with no published reconnaissance window — team detected and stopped same day; (2) Nov 2022 oracle manipulation: two-phase attack in a single night (probe attempt 12:15 AM UTC manipulating USDH to $8.80, exploit at 2:16 AM UTC pumping to ~$15 and draining ~$400K from isolated pools) — a short same-night probe-then-exploit reconnaissance pattern. The USPD 78-day pre-strike reconnaissance window applies to the broader Solana/DeFi attack class. For peer-class Solana lending protocols, the Drift Protocol DPRK attack (Apr 2026) involved 6-month social engineering with real-capital deposits. Solend's documented reconnaissance windows are short (same-night) but the protocol is a confirmed recurring target. Current posture: no reconnaissance activity detected in available public data (requires licensed TI feed for real-time RD-F-158 gray Known-threat-actor cluster has touched protocol Known-threat-actor wallet cluster interaction. T-09 v1 shortlist — phase-2. Applicable: Solend has two confirmed prior attack attempts (Aug 2021, Nov 2022) making it a documented target. The attacker wallets from those incidents would be in a properly-maintained TI cluster list. No active known-threat-actor wallet interaction reported by any public attribution source (Chainalysis, Arkham, Nansen) against Save/Solend contracts as of 2026-05-17. Requires licensed Solana TI feed + curated threat-actor cluster list. Program address filter: So1endDq2YkqhipRh3WViPa8hdiSpxWy6z3Z6tMCpAo. RD-F-159 n/a Attacker wallet pre-strike probe (low-gas failing txs) Mempool probe: attacker wallet sending low-gas failing txs. EVM-mempool-specific signal. Solana has no equivalent EVM public mempool; failing transactions are rejected at the validator level and not observable in a pending-transaction pool. Per U10, not applicable to Solana-native protocols. RD-F-162 gray Known-exploit-template selector deployed by any address Known-exploit-template selector-pattern deployed by any address. On Solana, 'selector pattern' maps to instruction discriminator patterns in BPF programs. The Aug 2021 exploit template (calling process_update_reserve_config with a spoofed lending market account) is a known Solana-specific exploit pattern for Solend. A newly deployed BPF program containing similar instruction logic targeting Solend's account structure would be the signal. No public reports of such a program in trailing 90 days. On-chain BPF program similarity scan has not been built. RD-F-164 gray Leaked credential on paste/sentry site Leaked credential on paste/sentry site matching protocol infra. Applicable: Solend operates off-chain infrastructure (Discord admin credentials, GitHub CI/CD tokens, off-chain keeper bot keys). No public paste-site or credential-dump entries referencing Solend/Save infrastructure found in available public sources as of 2026-05-17. Requires dedicated paste-site monitoring feed (Pastebin, GHDB, HaveIBeenPwned, Sentry-alt scans). Not implemented. RD-F-165 gray Protocol social channel has scam-coordinator flag Telegram/Discord channel member flagged as scam-coordinator. Applicable: Save/Solend maintains Discord (discord.com/invite/solend) and likely Telegram channels. No public reports of Solend/Save Discord/Telegram admin being flagged as a scam-coordinator as of 2026-05-17. Requires curator social watchlist with regular Discord/Telegram admin roster review. Not implemented.
Tooling / compiler / AI Green 8 5 of 5
RD-F-174 yellow Dependency tree uses EOL Solidity version The program pins solana-program=1.7.12 (from July 2021, approximately Solana SDK v1.7). Current Solana SDK is 2.x (2026). Solana SDK 1.7.12 is well past end-of-support. The crate is noted as minimal-maintenance status on lib.rs. However, the BPF bytecode is compiled and deployed statically — the old SDK version does not create runtime update exposure, but the program misses SBF security improvements in newer versions. Yellow for old, unsupported SDK as structural analog to EOL Solidity. RD-F-170 n/a Solc version used (known-bug versions flagged) Save/Solend is a Rust/BPF program compiled with the Solana BPF toolchain — no Solidity compiler (solc) is used. No known-bug solc version applies. The Rust equivalent concern (old toolchain) is addressed under RD-F-174.
RD-F-171 green Bytecode similarity to audited upstream with behavior deviation The Solend program is a documented fork of Solana Labs spl-token-lending with extensive developer-authored feature additions. Fork lineage is transparent. No evidence of AI-generated code introducing behavioral deviations. The divergence from upstream is developer-authored, not an AI-copy pattern.
RD-F-172 green Repo shows AI-tool co-authorship in critical files No AI-tool co-authorship metadata found in commit history. Core program commits were from 2021 (before GitHub Copilot GA June 2022). Commit messages are human-authored with technical content. No AI co-author trailers found.
RD-F-173 green Team self-disclosure of AI-generated Solidity No public disclosure found of AI-generated Rust code in the Save/Solend token-lending program security-critical paths. Core program code was developed in 2021 before widespread LLM-assisted coding tools. No blog posts, tweets, or documentation mentioning AI-generated production contract code.
Response & disclosure hygiene Yellow 25 4 of 4
RD-F-176 red Disclosure SLA public No acknowledgment-time SLA published. The bug-bounty page at docs.save.finance/protocol/bug-bounty details payout tiers and scope but does not state any acknowledgment window (e.g., 72h ack, 7-day triage SLA). WebFetch of the page confirmed: 'No SLA, disclosure policy details, or safe harbor clause are specified in the documentation.' Red threshold: no SLA published.
RD-F-175 green Disclosure channel exists Public disclosure channel published at docs.save.finance/protocol/bug-bounty: security@solend.fi email contact. Program page active and detailed with payout tiers (critical $1M/10% VaR, high $50K, medium $5K), scope (smart contracts, not UI), and reporting instructions. Program survived the 2024 Solend→Save rebrand and remains current. Security@ contact and bounty program constitute an actively maintained disclosure channel.
RD-F-177 green Prior known-ignored disclosure No evidence found that a disclosed vulnerability was reported to the Solend/Save team and not actioned before an exploit. Aug 2021 incident was discovered by an attacker, not a prior responsible disclosure. Nov 2022 oracle incident was an opportunistic market attack, not a pre-reported vulnerability. Neither post-mortem references an ignored prior disclosure. Green threshold: no evidence of ignored disclosure.
RD-F-178 green CVE/GHSA advisory issued against protocol No CVE or GHSA advisory found against the solendprotocol/solana-program-library repository or against the Save/Solend protocol. Web search for Solend GHSA/CVE returned no protocol-specific advisories. Note: Solana programs are written in Rust/BPF and have lower GHSA indexing coverage than EVM/npm packages, so absence is expected but not exhaustively verified. Scoring green (no advisory found; all searches returned no Solend-specific advisories).
rubric_version v1.7.0 graded_at 2026-05-17 18:25:49 factors 184 protocol save