国外网站 arstechnica 发表了一篇文章,称有黑客利用 rtorrent 的漏洞,在受害者服务器上安装挖矿工具,赚了3900美元。
这个漏洞和最近 uTorrent、Transmission 爆出的漏洞类似。rtorrent 使用了 XML-RPC 这个软件来实现 web-ui 服务,而使用 TCP sockets 方式配置的 RPC,不需要任何验证就可以执行 shell 命令。
这个漏洞比 uTorrent 和 Transmission 的更严重,因为不用像 uTorrent 那样必须和用户产生交互。
XML-RPC 的配置有两种常见的方法: TCP sockets 和 UNIX sockets
1.
- TCP sockets:
1
2httpd.conf: SCGIMount /RPC2 127.0.0.1:5000
rtorrent.rc: scgi_port = localhost:5000 - TCP sockets 方式在 Nginx 的配置:
1
2
3
4
5location /RPC2 {
scgi_pass 127.0.0.1:5000;
include scgi_vars;
scgi_var SCRIPT_NAME /RPC2;
}
2.
- UNIX sockets:
1
scgi_local = /tmp/rpc.socket
- UNIX sockets 方式在 Nginx 的配置:
1
2
3
4location /RPC2 {
include scgi_params;
scgi_pass unix:///tmp/rpc.socket;
}
其实在很早以前 rtorrent 官网的配置说明中就不推荐使用 TCP sockets 的方法,在 rtorrent 的 wiki 和 archlinux 的 wiki 也都注明了漏洞的相关警告。
但是目前网上还有很多教程在配置 Nginx 时使用的是 TCP sockets。如果你是按照网络教程安装的 rtorrent ,可检查 Nginx 或其他web服务程序的配置文件,以及观察服务器 CPU 使用率是否异常。
如果你需要把 Nginx 的 RPC 配置改成 UNIX sockets 方式,可以参考这篇文章:rTorrent + ruTorrent 安装和配置
还有一部分人可能用的是 github 上面的一键脚本 arakasi72/rtinst,这个脚本默认使用 rutorrent 的 RPC Plugin 来和 rtorrent 通信,并且启用了 Nginx 的登录验证,目前不会受到此漏洞影响。
参考资料: