开发者如何防止前端钱包抽取攻击:BONK.fun 案例研究

发布: (2026年3月13日 GMT+8 18:40)
4 分钟阅读
原文: Dev.to

Source: Dev.to

事件概述

组件状态
智能合约未受影响
Solana 网络安全
前端网站已被入侵
团队账户未经授权的访问

只有在恶意代码部署后访问网站并批准签名请求的用户受到影响。

攻击流程

  1. 攻击者入侵了内部团队账户。
  2. 恶意代码被部署到网站。
  3. 出现了伪造的 服务条款 签名提示。
  4. 用户点击 批准 / 签名
  5. 恶意脚本执行,滥用钱包权限。
  6. 代币被转移到攻击者控制的钱包。

恶意脚本示例

// Example: how a malicious script could drain funds
const connection = new solanaWeb3.Connection(/* RPC endpoint */);
const attackerWallet = new solanaWeb3.PublicKey(/* attacker address */);

const transaction = new solanaWeb3.Transaction().add(
  solanaWeb3.SystemProgram.transfer({
    fromPubkey: wallet.publicKey,
    toPubkey: attackerWallet,
    lamports: /* amount to steal */
  })
);

const signedTx = await wallet.signTransaction(transaction);
const txid = await connection.sendRawTransaction(signedTx.serialize());

console.log("Funds transferred:", txid);

如果用户签署了交易,钱包会授权转账,从而使攻击者能够抽干资产。

根本原因

  1. 开发者账户被入侵

    • 凭证钓鱼、弱密码、API 密钥被盗、缺乏多因素认证(MFA)。
  2. 部署流水线缺乏防护

    • 缺少提交签名校验、构建验证不足、发布审批宽松。
  3. 前端完整性保护不足

    • 未使用子资源完整性(SRI)或严格的内容安全策略(CSP)。
  4. 钱包签名交互体验不安全

    • 模糊的提示隐藏了交易细节。

Web3 平台的安全架构

1. 强制多因素认证

  • 为所有特权账户使用硬件安全密钥、FIDO2 认证或基于 Passkey 的登录方式。

2. 保护 CI/CD 流水线

  • 禁止直接从用户账户进行部署。

  • 示例流水线:

    GitHub → CI Pipeline → Static Analysis → Security Scan → Production

  • 包含依赖扫描、恶意代码检测、未授权提交警报等安全检查。

3. 使用子资源完整性(SRI)

  • 为外部脚本添加 integrity 属性,使浏览器在执行前验证脚本哈希。

4. 实施严格的内容安全策略

Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; connect-src https://api.example.com;

5. 提升钱包签名透明度

  • 在提示用户签名之前,清晰展示交易信息(收款方、金额、用途)。

6. 检测可疑链上活动

if (tx.type !== "expected_action") {
  // reject unexpected transaction types
}
if (tx.amount > MAX_ALLOWED_LIMIT) {
  // flag unusually large transfers
  return true;
}

绝不允许未经验证的交易直接由前端生成。

结论

本次事件表明,Web3 的安全远不止智能合约本身。即使区块链本身安全,攻击者仍可利用前端基础设施、开发者账户以及钱包交互流程来窃取资金。为防止类似事件,Web3 团队必须采用安全的 DevOps 实践、加固前端基础设施,并设计透明的钱包交互体验。

0 浏览
Back to Blog

相关文章

阅读更多 »