Skip to content

Blockchain Cybersecurity

Bernard Sibanda edited this page Sep 20, 2026 · 1 revision

Blockchain Cybersecurity

Understanding and Preventing the Most Dangerous Blockchain Hacks

A Practical Security Tutorial for Blockchain Infrastructure Developers


Table of Contents

  1. Introduction

  2. Why Blockchain Security Is Different

  3. The Modern Blockchain Attack Surface

  4. Private-Key and Wallet Compromise

  5. Phishing and Transaction-Signing Attacks

  6. Smart-Contract Access-Control Failures

  7. Reentrancy Attacks

  8. Oracle and Price-Manipulation Attacks

  9. Flash-Loan-Assisted Attacks

  10. Logic and Accounting Vulnerabilities

  11. Cross-Chain Bridge Attacks

  12. Validator and Multisig Compromise

  13. RPC and Node Infrastructure Attacks

  14. Frontend and DNS Compromise

  15. Software Supply-Chain Attacks

  16. API and Backend Attacks

  17. Replay Attacks

  18. Signature and Message-Verification Bugs

  19. Approval and Allowance Attacks

  20. Address Poisoning

  21. MEV and Front-Running

  22. Randomness Attacks

  23. Denial-of-Service Attacks

  24. Upgradeable Contract Risks

  25. Database and Off-Chain Infrastructure Risks

  26. Insider Threats

  27. Blockchain-Specific Security Architecture

  28. Cross-Chain Security Architecture

  29. Secure Key Management

  30. Secure Development Lifecycle

  31. Monitoring and Circuit Breakers

  32. Incident Response

  33. Security Checklist

  34. Recommended Security Architecture

  35. Final Principles


1. Introduction

Blockchain systems create an unusual cybersecurity problem:

Software bugs can directly become financial transactions.

In a traditional web application, an SQL injection might expose a database.

In blockchain infrastructure, a vulnerability can cause hundreds of millions of dollars to become permanently transferable to an attacker within one transaction.

The threat is no longer limited to smart contracts. Modern blockchain platforms combine:

  • smart contracts;

  • validator nodes;

  • RPC servers;

  • APIs;

  • indexers;

  • databases;

  • wallets;

  • browser extensions;

  • frontend applications;

  • DNS;

  • CI/CD infrastructure;

  • npm packages;

  • bridges;

  • relayers;

  • signers;

  • oracles;

  • multisigs;

  • hardware wallets;

  • cloud infrastructure.

An attacker only needs one weak component.

Recent statistics make this especially important. CertiK reported more than $1.31 billion in Web3 security losses across 344 incidents during the first half of 2026, with wallet compromise the most financially destructive category.

The previous year was even more dramatic. Chainalysis estimated approximately $3.4 billion in cryptocurrency theft during 2025, while CertiK calculated approximately $3.35 billion in hack, scam and exploit losses.

The lesson is important:

Blockchain cybersecurity is infrastructure security, application security, cryptographic security and operational security combined.


2. Why Blockchain Security Is Different

Consider a normal banking system.

If an attacker modifies:

account.balance = 10,000,000

the bank may reverse the database transaction.

Blockchain transactions are fundamentally different.

A valid signed transaction might be:

Wallet A
   ↓
sign(transaction)
   ↓
broadcast
   ↓
validators accept
   ↓
block finalized
   ↓
funds transferred

Once finalized, there may be no administrator capable of reversing it.

Therefore:

Valid signature
≠
Legitimate intention

A transaction can be cryptographically valid while being:

  • socially engineered;

  • generated by malware;

  • signed through a compromised frontend;

  • authorized by a compromised signer;

  • produced by malicious software;

  • economically manipulated.

This distinction is fundamental.


3. The Modern Blockchain Attack Surface

Think of your blockchain platform as several security layers.

┌─────────────────────────────────────┐
│              USERS                  │
│ phishing / compromised devices      │
├─────────────────────────────────────┤
│             FRONTEND                │
│ JS / DNS / CDN / browser attacks    │
├─────────────────────────────────────┤
│              WALLET                 │
│ keys / signatures / approvals       │
├─────────────────────────────────────┤
│             BACKEND                 │
│ API / auth / DB / application       │
├─────────────────────────────────────┤
│              RPC                    │
│ node / provider / JSON-RPC          │
├─────────────────────────────────────┤
│          SMART CONTRACTS            │
│ logic / permissions / accounting    │
├─────────────────────────────────────┤
│          CROSS-CHAIN LAYER          │
│ bridge / relayer / validators       │
├─────────────────────────────────────┤
│            BLOCKCHAIN               │
│ consensus / validators / network    │
└─────────────────────────────────────┘

Every layer requires separate controls.


4. Private-Key and Wallet Compromise

This is one of the most catastrophic blockchain security problems.

Chainalysis found that private-key compromises represented 43.8% of stolen cryptocurrency value in 2024.

During H1 2025, CertiK calculated approximately $1.7 billion lost from wallet compromises across just 34 incidents.

And wallet compromise remained the most financially destructive category in H1 2026.

Why key theft is so dangerous

If an attacker gets:

privateKey

there may be nothing wrong with the blockchain.

The attacker simply creates:

transaction
↓
sign(privateKey)
↓
broadcast

The blockchain sees a perfectly valid signature.


Never store production keys like this

$privateKey = "0x123456...";

Never put keys into:

config.php
.env committed to Git
JavaScript
database rows
GitHub repositories
logs
email
Slack
Telegram
browser localStorage

5. Better Key Architecture

For high-value systems:

Application
     │
     │ signing request
     ▼
Signing Service
     │
     ▼
HSM / MPC / hardware signer
     │
     ▼
Digital Signature

The application receives the signature.

It never receives the private key.

Consider:

  • HSM;

  • cloud KMS;

  • hardware wallets;

  • MPC;

  • threshold signing;

  • multisig;

  • isolated signing machines.


6. Separate Wallets by Purpose

Do not operate your entire protocol from one wallet.

Use:

Treasury Multisig
Governance Multisig
Deployment Wallet
Operations Wallet
Bridge Signer
Fee Wallet
Hot Wallet
Cold Wallet
Emergency Wallet

Then impose limits.

For example:

Hot wallet maximum:
$50,000

Daily withdrawal limit: $100,000

Treasury: offline multisig

Compromise of one component should not compromise the entire protocol.

This is called reducing the:

blast radius


7. Phishing and Transaction-Signing Attacks

Phishing remains extremely common. CertiK counted phishing as the highest-frequency attack vector in H1 2025, with 132 incidents and roughly $410 million in losses.

A user might believe they are signing:

Login to Coxy Wallet

while the actual payload authorizes:

setApprovalForAll(attacker, true)

or:

Permit(attacker, unlimited)

8. Never Ask Users to Blind-Sign

A wallet should clearly display:

Network:
Cardano Mainnet

Action: Send ADA

From: addr1...

To: addr1...

Amount: 250 ADA

Fee: 0.17 ADA

For contracts:

Contract:
CoxySwap Router

Function: swapExactTokensForTokens()

Input: 100 USDC

Minimum output: 98.5 USDT

Never show:

SIGN TRANSACTION

without explaining what the user is signing.


9. Smart-Contract Access-Control Failures

OWASP currently ranks Access Control Vulnerabilities first in its 2025 Smart Contract Top 10.

Imagine:

function mint(address to, uint256 amount) public {
_mint(to, amount);
}

Anyone can call it.

An attacker could mint arbitrary tokens.

A safer architecture requires explicit permissions:

function mint(address to, uint256 amount)
external
onlyRole(MINTER_ROLE)
{
_mint(to, amount);
}

But the security question becomes:

Who controls MINTER_ROLE?

If a single hot wallet controls it, you have moved the vulnerability rather than eliminated it.


10. Privileged Operations Should Be Protected Differently

Consider:

Normal transaction
↓
user signature

Protocol configuration ↓ multisig

Contract upgrade ↓ multisig + timelock

Emergency withdrawal ↓ multisig + hardware signers

The more dangerous the operation, the stronger the authentication should become.


11. Reentrancy Attacks

Reentrancy occurs when your contract calls another contract before finishing its internal state changes.

Dangerous conceptual pattern:

function withdraw(uint amount) public {
payable(msg.sender).call{value: amount}("");

balances[msg.sender] -= amount;

}

The external contract can call withdraw() again before the balance changes.

Conceptually:

withdraw()

↓

send ETH

↓

attacker fallback()

↓

withdraw()

↓

send ETH

↓

withdraw()


12. Checks-Effects-Interactions

Prefer:

function withdraw(uint amount) external nonReentrant {
require(balances[msg.sender] >= amount);

balances[msg.sender] -= amount;

(bool ok,) = payable(msg.sender).call{value: amount}("");

require(ok);

}

Remember:

nonReentrant is useful, but correct state-machine design matters more.

Cross-function reentrancy and callback-based protocols require deeper analysis.


13. Oracle Manipulation

Suppose your lending platform obtains a token price from one DEX:

ABC/USDC pool

ABC = $10

An attacker temporarily manipulates the pool:

ABC = $100

The lending contract now believes:

1,000 ABC = $100,000

The attacker deposits 1,000 ABC and borrows excessive assets.

Once the price returns to $10:

real collateral = $10,000

borrowed assets = $80,000

Your protocol is insolvent.

OWASP ranks price-oracle manipulation second in its Smart Contract Top 10.


14. Protecting Oracles

Do not blindly use:

DEX spot price

Consider:

multiple independent oracle sources
↓
TWAP
↓
maximum deviation checks
↓
staleness checks
↓
confidence checks
↓
circuit breaker

Example:

Oracle A = $10.01
Oracle B = $10.03
TWAP     = $10.00

Reasonable.

But:

Oracle A = $10
Oracle B = $10
DEX      = $97

should trigger rejection or emergency controls.


15. Flash-Loan-Assisted Attacks

Flash loans themselves are not necessarily vulnerabilities.

They give attackers enormous temporary capital.

Conceptually:

Borrow $100M
↓
Manipulate market
↓
Trigger vulnerable protocol
↓
Extract $5M
↓
Repay $100M
↓
Keep profit

all within one blockchain transaction.

Your system should assume an attacker can temporarily control:

hundreds of millions of dollars of liquidity.

Never base security on:

"Nobody has enough money to manipulate this."

Flash liquidity may make that assumption false.


16. Logic and Accounting Vulnerabilities

These are frequently more dangerous than obvious syntax bugs.

Euler's 2023 exploit demonstrated this.

Euler explains that a function called donateToReserves lacked a required health check. The attacker manipulated their collateral state and liquidation mechanics; roughly $197 million was initially exploited, although the funds were ultimately recovered.

The lesson:

Code compiles
≠
Accounting is correct

Test invariants such as:

assets >= liabilities

total user balances <= available reserves

withdrawal must never increase collateral

liquidation cannot create value

minting cannot exceed authorization

bridge minted assets <= locked assets


17. Use Invariant Testing

Instead of merely testing:

deposit()
withdraw()

test properties such as:

for every possible operation:

totalAssets() >= userClaims()

and:

tokens minted on destination chain
<=
tokens legitimately locked or burned

Property-based fuzzing is particularly valuable here.


18. Cross-Chain Bridges

Bridges are one of the most security-sensitive pieces of blockchain infrastructure because they combine:

Chain A
+
validators/signers
+
relayers
+
off-chain software
+
cryptography
+
Chain B

A typical bridge:

Chain A

User locks 100 ETH ↓ Bridge Contract ↓ Validators observe ↓ Message signed ↓ Relayer ↓ Chain B ↓ Mint 100 wrapped ETH

The dangerous question is:

What causes Chain B to believe Chain A really received those 100 ETH?

That trust mechanism is your bridge's security model.


19. Bridge Failure Modes

An attacker may target:

validator keys
signature verification
message encoding
replay protection
relayer
source-chain finality
destination contract
governance
oracle
RPC
upgrade keys

A bug in any one can potentially cause unauthorized minting.


20. Ronin Bridge Lesson

The historical Ronin incident demonstrated how dangerous validator-key compromise can be.

Subsequent Ronin bridge architecture introduced additional defensive mechanisms including a circuit breaker for large suspicious withdrawals.

An independent bridge audit also emphasized hardware protection for governance keys, KMS protection for validator keys, governance delays and stronger controls around large withdrawals.

A bridge should therefore have:

validator threshold
+
independent signer infrastructure
+
withdrawal limits
+
rate limiting
+
timelocks
+
anomaly detection
+
emergency pause

21. Do Not Put All Validators in One Infrastructure Domain

Bad:

Validator 1 ─┐
Validator 2 ─┤
Validator 3 ─┤── same AWS account
Validator 4 ─┤
Validator 5 ─┘

One credential compromise may effectively become five compromises.

Better:

Validator 1 → AWS
Validator 2 → Azure
Validator 3 → GCP
Validator 4 → Independent operator
Validator 5 → Independent operator

with:

different credentials
different administrators
different HSMs
different networks

22. Signature Verification

One of the worst possible bugs is:

invalid signature accepted as valid

Cross-chain messages should verify at least:

source chain
destination chain
sender
receiver
nonce
message hash
amount
token
domain
signature
validator set
expiry

A conceptual message might be:

version
sourceChain
destinationChain
sourceContract
destinationContract
nonce
asset
amount
recipient
expiry

Then:

messageHash = hash(all fields)

Every security-relevant field should be cryptographically bound.


23. Replay Attacks

Suppose this message transfers 100 USDC:

Alice → Bob
100 USDC
signature = XYZ

If your protocol accepts that signed message repeatedly:

transaction 1 → 100
transaction 2 → 100
transaction 3 → 100

the attacker does not need to forge anything.

They simply replay a valid authorization.


24. Nonces

Use unique identifiers:

nonce = 928183

After processing:

processed[928183] = true

Then reject:

if processed[nonce]:
REJECT

For cross-chain operations, include:

chain ID
contract address
nonce
message type

to prevent cross-domain replay.


25. RPC Infrastructure Attacks

Developers often treat RPC as trusted infrastructure.

That is dangerous.

Your application might ask:

eth_getBalance
eth_call
eth_sendRawTransaction
getBlock
getTransactionReceipt

A compromised RPC service could potentially:

  • return false data;

  • censor requests;

  • hide transactions;

  • spoof balances;

  • provide stale state;

  • manipulate application decisions.


26. Never Let One RPC Determine Critical Truth

Instead of:

Application
↓
RPC Provider A

consider:

                ┌─ RPC A
Application ────┼─ RPC B
└─ Own Node

For security-critical information:

compare responses

If:

RPC A block = 15,300,001
RPC B block = 15,300,001
Node C block = 15,300,001

good.

If:

RPC A = different state

stop sensitive operations and investigate.


27. Frontend Compromise

Your smart contracts can be completely secure while your users still lose funds.

Imagine your frontend normally calls:

DEX Router
0xAAAA...

An attacker compromises your JavaScript bundle and changes it to:

Attacker Contract
0xBBBB...

Users voluntarily sign the malicious transaction.

The blockchain cannot know the website was compromised.


28. Frontend Security

Protect:

DNS
registrar
CDN
GitHub
CI/CD
npm
deployment credentials
cloud accounts
administration accounts

Use:

hardware security keys
MFA
branch protection
signed commits
protected deployments
dependency pinning
CSP
subresource integrity where applicable
minimal administrators
immutable/reproducible builds

29. Supply-Chain Attacks

Supply-chain compromise became extraordinarily significant in 2025. CertiK calculated approximately $1.45 billion in losses across two supply-chain incidents that year.

Attackers may target:

npm package
GitHub account
CI runner
build server
dependency maintainer
browser dependency
wallet library
SDK
Docker image
package registry

instead of attacking your protocol directly.


30. Dependency Security

Bad:

"some-library": "*"

Better:

pin dependencies
lock dependency versions
verify package provenance
review dependency diffs
scan known vulnerabilities

And never run unknown installation scripts in production infrastructure without review.


31. Address Poisoning

This increasingly targets wallet interfaces.

An attacker generates an address resembling one the victim regularly uses.

Legitimate:

0x91FA...72C8

Attacker:

0x91FA...72C8

The middle differs.

The attacker sends a tiny transaction so their address appears in transaction history.

Later the victim copies it.

Safe describes both ordinary address poisoning and more sophisticated variants targeting nested multisig interfaces.


32. Defending Against Address Poisoning

Do not encourage users to copy addresses from transaction history.

Use:

address books
verified contacts
ENS/domain verification
wallet labels
full-address verification
checksum validation
QR verification
hardware-wallet display verification

For high-value transfers:

send small test amount
↓
verify receipt
↓
send remainder

33. Token Approval Attacks

On EVM chains, users frequently grant:

approve(spender, type(uint256).max)

That effectively gives the spender broad future spending authority.

If the spender contract or controlling system becomes compromised, user funds may be drained.

Prefer:

minimum required approval

rather than unlimited approval.

Where supported, use:

time-limited permissions
single-use authorization
scoped signatures

34. MEV and Front-Running

Suppose a user submits:

Buy TOKEN at $10

A searcher sees the pending transaction.

They can potentially submit:

1. attacker buys TOKEN
2. victim buys TOKEN
3. attacker sells TOKEN

This is commonly called sandwiching.

Protect users with:

slippage limits
minimum output
transaction deadlines
private transaction submission
batch auctions
commit-reveal designs

Never allow:

minOutput = 0

for value-sensitive swaps.


35. Insecure Randomness

Do not build lotteries using predictable values such as:

block.timestamp

or trivial hashes involving block metadata.

Validators and sophisticated participants may influence or predict those values.

Use a verifiable randomness solution appropriate for the target blockchain.


36. Upgradeable Contract Attacks

Upgradeable contracts introduce powerful administrative capabilities.

Architecture:

User
↓
Proxy
↓
Implementation V1

Governance can change:

Proxy
↓
Implementation V2

But whoever controls upgrade authority could potentially deploy:

Implementation MALICIOUS

and drain protocol assets.


37. Protect Upgrades

Consider:

3-of-5 multisig
↓
24–72 hour timelock
↓
public announcement
↓
automated bytecode monitoring
↓
execute upgrade

For extremely sensitive upgrades:

larger multisig
+
independent organizations
+
longer delay

38. Backend API Security

Blockchain applications often still have traditional APIs:

/api/swap
/api/deposit
/api/withdraw
/api/user
/api/admin
/api/bridge

These remain subject to conventional attacks:

SQL injection
broken authentication
CSRF
XSS
IDOR
file upload attacks
SSRF
rate-limit bypass
command injection

OWASP's 2025 web-security list still highlights broken access control, security misconfiguration, software supply-chain failures, cryptographic failures and injection among major risks.


39. Never Trust Client-Supplied Financial State

Bad:

POST /withdraw

{ "user": 25, "balance": 10000, "amount": 9000 }

The server should never believe:

balance = 10000

because the client sent it.

Instead:

authenticate user
↓
identify account server-side
↓
retrieve authoritative state
↓
validate withdrawal
↓
construct operation

40. Database Security

Your blockchain may be decentralized while your application database is not.

The database may contain:

users
sessions
wallet mappings
transaction metadata
KYC
roles
withdrawal requests
API credentials

Use:

prepared statements
least-privilege DB accounts
encrypted backups
network isolation
audit logs
restricted administrative access
regular restore tests

Never expose database credentials through the web root.


41. Validator Compromise

Validators should not share:

SSH keys
root passwords
cloud credentials
wallet keys
HSM credentials

Architect them independently.

Example:

Validator A
└── separate account

Validator B └── separate account

Validator C └── separate account

An attacker compromising one node should not immediately gain control over the others.


42. Infrastructure Segmentation

Avoid:

Frontend
API
Database
Blockchain node
Validator
Signer

all on one server

Use security zones:

PUBLIC ZONE
Frontend

APPLICATION ZONE API

DATA ZONE Database

BLOCKCHAIN ZONE Node

SIGNING ZONE Signer/HSM

The signing zone should have the strongest controls.


43. Withdrawal Security

Do not implement:

API request
↓
immediately sign
↓
broadcast

for high-value infrastructure.

A better flow:

Withdrawal Request
↓
Authentication
↓
Risk Engine
↓
Balance Validation
↓
Address Screening
↓
Velocity Limits
↓
Transaction Simulation
↓
Policy Engine
↓
Signer
↓
Broadcast
↓
Post-transaction monitoring

44. Transaction Simulation

Before signing a critical blockchain transaction:

simulate()

Then verify:

expected asset movements
expected contract
expected recipient
expected amount
no unexpected approvals
no unexpected delegate calls

If simulation says:

Expected:
Transfer 5 ETH

Actual: Transfer 5 ETH Approve unlimited USDC

reject the transaction.


45. Circuit Breakers

Every financial protocol should consider emergency limits.

Example:

normal withdrawal:
$10k

large withdrawal: requires additional verification

$500k+: delayed

$1M+: multisig approval

Also monitor:

withdrawal velocity
TVL movement
mint rate
bridge volume
unusual wallets
oracle deviations
validator disagreement

46. Rate Limits

Suppose an exploit can steal:

$1 million per transaction

Without limits:

100 transactions

$100 million

With a system-wide withdrawal limit:

$2 million/hour

your maximum immediate damage may be dramatically reduced.

Security is not only about preventing attacks.

It is also about:

limiting how much an attacker can steal before detection.


47. Monitoring

Monitor more than server CPU usage.

Blockchain infrastructure should detect events such as:

large withdrawal
unexpected mint
new administrator
ownership change
implementation upgrade
oracle deviation
bridge validator change
permission grant
large allowance
sudden TVL movement
signer rotation
contract pause/unpause

48. Security Invariants

Define rules that should never become false.

For a bridge:

wrappedSupply <= lockedCollateral

For an exchange:

customer liabilities <= controlled assets

For a stablecoin:

minting requires authorized collateral

For tokenization:

outstanding tokenized shares
<=
authorized property shares

If an invariant fails:

ALERT
+
PAUSE SENSITIVE FUNCTIONS
+
INVESTIGATE

49. Fail Closed

Imagine your oracle becomes unavailable.

Wrong design:

oracle unavailable
→ assume price = last known price forever
→ continue lending

Better:

oracle unavailable
→ prevent risk-increasing operations

Similarly:

RPC disagreement
→ stop bridge minting

not:

RPC disagreement
→ pick whichever response arrives first

50. Principle of Least Privilege

Never give:

ADMIN

when a component only needs:

READ_PRICE

Example:

Bridge Relayer:
can relay messages

Bridge Signer: can sign messages

Bridge Governor: can configure validator set

Emergency Guardian: can pause

Treasury: controls funds

These should not automatically be the same credential.


51. Multisignature Security

A multisig is useful only if signers are genuinely independent.

Weak:

5-of-7 multisig

all keys stored on same laptop

This effectively behaves like:

1-of-1

Better:

Signer A → hardware wallet
Signer B → hardware wallet
Signer C → separate country
Signer D → independent executive
Signer E → independent security officer
Signer F → institutional custodian
Signer G → disaster recovery

52. Cross-Chain Architecture for Cardano + Ethereum + Solana + BNB Chain

For infrastructure supporting these networks, avoid building one monolithic signer.

Consider:

                   Coxy Cross-Chain Core
                       │
      ┌────────────────┼────────────────┐
      │                │                │
  Cardano          Ethereum          Solana
   Adapter           Adapter           Adapter
      │                │                │
  Cardano Node      ETH Nodes       SOL Nodes
      │                │                │
      └────────── Attestation ──────────┘
                       │
                Policy Engine
                       │
                 Threshold Signers
                       │
                   Settlement</span></code></pre><p><span>BNB Chain can similarly use its own network adapter.</span></p><p><span>The chain-specific logic should be isolated.</span></p><div><hr></div><h1><span>53. Never Assume Different Blockchains Behave the Same</span></h1><p><span>Ethereum uses account-based state.</span></p><p><span>Cardano uses extended UTXO.</span></p><p><span>Bitcoin uses UTXO.</span></p><p><span>Solana uses its own account/program model.</span></p><p><span>Security assumptions differ.</span></p><p><span>For example:</span></p><pre><code><span>Ethereum:

contract calls / approvals / nonce / gas

Cardano: UTXO selection / datum / redeemer / script validation

Solana: program accounts / signer authority / CPI

Bitcoin: UTXO ownership / script / confirmation depth

Create chain-specific threat models.


54. Cross-Chain Confirmation Policy

Do not simply observe:

transaction detected

and immediately mint assets elsewhere.

Wait for your defined finality threshold.

Conceptually:

Source transaction
↓
confirmation/finality
↓
independent RPC verification
↓
event validation
↓
validator attestation
↓
destination execution

55. Secure Smart-Contract Development Lifecycle

Before production:

Specification
↓
Threat Model
↓
Implementation
↓
Unit Tests
↓
Integration Tests
↓
Fuzzing
↓
Invariant Testing
↓
Static Analysis
↓
Independent Audit
↓
Testnet
↓
Bug Bounty
↓
Limited Mainnet Release
↓
Monitoring

An audit should not be considered the final security control.

Euler's historical incident is an important reminder that audited code can still contain exploitable logic errors.


56. Bug Bounties

Bug bounties give researchers a financial reason to report vulnerabilities rather than exploit them.

Recent Immunefi research estimated that responsible disclosures of known critical vulnerabilities substantially outnumber exploited on-chain critical vulnerabilities.

Your policy should clearly define:

in-scope contracts
domains
APIs
nodes
bridges
wallets
severity definitions
safe-harbor policy
reward levels
disclosure process

57. Production Release Strategy

Do not launch:

Day 1:
Unlimited TVL

Consider:

Phase 1
$100k limit

Phase 2 $1M limit

Phase 3 $10M limit

Phase 4 higher limits

provided monitoring and security performance remain healthy.

This converts unknown vulnerabilities from potentially catastrophic events into bounded risks.


58. Incident Response

Assume eventually something suspicious will happen.

Prepare before it does.

Your incident process might be:

DETECT
↓
CONFIRM
↓
PAUSE
↓
ISOLATE
↓
PRESERVE EVIDENCE
↓
ROTATE CREDENTIALS
↓
TRACE ASSETS
↓
PATCH
↓
TEST
↓
RESTORE
↓
POSTMORTEM

59. Emergency Contacts

Maintain an offline list containing organizational contacts such as:

security lead
smart-contract engineer
infrastructure lead
legal counsel
exchange contacts
blockchain analytics provider
auditor
cloud provider
domain registrar
wallet providers
law enforcement contact

Do not begin looking for these after hundreds of millions of dollars start moving.


60. Do Not Destroy Evidence

After compromise, preserve:

server logs
web logs
CloudTrail/audit logs
database audit logs
wallet events
CI/CD history
Git commits
DNS history
RPC logs
transaction hashes
IP addresses
authentication history

These may be critical for determining the initial attack vector.


61. Key Rotation After Compromise

If one private key becomes compromised:

changing account password

does not make that blockchain private key safe again.

A compromised blockchain key should generally be treated as permanently compromised.

Ronin similarly warns users that once a private key or recovery phrase has been exposed, it remains compromised.

Move authority to newly generated secure keys.


62. Developer Security Checklist

Before deploying blockchain infrastructure, answer these questions.

Keys

  • Are production keys stored outside application source code?

  • Are high-value keys hardware protected?

  • Are keys separated by function?

  • Are backups encrypted?

  • Is key rotation documented?

  • Are multisig signers genuinely independent?

Smart contracts

  • Is access control explicit?

  • Are all external calls reviewed?

  • Are reentrancy risks understood?

  • Are oracle assumptions documented?

  • Are integer and rounding edge cases tested?

  • Are invariants tested?

  • Are upgrade permissions protected?

  • Is replay protection implemented?

Bridges

  • Are validator keys isolated?

  • Is signature quorum appropriate?

  • Are source and destination domains signed?

  • Are nonces unique?

  • Is finality validated?

  • Are large transfers rate limited?

  • Is there an emergency pause?

  • Are multiple RPC sources available?

Wallets

  • Are transaction details human-readable?

  • Are dangerous approvals clearly identified?

  • Are full addresses verifiable?

  • Can suspicious addresses be flagged?

  • Can users revoke permissions?

Infrastructure

  • Are nodes isolated?

  • Are production servers patched?

  • Is SSH strongly authenticated?

  • Are administrative accounts protected with hardware MFA?

  • Are CI/CD credentials isolated?

  • Is DNS strongly protected?

  • Are dependency versions locked?

API

  • Is every authorization decision server-side?

  • Are prepared SQL statements used?

  • Are requests rate limited?

  • Are objects protected against IDOR?

  • Are sensitive actions separately authenticated?

Monitoring

  • Are abnormal withdrawals detected?

  • Are admin changes detected?

  • Are contract upgrades monitored?

  • Are oracle deviations monitored?

  • Are signer changes monitored?

  • Is mint/burn behavior monitored?

Response

  • Can contracts be safely paused?

  • Can compromised signers be removed?

  • Can keys be rotated quickly?

  • Are logs retained?

  • Is an incident-response procedure documented?


63. The 15 Most Important Blockchain Threats

For a developer building serious blockchain infrastructure, pay particular attention to:

Threat Primary defence
Private-key theft HSM/MPC/hardware signing
Phishing human-readable signing + strong operational security
Access-control bugs RBAC + least privilege
Smart-contract logic errors invariants + fuzzing + audits
Reentrancy safe state transitions
Oracle manipulation resilient multi-source pricing
Flash-loan exploitation robust economic assumptions
Bridge signer compromise threshold signing + isolation
Signature-validation bugs strict cryptographic validation
Replay attacks nonce + domain separation
Supply-chain compromise pinned/reviewed builds
Frontend compromise hardened DNS/CI/CD/frontend
RPC compromise independent RPC verification
Address poisoning verified address books + full-address checks
Upgrade-key compromise multisig + timelock

64. Recommended High-Security Architecture

A serious blockchain platform can be designed approximately like this:

                     USERS
                       │
                       ▼
                WAF / CDN / TLS
                       │
                       ▼
                WEB APPLICATION
                       │
                       ▼
                   API GATEWAY
                       │
         ┌─────────────┼──────────────┐
         │             │              │
     AUTH SERVICE   RISK ENGINE   BLOCKCHAIN API
         │             │              │
         │             │        ┌─────┼──────┐
         │             │        │     │      │
         │             │      RPC1  RPC2  NODE
         │             │
         │             ▼
         │        POLICY ENGINE
         │             │
         │             ▼
         │      TRANSACTION SIMULATOR
         │             │
         │             ▼
         │       SIGNING SERVICE
         │             │
         │             ▼
         │          HSM / MPC
         │
         ▼
      DATABASE

For a bridge:

CHAIN A
  │
  ├── RPC A
  ├── RPC B
  └── Own Node
       │
       ▼
 Event Verification
       │
       ▼
 Validator Network
       │
       ▼
 Threshold Attestation
       │
       ▼
 Policy Engine
       │
       ├── rate limits
       ├── replay protection
       ├── anomaly detection
       └── circuit breaker
       │
       ▼
CHAIN B

65. The Most Important Security Principle

Many developers ask:

"How do I make my blockchain impossible to hack?"

That is not the most useful engineering target.

Instead design around:

PREVENT
+
DETECT
+
LIMIT
+
CONTAIN
+
RECOVER

Ask:

If one key is compromised, what happens?

Then:

If one server is compromised, what happens?

Then:

If one RPC lies, what happens?

Then:

If one validator becomes malicious, what happens?

Then:

If the frontend is compromised, what happens?

Then:

If one smart-contract assumption fails, how much can be stolen?

The correct answer should never automatically be "everything."


66. A Useful Blockchain Security Rule

Use this rule when designing every important component:

Never allow one mistake,
one password,
one server,
one API,
one private key,
one administrator,
one validator,
one oracle,
or one smart contract
to destroy the entire system.

That principle leads naturally to:

threshold security
multisig
segmentation
limits
timelocks
multiple data sources
monitoring
circuit breakers
least privilege
independent verification

These controls form the foundation of resilient blockchain infrastructure.


67. Final Developer Mindset

Before implementing any blockchain operation involving value, ask five questions:

1. Authorization

Who is allowed to perform this operation?

2. Authenticity

How do I cryptographically prove the request is genuine?

3. Integrity

How do I know the transaction or data has not been modified?

4. Economic safety

Can an attacker manipulate the market, oracle, liquidity or accounting assumptions?

5. Blast radius

If every protection above fails, how much can the attacker steal before the system stops them?

If you can answer all five convincingly, you are beginning to design blockchain infrastructure as a security system rather than simply as an application.


Recommended next step

For infrastructure supporting Cardano, Ethereum, Solana and BNB Chain, the next cybersecurity layer should be a formal Blockchain Infrastructure Threat Model covering:

CIP-30 wallets
Cardano nodes
EVM wallets
Solana wallets
DEX contracts
cross-chain swaps
bridges
Chainflip/Changelly integrations
RPC nodes
signers
deposit addresses
withdrawals
database
PHP backend
Node.js services
API authentication
admin accounts
CI/CD
DNS
shared-hosting boundaries

Each component should then be assigned:

THREAT
↓
ATTACK VECTOR
↓
SECURITY CONTROL
↓
MONITORING RULE
↓
EMERGENCY RESPONSE

That becomes the project's working cybersecurity architecture rather than merely a security checklist.

Clone this wiki locally