iT邦幫忙

0

Day 10:安全分類 — 鏈上(On-Chain) vs 鏈下(Off-Chain)

  • 分享至 

  • xImage
  •  

上一章我們聊到「區塊鏈的不可逆性」讓錯誤代價更高,
那麼今天要進一步思考一個問題:

區塊鏈的安全問題,到底發生在哪裡?

許多人以為「安全問題=智能合約漏洞」,
但實際上,很多攻擊根本不是發生在鏈上。
要全面理解區塊鏈安全,我們必須把風險分成兩個層面:
👉 鏈上(合約層)與鏈下(基礎設施層)。

🔹 鏈上安全(On-Chain Security)

鏈上安全指的是直接運行在區塊鏈上的元件:
智能合約、Token、DeFi 協議、NFT、DAO 機制等。
這部分的風險主要來自「程式邏輯錯誤」或「不安全的交互」。

常見風險:

類別 說明
🔁 重入攻擊 (Reentrancy) 合約狀態更新前呼叫外部函數,導致重複提款
➗ 整數溢位 (Overflow / Underflow) 計算錯誤造成資金錯亂
🧾 權限錯誤 (Access Control) 缺少 onlyOwner 或誤用 msg.sender
⚙️ delegatecall 錯誤 外部邏輯覆蓋自己合約的儲存區
🎲 隨機數不安全 使用 block.timestamp 或 hash 導致可預測性
💰 經濟漏洞 錯誤激勵導致用戶能「套利」或「掏空池子」

目標思維:
• 審計合約前,先畫出 狀態圖(state flow)
• 檢查每次外部呼叫是否更新了狀態
• 保持 Checks → Effects → Interactions 順序

🧩 工具建議:Slither、MythX、Echidna、OpenZeppelin Defender

🔹 鏈下安全(Off-Chain Security)

鏈下安全涵蓋所有「非鏈上」但同樣關鍵的部分。
舉凡錢包、節點、網站、伺服器、API、前端介面、簽章機制——
這些都屬於「鏈下」領域。

常見風險:

類別 說明
🔐 私鑰洩漏 使用者端安全不足(木馬、釣魚、熱錢包外洩)
🌐 DNS / 前端攻擊 官方網站被竄改,引導使用者簽署惡意交易
🧠 Social Engineering 攻擊者假冒團隊人員索取 seed phrase
📡 節點同步攻擊 節點未驗證正確區塊資料,導致「假同步」
🧾 簽章重放 (Replay Attack) 在不同鏈重用相同簽章被竊用
🧱 後端 API 被攻破 後端伺服器或管理金鑰外洩導致批量損失

防護重點:
• 不重複使用私鑰於多個應用
• 前端簽章內容明確顯示(避免「盲簽」)
• 定期更換 RPC / 節點憑證
• 用冷錢包(Hardware Wallet)隔離高風險資金

🔹 風險層級圖示(概念架構)

使用者層(錢包、前端、操作習慣)

基礎設施層(節點、API、伺服器)

鏈上邏輯層(智能合約、協議運行)

🧠 攻擊者往往會找「最容易突破的層」,
而不一定直接攻擊鏈上。
所以完整的防禦要「橫向」思考:
從前端到鏈上,一環都不能少。

🔹 建立「安全檢查清單」思維

初學者在做安全檢查時可以用以下 checklist:

✅ 鏈上部分
• 使用 OpenZeppelin 安全模板
• 所有外部呼叫後立即更新狀態
• 沒有無限 approve
• 所有邏輯都經過至少一輪審計或工具分析

✅ 鏈下部分
• 所有私鑰保存在硬體錢包
• 網站 HTTPS + DNSSEC
• 使用 Multi-sig / Gnosis Safe 控管資金
• 前端簽章內容有顯示交易目的

區塊鏈的安全,不只是程式碼問題,而是「整體系統工程」。

就像房子再堅固,門鎖沒鎖還是能被偷。
合約再完美,若前端被駭或私鑰洩漏,結果一樣慘。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言