Heap 堆的问题排查与建议
文章讨论了在运行 `atop` 工具时遇到的 Heap 堆问题,这些问题可能导致程序崩溃,如 `malloc(): corrupted top size` 和 `Segmentation fault` 等错误。作者认为,这些堆溢出问题可能被恶意利用,导致用户控制机器,特别是如果 `atop` 以 root 用户身份运行时。因此,建议停止运行该工具,尤其是在不清楚其安全风险的情况下,以避免潜在的安全威胁。
写作
软件,技术,系统管理员战争故事,等等。
2025年3月26日,星期三
Heap 堆的问题
好的,首先,大家都冷静一下。 每个人都慌了。 这不是解决问题的方式。
好的,那么,让我尝试一个不太恰当的比喻。 有一个日托中心,很多人把孩子送到那里。 然后有一天,有人发现他们用最锋利的材料建造了游乐场。 这不是说游乐场是 70 年代的产物,而是相对较新的。
我所做的是说“也许你不想把你的孩子送到那里”。
现在,这是一个糟糕的比喻,因为我没有详细说明。 在这种情况下,我宁愿世界有机会在它可能造成的所有后果被知晓之前关闭它。 这种事情的本质意味着这是一场竞赛,出于某种原因,我站在保护机器的一边,所以我要求人们停止运行它。
现在,首先,我不知道如何利用这种东西。 我在 90 年代经历过这种溢出问题开始出现的时候,而且我很确定,如果你能做到这一点,你就能做到更糟糕的事情。
这就是我所说的:
终端 1:
user1$ random-tool
终端 2:
user2$ atop
malloc(): corrupted top size
Aborted
...这很糟糕,对吧?
所以你稍微调整一下工具,然后再次运行...
user2$ atop
Segmentation fault
这也不是很好!
或者...怎么样...
user2$ atop
Fatal glibc error: malloc assertion failure in sysmalloc: (old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)
再说一次,这不是我的领域。 我从来没有写过 Heap 堆溢出利用程序,但简单地阅读了一下,让我想知道这些东西有利用的价值。
user1 做了一些事情... 并导致 user2 崩溃。 如果你可以让它做一些有用的事情,那么你就可以让 user2 代表你运行程序。
如果 user2 是 root 用户怎么办? 那么你就控制了这台机器。
明白了吗? 所以也许停止以 root 用户身份运行它,而且也直接停止运行它。