http://www.7klian.com

Libra的Move IR编译器裂痕详解





我们在Move IR编译器中发明白一个裂痕,其内联注释可以伪装成可执行代码。这是因为move-IR理会器无法识别内联注释末端的一些unicode换行符。出格是代码在理会民众的 和 时,无法正确理会。别的,其他有效的unicode换行符完全被理会器忽略。


FF(十六进制的0x0C)

作为观念证明,我们此刻先容两种恶意模块案例,别离操作“裂痕”部门中描写的两种案例。此操纵中引用的所有测试文件都可以在专用存储库中找到:https://github.com/openzeppelin/move-compiler-vulnerability。


· 一个付出拆分器模块拆分部门资产并将资产转发给多方用户,但实际上大概永远不会将拆分的部门资产发送给相应的用户。


· 获取敏感数据并应用某种加密操纵来埋没它的模块(譬喻哈希或加密操纵)实际上大概永远不会应用这种操纵。


module M {. /00000010: 2f20 536f 6d65 2063 6f6d 6d65 6e74 0d20 /
字符LF,CR和CRLF是最遍及利用的换行符。可是个中一些风行的Visual Studio IDE等代码编辑器仍可以正确识别一些不太常见的换行符,譬喻NEL,LS或PS。与案例1一样,这大概导致难以检测到恶意move模块。在案例2中展示了此类示例。


· 制造资产(

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。