慢雾科技 2024年09月12日
慢雾:Toncoin 智能合约安全最佳实践
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

TON是一个由Telegram团队设计的去中心化区块链平台,其智能合约使用独特的FunC、Tact和Fift语言,因此确保其安全性至关重要。慢雾安全团队发布了『Toncoin智能合约安全最佳实践』,旨在帮助开发者更好地理解Toncoin智能合约的安全风险,并提供实用的解决方案。本文概述了该最佳实践中列出的部分内容,涵盖了常见陷阱、安全建议等,帮助开发者构建更安全可靠的智能合约。

🤔 **缺少impure修饰符:** 攻击者可能利用未标记为"impure"的"authorize"函数,导致编译器在函数无返回值或返回值未使用时跳过函数调用。建议始终确保函数使用"impure"修饰符。

⚠️ **错误使用修改/非修改方法:** 错误地使用"udict_delete_get?"方法,可能会导致字典未被修改。建议始终检查方法是否为修改/非修改方法。

🧮 **错误使用有符号/无符号整数:** 错误使用有符号整数可能导致攻击者通过发送负值获得无限投票权。建议在需要时使用无符号整数,并仅在必要时使用有符号整数。

🎲 **不安全的随机数:** 如果种子来源于交易的逻辑时间,攻击者可以通过暴力破解逻辑时间来获胜。建议在使用"rand()"之前随机化种子,并尽量避免使用链上随机数。

🔒 **在链上发送私人数据:** 所有数据都会被存储在区块链上,因此不要在链上发送私人数据,例如密码。

📨 **漏掉对退回消息的检查:** 没有处理退回消息可能会导致攻击者利用消息退回机制进行攻击。建议始终检查退回消息,并确保条件尽可能严格。

💣 **在竞争条件下销毁账户的风险:** 不要轻易销毁账户,因为并发消息可能会导致账户在资金提取后被关闭。建议使用"raw_reserve",并考虑可能的竞争条件。

🚫 **避免执行第三方代码:** 开发者无法在合约中安全地执行第三方代码,因为CATCH不能处理gas不足的问题。建议避免在合约中执行第三方代码。

🔤 **名称冲突:** Func变量和函数可能包含特殊字符,导致名称冲突。建议使用Linter工具检查代码。

🚨 **检查throw的值:** 不要使用"0"或"1"作为throw的值,因为它们会导致TVM执行意外中断。

📦 **读/写正确类型数据:** 读取意外变量的值或在错误的数据类型上调用方法可能会导致错误。建议密切跟踪代码的操作和返回值。

🔄 **合约代码可以更新:** 合约的代码可以更改,不道德的开发者可能会恶意更新代码窃取资金。建议使用治理模型或多签名批准等机制进行更改。

⏳ **交易和阶段:** 交易包含五个阶段,消息失败可能会导致对交易状态的错误假设。建议了解每个阶段的执行顺序。

📡 **不能从其他合约中拉取数据:** 合约无法按需从其他合约中拉取数据,通信是异步的。建议围绕异步消息设计合约逻辑。

🎯 **两个预定义的method_id:** 有两个预定义的method_id,建议使用"force_chain(to_address)"方法验证地址是否在正确的链上。

🔁 **使用可反弹消息:** 始终使用可反弹消息("0x18")来正确处理消息失败。

🛡️ **重放保护:** 可以使用序列号或唯一交易标识符实现重放保护。建议使用类似的方法防止重放攻击。

⏱️ **消息的竞态条件:** 消息级联可能会导致竞态条件,攻击者可能会利用时间差异操纵合约行为。建议通过验证状态预防竞态条件。

💰 **使用携带值模式:** 在代币转账中,余额应使用携带值模式进行转账。建议使用携带值模式以确保正确的值转移。

⛽ **小心退还多余的燃料费:** 如果未将多余的燃料费退还给发送者,资金可能会在合约中积累。建议添加清除多余费用的功能。

🔎 **检查函数返回值:** 始终检查函数的返回值,防止逻辑错误。

🚫 **检查假冒的Jetton代币:** 通过计算用户的jetton钱包地址,检查发送者是否发送了假冒的Jetton代币。

🔐 **使用安全的依赖项:** 使用经过安全审计的依赖项,并定期更新依赖项。

🕵️ **代码审计:** 进行代码审计,发现并修复潜在的安全漏洞。

🛡️ **安全测试:** 进行安全测试,例如模糊测试,以识别潜在的安全问题。

👮 **监控和响应:** 监控合约运行情况,及时响应安全事件。

🤝 **社区参与:** 积极参与社区,分享安全经验和最佳实践。

📚 **学习和更新:** 不断学习新的安全知识和技术,更新安全实践。

🧠 **思考和创新:** 不断思考新的安全威胁和防御措施,创新安全技术。

🚀 **安全第一:** 将安全放在首位,构建安全可靠的智能合约。

🚀 **安全发展:** 持续关注安全,推动智能合约安全发展。

🚀 **安全共赢:** 共同努力,构建安全可信的区块链生态。

🚀 **安全未来:** 安全是区块链技术发展的基石,让我们共同为安全未来而努力!

TON(The Open Network) 是一个由 Telegram 团队最初设计和开发的去中心化区块链平台,一经上线就获得了关注。TON 的目标是提供一个高性能和可扩展的区块链平台,以支持大规模的去中心化应用(DApps) 和智能合约,关于 TON 的基础知识可查阅初识 TON:账号、Token、交易与资产安全


值得注意的是,TON 与其他区块链有着截然不同的架构,TON 的智能合约除了主要使用 FunC 语言来编程,也有使用更高级的 Tact,或者更底层的 Fift。这些都是原创程度很高的语言,因此,确保智能合约的安全性很关键。


慢雾安全团队整合吸收了 TON 社区分享的安全开发实践,并结合自身多年积累的安全审计经验,发布「Toncoin 智能合约安全最佳实践」,旨在帮助开发者更好地理解 Toncoin 智能合约的安全风险,并提供实用的解决方案,以降低潜在的安全威胁。


由于篇幅限制,本文仅罗列「Toncoin 智能合约安全最佳实践」的部分内容,欢迎大家在 GitHub 上 Watch、Fork 及 Star:https://github.com/slowmist/Toncoin-Smart-Contract-Security-Best-Practices。


Toncoin 智能合约常见陷阱


1. 缺少 impure 修饰符





2. 错误使用修改/非修改方法





3. 错误使用有符号/无符号整数





4. 不安全的随机数





5. 在链上发送私人数据



6. 漏掉对退回消息的检查





7. 在竞争条件下销毁账户的风险



8. 避免执行第三方代码





9. 名称冲突



10. 检查 throw 的值





11. 读/写正确类型数据



12. 合约代码可以更新



13. 交易和阶段



14. 不能从其他合约中拉取数据





15. 两个预定义的 method_id





16. 使用可反弹消息





17. 重放保护





18. 消息的竞态条件



19. 使用携带值模式



20. 小心退还多余的燃料费



21. 检查函数返回值





22. 检查假冒的 Jetton 代币





写在最后


对开发者而言,遵循这些最佳实践,可以有效提升智能合约的安全性,减少潜在的安全风险。在区块链技术日新月异的今天,安全永远是重中之重。希望这一最佳实践可以帮助更多的开发者打造安全可靠的智能合约,推动区块链技术的健康发展。


参考链接:

[1] https://dev.to/dvlkv/drawing-conclusions-from-ton-hack-challenge-1aep

[2] https://docs.ton.org/develop/smart-contracts/security/ton-hack-challenge-1

[3] https://docs.ton.org/learn/tvm-instructions/tvm-overview

[4] https://docs.ton.org/develop/smart-contracts/messages

[5] https://docs.ton.org/develop/smart-contracts/security/secure-programming

[6] https://docs.ton.org/develop/smart-contracts/security/things-to-focus


作者 | Johan

编辑 | Lisa

排版 | Liz


慢雾导航


慢雾科技官网

https://www.slowmist.com/


慢雾区官网

https://slowmist.io/


慢雾 GitHub

https://github.com/slowmist


Telegram

https://t.me/slowmistteam


Twitter

https://twitter.com/@slowmist_team


Medium

https://medium.com/@slowmist


知识星球

https://t.zsxq.com/Q3zNvvF

?发表于:中国 中国香港

?️ 阅读原文

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Toncoin 智能合约 安全最佳实践 慢雾安全 区块链安全
相关文章