已确定 APT程序包管理器中的漏洞 (CVE-2019-3462), 什么 允许攻击者发起对已安装软件包的欺骗 攻击者是控制存储库镜像还是可以破坏用户与存储库之间的传输流量(MITM攻击)。
该问题已由安全研究员Max Justicz确定,以检测APK软件包管理器(Alpine)以及Packagist,NPM和RubyGems存储库中的漏洞而闻名。
问题 这是由于对HTTP重定向处理代码中的字段进行了不正确的验证。
问题是什么?
这个漏洞 允许攻击者将自己的内容替换为HTTP会话中传输的数据 (假设数字签名足以匹配元数据和数据包大小,Debian和Ubuntu使用HTTP而非HTTPS来访问存储库。)
识别出的漏洞使攻击者拥有强大的能力 替换传输的数据包,之后APT会将其视为从官方镜像收到并开始安装过程。
通过将在安装过程中启动的脚本包含在恶意软件包中,攻击者可以在具有root特权的系统上实现其代码的执行。
为了从存储库下载数据,APT通过实现特定的传输来启动子进程,并使用简单的文本协议(用空行将命令分开)来组织与此过程的交互。
如何发现问题?
问题的实质是HTTP传输处理程序,从HTTP服务器收到标头为“ Location:”的响应后,它会请求主进程确认重定向。
完全传输此标头的内容。 由于缺少所传送特殊字符的整洁度,攻击者可以在“位置:”字段中指定换行符
由于此值将通过主要过程通过通信通道进行解码和传输,因此攻击者可以模拟来自HTTP传输处理程序的不同响应,并替换虚拟201 URI块。
例如,如果攻击者在请求数据包时替换了响应,则此替换将导致将下一个数据块传输到主进程。
将处理下载文件的哈希值计算,并且主过程只需使用签名包数据库中的哈希值检查此数据即可。
在元数据中,攻击者可以指定数据库中链接到实际已签名程序包的测试哈希值的任何值,但实际上并不与传输文件的哈希值相对应。
主进程将接受被攻击替换的响应代码,在数据库中查找哈希,并考虑加载了具有正确数字签名的数据包,尽管实际上,将具有哈希值的字段的值替换为与使用攻击的主要进程和替换后的元数据中指定的文件建立通信通道。
在传输过程中,通过将软件包附加到Release.gpg文件来下载恶意软件包。
该文件在文件系统上具有可预测的位置,并且将包附加到其启动不会影响从存储库中提取数字签名。
在获取数据时,apt禁用专门用于各种数据传输协议的辅助进程。
然后,主进程通过stdin / stdout与这些工作程序进行通信,以使用类似于HTTP的协议告诉他们要下载什么以及将其放置在文件系统上的位置。
然后,主进程将提交其配置并请求资源,工作进程将做出响应。
当HTTP服务器使用重定向进行响应时,工作进程将在103重定向处返回a而不是在201 URI处完成,并且主进程使用此响应来确定接下来要请求的资源。