Web3j 安装脚本的校验和验证:防范恶意攻击
核心要点
- 在当今的数字世界中,自动化和脚本编写对开发人员至关重要,但安全性仍然是最重要的问题。
- 安装开发人员工具的最简单方法之一是通过直接从互联网下载的脚本。
- 这可能会让攻击者获得控制权。
- 通过在脚本内部引入校验和验证以及用户手动验证校验和的能力,我们加强了整个 Web3j 生态系统的安全性。

在当今的数字世界中,自动化和脚本编写对开发人员至关重要,但安全性仍然是最重要的问题。安装开发人员工具的最简单方法之一是通过直接从互联网下载的脚本。然而,这种便利也伴随着固有的风险,尤其是在处理外部资源时。
Web3j 是一个以安全为中心的项目。它已采取措施降低运行安装程序脚本的风险。这包括防范远程代码执行 (RCE) 威胁。
问题:便利中存在风险
Web3j 提供安装脚本以使开发人员更轻松地进行安装。通常,用户可以运行以下命令来安装Web3j:
在 macOS/Linux 上:
卷曲 -L get.web3j.io |嘘
在 Windows 上:
Set-ExecutionPolicy 绕过 -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/hyperledger/web3j-installer/main/installer.ps1'))
虽然这些命令使安装变得快速、轻松,但它们引入了严重的安全漏洞:如果恶意行为者获得了在源头修改脚本的访问权限,他们就可以注入恶意代码。在不知情的情况下运行这些受感染脚本的用户可能会将其计算机暴露给远程代码执行 (RCE)。这可能会让攻击者获得控制权。
解决方案:内置校验和验证
为了解决此漏洞,我们在 Web3j 安装脚本本身中引入了 SHA256 校验和验证。这意味着用户不再需要手动验证校验和 - 脚本现在在执行之前检查其自身的完整性。这种内置验证可确保脚本自动检查其是否已被修改。这可以防止执行任何潜在的恶意代码。
手动校验和验证以提高安全性
当脚本执行自己的验证时,我们还公开提供校验和值,以便用户可以独立验证它们(如果他们愿意)。这种双层安全对于需要严格验证流程的环境至关重要。
安装脚本的校验和值存储在以下文件中:
Linux/macOS 校验和:checksum-linux.txt
:Windows 校验和:checksum-windows.txt
要手动验证校验和,您可以针对各自的操作系统运行以下命令:
对于 macOS:
sed '/^CHECKSUM_URL=/d' installer.sh | sed '/^CHECKSUM_URL=/d' installer.sh |沙苏姆-a 256 | awk '{打印$1}'
对于Linux:
sed '/^CHECKSUM_URL=/d' installer.sh | sed '/^CHECKSUM_URL=/d' installer.sh | sha256sum | sha256sum | awk '{打印$1}'
对于 Windows:
获取内容“installer.ps1”| ForEach-Object { $_ -替换 "`r", "" } | Where-Object { $_ -notmatch '^[\s]*\$ChecksumUrl' } |外弦
运行命令后,将输出哈希与 Web3j GitHub 存储库中的相应校验和文件进行比较。如果它们匹配,则脚本可以安全运行。如果没有,请避免运行脚本并立即报告问题。
为什么解决这个问题很重要
解决 RCE 风险至关重要,因为它直接影响运行 Web3j 脚本的计算机的安全性。在受感染的情况下,攻击者可以在受害者的计算机上执行任意命令。这可能会导致数据泄露、恶意软件安装或整个系统受损。
通过在脚本内实现校验和验证并提供手动验证选项,我们大大降低了执行恶意脚本的风险。这确保了 Web3j 社区保持安全。
Web3j 仍然致力于保护用户的安全。如果将来脚本有任何更改,安装程序脚本的校验和值将会更新。我们鼓励用户在运行脚本之前始终验证校验和,尤其是在下载新副本之后。
总之,虽然安装程序脚本提供了一种开始使用 Web3j 的便捷方法,但它们也存在潜在风险。通过在脚本内部引入校验和验证以及用户手动验证校验和的能力,我们加强了整个 Web3j 生态系统的安全性。用户现在可以放心地执行安装脚本,因为知道它是真实的且不会被篡改,从而保护他们的系统免受潜在的攻击。
确保安全并始终进行验证!
