linux发行版存储库的DNS欺骗

信息安全 linux 网络服务器 dns dns 欺骗 更新
2021-08-22 21:26:44

问题)

是否可以通过DNS 欺骗(例如 DNS 缓存中毒)将linux-update-repos “重定向”到恶意网站,以便在运行数据包管理器的更新功能(yum,apt-get)时安装有害软件(更新) , 等等。)?

或者这完全不现实,因为这些存储库通过证书、ssl 等得到很好的保护?

此外,如果可能的话,有没有办法保护自己免受类似的伤害?

背景

我正在考虑为我的网络服务器设置自动更新,并且(除了可能由此产生的其他问题)我不确定这是否是一个好主意,因为攻击者会有相当大的时间窗口。例如从凌晨 4 点到早上,以yum-cron的默认设置为例。

4个回答

是的,可以进行缓存中毒攻击,是的,可以保护自己。

除了使用 GPG 对包文件进行签名的相当标准做法之外,一些发行版还使用 DNSSEC 来保护为这些文件提供服务的域免受 DNS 欺骗。

请注意下面 dns 答案中的“广告”标志:

$ dig +dnssec security.debian.org.

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> +dnssec security.debian.org.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23375
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 9, AUTHORITY: 4, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;security.debian.org.           IN      A

;; ANSWER SECTION:
security.debian.org.    300     IN      A       212.211.132.250
security.debian.org.    300     IN      A       128.31.0.36
security.debian.org.    300     IN      A       128.61.240.73
security.debian.org.    300     IN      A       128.101.240.212
security.debian.org.    300     IN      A       149.20.20.6
security.debian.org.    300     IN      A       195.20.242.89
security.debian.org.    300     IN      A       200.17.202.197
security.debian.org.    300     IN      A       212.211.132.32
security.debian.org.    300     IN      RRSIG   A 8 3 300 20140827233402 20140728233402 28626 security.debian.org. AF84GPGaVSMwLsTWP0vVJpW6E9r7PL1Pi/LTxGXPUt5x1AxeW8UKJ+wh OiB6tPy91sBRA5GfNofq+P3AhsWt2JGSR/iiN9qq6p6ryU6G5gQeZbYY MYVGDzf3j2z+kUMbsB902L/fPeJzLDxyaJzHPLU8alzs+4bvvKfd4SeA +MyGrckpFkr0Csi2LtRKGA5hJPrxFcHOFeWsY+n/mjAxy8g6SSdYrKVZ 3kk5G9sR1kKSiyHwxFVaIQXR0j1skl9/

;; AUTHORITY SECTION:
security.debian.org.    28800   IN      NS      geo1.debian.org.
security.debian.org.    28800   IN      NS      geo2.debian.org.
security.debian.org.    28800   IN      NS      geo3.debian.org.
security.debian.org.    28800   IN      RRSIG   NS 8 3 28800 20140827233402 20140728233402 28626 security.debian.org. TpTt53QAgOwwH38oqkfbm4F07j78VthQCzcHezN+N0+fPu0vXiatFMAI 1CBAFkYj/rkYNfv+xhM7OfvNgWMcRoMn9v7UOtMdxUOsjO2lQCVdjMsx TRz9OITY/NZWVD0/hkNXvpBVbsFW+y0JRzEb0xegHdGYHS1A9PVwRlCT 2DJLgkL6mS+RrOfteEDZD80HZZiiQcDLf1CgG6K2s5wNUIwsAzZdFEWC XnCXAguK3PVusvvnHz1i09B9qducyd+8

;; Query time: 2370 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Jul 29 04:00:11 2014
;; MSG SIZE  rcvd: 719

默认情况下,debian(和 AFAIK 大多数其他发行版)将需要GPG 签名来匹配。

如果您想在提供包文件的域上利用 DNSSEC 保护,请在本地运行验证缓存名称服务器,例如未绑定或绑定。

简短的回答

  • 的,这是可能的,除了 gpg-checking 之外,还有几种可能的攻击
  • 为了防止获得虚假回购,我会确保对我的回购使用HTTPS,并像 Joe Sniderman 建议的那样在本地运行一个验证缓存名称服务器(DNSSEC)(迄今为止我看到的唯一可用的防止 DNS 欺骗的措施)
  • 但是,如果存储库本身被破坏,攻击的完整列表(见长答案)仍然是可能的!(请参阅下面的“如何保护自己”部分,以获取有关如何尝试防止这些情况的建议)

长答案

我发现以下论文提供了有关该主题的大量信息:包管理安全 这是来自它的攻击的简短列表。它主要处理yumapt虽然。

可能的攻击

  • 检索缓慢- DoS:攻击者减慢存储库通信速度,以便包管理器“挂起”并且不会出错或联系其他存储库以检索包更新
  • 无尽的数据- DoS / 崩溃:恶意存储库(或 MITM)返回无尽的数据流以响应任何文件请求
  • 重放旧元数据-过时的包:攻击者提供正确签名的旧元数据,导致可能安装已知有缺陷的历史版本
  • 无关依赖-任何签名包:攻击者更改包的元数据以表明它依赖于攻击者选择的一个或多个包
  • 取决于一切- DoS / Crash:攻击者更改包的元数据以表明它取决于一切
  • Unsatiable Dependencies - DoS / Outdated Package:攻击者导致包管理器忽略有效的包,因为伪造的元数据表明无法满足的依赖关系
  • 提供一切-任何签名包:攻击者更改包的元数据以表明它提供了用户请求的任何依赖项
  • 使用已撤销的密钥-任意软件包:攻击者使用已撤销的密钥让用户安装软件包
  • 特权升级-任意包:攻击者破坏了用于签署特定包组的可信密钥,然后让用户接受其他包的签名恶意版本

我想添加以下攻击,它们只是传递恶意软件包:

  • 选择前缀冲突攻击-任何包(:攻击者提供了一个恶意包,它提供与原始包相同的签名(创建起来非常昂贵;高效;以前发生过,请参阅Flame 恶意软件或对 K- 的评论哟的回答)

  • 被盗的开发者密钥-任何包:原始开发者密钥用于签署恶意包。(正如 SteveDL 所说,这可能比碰撞攻击更容易实现,具有相同的结果,并且以前也发生过)

  • 愚蠢的用户-任何软件包:不是真正的攻击,但如果您允许安装 unsigend 软件包,则上述攻击都不是必需的。攻击者可以毫不费力地在您的系统上安装几乎任何东西。

文章中有很多有趣的点,从(通常)未签名的包元数据开始,对依赖解析器的攻击,不使用 SSL 连接进行 repos 时的 MITM 攻击(可能会产生与中毒的 DNS 缓存类似的结果),如以及上面列出的可能攻击的详细描述(第 3.2 章)。

我无法阅读本文的每个部分,但以下是保护 APT / YUM 的建议列表:

如何保护自己

有几个简单的操作可以减轻许多攻击的有效性:

  1. 验证存储库通信通过检查文件大小和数据速率是否合理,APT 和 YUM 可以限制无限数据和缓慢检索攻击的有效性。
  2. 跟踪签名时间APT(和 YUM,如果它添加了元数据签名)应该拒绝接受旧版本的签名数据。这将限制重放旧元数据攻击的有效性。
  3. 使用 HTTPSHTTPS 使攻击者更难发起任何攻击,因为中间人将更难伪装成存储库。
  4. 保护镜子应非常谨慎地处理分配镜像的控制权。这将有助于防止大多数攻击,因为攻击者更难获得模拟存储库的能力。
  5. 签署元数据和包。对元数据和包进行签名会使攻击者更难发起大多数类型的攻击。
  6. 检查元数据是否正确一旦 APT 或 YUM 决定安装一个包,它应该下载该包并验证其签名以及元数据是否与存储库提供的元数据匹配。当攻击者无法正确签署包时,这将有助于防止依赖一切攻击和无关依赖攻击。

这些措施将增加发动多种攻击的难度。然而,在 APT 和 YUM 的架构中,没有办法修复密钥撤销权限升级提供一切不可满足的依赖项攻击。这意味着 APT 和 YUM 的安全架构根本不足以解决这些问题。

请随时编辑/增强这篇文章!

要回答您的问题,可以欺骗更新服务器 DNS;然后,您的数据包管理器不应该安装未签名的数据包,攻击者可能会向您发送不良数据,但您不会接受它。

大多数发行版使用OpenPGP对其更新进行签名。

例如FedoraDebian

您只需确保您的自动选项根据有效密钥验证更新(这是大多数(如果不是全部)情况下的默认行为)。

这实际上取决于您的威胁模型。如果您正在托管一些 Wikileaks 级别的文档,那可能是一个非常现实的威胁。如果它只是 Internet 上的一个临时服务器,那么在担心这种攻击之前,您只需要尽可能频繁地更新。