保护核心资产:LINUX内核防护
保护核心资产:LINUX内核防护
介绍
我们设计了 Vault Exploits Defense (VED) 作为各种 Linux 操作系统的基础安全层。
内核级保护长期以来一直是网络空间中最具挑战性的技术之一。HardenedVault 开创了一种创新的实现方式,实现了运行时的全面保护。其产品 Vault Exploits Defense (VED) 检测并阻止已知(Nday)和未知(0day)的 Linux 内核漏洞利用,这些漏洞利用通常具有极高的杀伤力,同时又极其难以检测。
在最近的测试中,使用 VED 在没有任何安全补丁的情况下可以保护 Linux,防御了 96% 的已公开的针对 Linux 的漏洞利用。这个结论是基于 Ubuntu 安全跟踪器、MITRE 和公共PoC/Exploits 的统计数据得出的。
问题和风险
典型的针对操作系统内核的漏洞利用包括内存污染、进程凭据窃取等。由于大多数这些漏洞利用发生在操作系统内核内部甚至以下,因此它们很难被发现和跟踪。此外,内核漏洞利用通常具有极高的杀伤力,因为它们已经位于最深层,并具有最高的操作权限。
虽然安全一直是现代操作系统内核的关键基石,但漏洞仍然存在。更糟糕的是,由于内核级别的漏洞利用往往更加强大和致命,因此此类漏洞利用已成功绕过了安全措施的内在层。
下侧的图片就是一个例子。Linux 堆中的一个漏洞将整个系统泄露给对手,直到 2021 年才被发现,而且在此期间从未被发现。
显然,目前已经存在的内核安全机制无法检测,更不用说防御这样的攻击了。虽然它们提供了很好的保护,但它们是基于已知的恶意行为的策略驱动的。为了保护系统免受这些和未来的未知威胁,需要一种新的安全机制。
解决方案
概念介绍
由于大多数内核级别的漏洞利用需要精心编写的代码才能利用一系列特定但异常的缺陷和漏洞,因此可能会分析和指纹识别这样的代码路径。类似的模式也存在于授权和内存访问领域。打个比方,就像找到一种病原体的基因序列一样,我们将其称为"内核疫苗"。
此外,VED 还设计了后漏洞利用检测,以允许自动化、策略驱动的响应威胁。例如,如果检测到未经授权的特权升级,VED 可以将系统置于锁定状态以等待应急响应团队的处理;另一个例子,将 VED 部署到已经被入侵的系统中,如果攻击者之前已经对该系统植入了rootkits,那VED也能对其检测和阻断。
VED 已经被证明可以在没有任何特定修改或策略的情况下击败许多现有的漏洞利用。因此,它很可能会击败许多未来的漏洞利用(包括尚未知道的漏洞)。虽然任何安全措施都可以被绕过,但绕过 VED 需要对不断变化的 VED 代码基进行更复杂的分析,从而导致漏洞利用的可靠性和持久性降低。
VED 还通过使用多样化的 Linux 发行版实现了多态性安全,从而导致代码路径中的细微变化,同时享受统一的 Linux 体验的好处。
VED是如何工作的
VED 是针对 Linux 内核的运行时保护解决方案,旨在防御 0day/Nday 漏洞并检测后期攻击。VED 已经开发了对利用方法的防御机制,包括:
- 特定代码路径检测(wCFI):wCFI 强制检测攻击者常用的构建 ROP 链的函数。一旦检测到 ROP 攻击,它将被阻止。
- 完整性检查:攻击者经常覆盖重要的数据结构以实现特权升级。VED 对这些数据结构进行完整性检查,如果检测到任何修改,将被阻止并发出警报。
- 自我保护能力:自我保护是安全产品的关键,因为如果被攻击,整个系统可能会面临风险。总的来说,VED 的设计思路是阻止攻击方法(利用方法)而不是单个漏洞。
- 后期攻击威胁检测和阻止。例如,如果 VED 运行在一个已经被入侵的主机上,它可以检测和阻止隐藏在系统中的 rootkit。
收益
目前,VED 可以阻止超过 96% 的已知漏洞利用。由于 VED 技术不是针对特定具有CVE编号的漏洞,因此可以推断 VED 对未知漏洞利用的阻止比例也会很高。
虽然也有一些漏洞无法防护,但目前仅占CVE数量的 < 4%。此外,由于 VED 还具有后期攻击保护功能,因此实际的影响可能会更小。
真实案例
案例 1: 云原生Kubeternes环境安全事故
环境 : 在一个拥有 HIDS、EDR、XDR、SIEM 和 SOC 的安全合规环境但对于定向攻击依然无效 事故 : 服务器被勒索软件定向攻击 解决方案 : VED提供运行时防护,免疫攻击者使用的漏洞
案例 2: Linux 服务器,以太坊验证节点
环境 : 区块链服务器、Linux 服务器,以太坊存储在冷钱包中,但验证密钥存储在 Linux 服务器上 操作 : 以太坊验证节点的私钥存储 解决方案 : VED 提供了运行时和后期攻击保护,通过阻止已经植入的 rootkit 启动来保护私钥安全。
案例 3: 边缘计算网关(ARM64)安全保护
环境 : 运行 Linux 的边缘物联网网关,连接到 PLC 和 RFID。 操作 : 搜集并处理部分数据回传到云端 解决方案 : VED 提供运行时保护,并与其他安全解决方案配合使用,包括强制访问控制、基于 Seccomp 的沙箱、防火墙策略等。
部署
VED 是一个内核模块(而非内核补丁),支持几乎所有变种的 Linux 内核和大多数发行版。有三种主要的部署模式,可以为广泛的客户群定制。
本地仓库
对于需要认证其自己的发行版的客户,我们可以帮助他们构建一个仓库服务器,在这里可以构建、认证和安装 VED。
云镜像
我们还提供来自各种发行版的云原生GNU/Linux映像,并带有Hardened Linux,因此它们是适用于任何想要高度安全的 Linux 虚拟服务器的即插即用解决方案。
直接分发
对于喜欢简单易管理的客户,HardenedVault 还提供云仓库服务,因此可以直接下载和安装 VED。与 Ansible 兼容。
现有VED交付
当前的 VED 版本是企业版的 beta 版。内核模块已经稳定,但由于所有操作都通过命令行或 API 调用进行提示,因此主要针对具有内部 Linux 管理员的客户。VED 在积极维护和不断更新,以解决任何新的威胁或修复错误。我们支持几乎所有的 Linux 发行版和相应的部署机制。代码的质量已经被世界各地的许多用户证明。
适用市场
VED可以应用于各种应用环境,特别是对于那些需要高水平安全保护和防止有针对性攻击的环境来说。
直接的行业市场
金融 、 医疗保健 或 政府 等行业可能需要保护敏感信息,以防止未经授权的访问并遭受高级攻击者使用复杂攻击技术侵犯其系统的攻击。在这些情况下,像 VED 这样的额外安全增强措施是必要的保护层,可以有效地抵御这些威胁。
关键基础设施系统或服务器
像 Web 服务器或数据库服务器这样的系统,也可能受益于额外的内核安全增强。这些系统经常成为攻击者的目标,攻击者试图破坏其运营或窃取敏感数据,并且可能需要超出基本 Linux 内核提供的安全措施的额外安全措施。
无人监督的系统
物联网系统 ,特别是在开放领域和甚至在敌对网络和物理环境中运行的系统,需要更高的安全强度来防御外部威胁。
钱包,以太坊质押节点,区块链验证节点
基于通用计算平台的 钱包 , 链下节点 以及 验证节点 的密钥都是重要资产,攻击者对于这类资产通常会精心打造从信息搜集,漏洞利用到通过rootkits进行持久化和横向移动的定向打击链条,VED不仅可以提供运行时防护,也可以针对已经被攻陷的系统的rootkits后门进行检测和阻断。
最后,普通用户也可以选择使用额外的内核安全增强措施来提高系统的整体安全性,并保护其个人数据免受未经授权的访问。这些用户通常重视安全和隐私。
结论
总之,VED是在厂商或开源提供的通用安全工具之上的必要Linux内核安全层。重要的是要了解现有的安全框架只能处理已知的安全问题,而且通常会有很大的滞后期,对于内核空间漏洞可能超过 12 个月,更不用说大部分内核漏洞非常有价值,因此永远不会被公开披露给专业的安全社区。因此,使用 VED 可以提供更高水平的安全保护,以防范已知和未知的威胁。
关于我们
HardenedVault 开发和部署全栈开源基础设施安全,包括硬件、固件、Linux 内核和安全通信协议。我们为客户提供构建自己的"赛博堡垒"的构建块,利用 0day/Nday 利用防御技术、下一代固件安全和加密技术等来保证可信/机密计算。
从每个节点(机器)的引导过程开始,多个硬件组件上锚定了信任根,然后从固件、操作系统到应用程序扩展了信任链。每个组件的关键部分遵循合规/监管同时仍然能够通过集成现代漏洞缓解技术和访问控制来防御已知和未知的漏洞和利用平面。此外,每个节点之间的通信必须保证机密性和完整性,但从高级威胁防护的角度来看,这还不够。
HardenedVault 还提供了基于离线的安全通信协议,使用零知识证明来实现元数据保护(以保护机器的隐私)和可抵赖性。这是帮助用户构建自己的去中心化数据中心/云的基石和基础。
漏洞利用平面方法的最新进展
干掉一个或者两个exploit vector(漏洞利用方法)比硬编码的防御一堆0day漏洞利用更有价值,任何一个已知或者未知(n-day/0-day)漏洞可以利用新的exploit vector重新打造漏洞利用,改头换面的数字军火会让防御体系更难以应对,所以存在于未公开的exploit vector的危险系数远高于一堆0day漏洞,VED经过数年的进化少数特性达到了介于pre-exploitation和exploitation stages之间的效果,不仅对于绕过Tetragon或者Pipe primitive这类exploit vector具备免疫能力,即使常见的漏洞利用方法也会在更早期被VED检测和阻断:
对运行时和rootkits防护有兴趣的币圈,链圈,电商圈,X圈的朋友们可以尝试AWS的安全加固镜像(集成了基础长期维护版本的VED):
对高级版有兴趣的可以邮箱联系我们。
附录1:竞品分析
比较 VED 和 GRSecurity 或其他内核安全解决方案。
安全特性 | SELinux | Apparmor | GRSecurity / PaX | LKRG | AKO | VED |
---|---|---|---|---|---|---|
强制访问控制 | YES | YES | YES | NO | NO | NO |
审计 | YES | YES | YES | Auxiliary logging | Auxiliary logging | Auxiliary logging |
兼容** LSM** | YES | YES | YES | YES | YES | YES |
降低信息泄漏 | NO | NO | YES | NO | NO | Partial |
阻断任意代码执行 | NO | NO | YES | YES | NO | YES |
用户空间访问阻断 | NO | NO | YES | YES | NO | YES |
Refcount** 溢出防护** | NO | NO | YES | NO | NO | NO |
重要数据结构和函数指针只读保护 | NO | NO | YES | YES | Partial support | YES |
自防护 | NO | NO | YES | NO | NO | YES |
重要元数据完整性检测 | NO | NO | NO | NO | NO | YES |
后漏洞利用检测和阻断 | NO | NO | NO | YES | NO | YES |
进程完整性检测 | NO | NO | NO | NO | NO | YES |
锁定模式(** APT **** 遏制)** | NO | NO | NO | NO | NO | YES |
附录2:CVE 参考测试
在我们针对易受攻击的Linux发行版内核的测试中,VED成功检测到了某些预先存在的漏洞利用:
CVE 编号 ** | NIST 描述 | 漏洞生命周期 |
---|---|---|
CVE-2014-9322 | Linux 内核中的 arch/x86/kernel/entry_64.S 在 3.17.5 之前的版本中未正确处理与堆栈段 (SS) 段寄存器相关联的故障,使得本地用户可以通过触发导致从错误空间访问 GS 基地址的 IRET 指令来提升特权。 | 2009年11月 – 2014年12月 |
CVE-2017-5123 | Linux 内核中的 waitid 存在数据验证不足的问题,缺少 " access_ok" 返回检查,允许用户逃离 Linux 沙箱。 | 2005年4月 – 2017年10月 |
CVE-2017-6074 | Linux 内核中的 dccp_rcv_state_process 函数在 LISTEN 状态下处理 DCCP_PKT_REQUEST 数据结构时存在问题,允许本地用户通过使用 IPV6_RECVPKTINFO setsockopt 系统调用的应用程序获得 root 权限或导致拒绝服务(双重释放)。 | 2006年9月 – 2017年2月 |
CVE-2021-22555 | 自Linux v2.6.19-rc1 以来影响 Linux 的堆溢出漏洞发现于 net/netfilter/x_tables.c 中,允许攻击者通过用户命名空间获得特权或导致 DoS(通过堆内存破坏)。 | 2006年9月 – 2021年4月 |
CVE-2021-3573 | Linux 内核 HCI 子系统中的 hci_sock_bound_ioctl() 函数中存在使用后释放漏洞,当用户调用 ioct HCIUNBLOCKADDR 或其他方式触发 hci_unregister_dev() 调用与 hci_sock_blacklist_add()、hci_sock_blacklist_del()、hci_get_conn_info() 或 hci_get_auth_info() 中的一种调用的竞态条件时会被触发。特权本地用户可以利用此漏洞崩溃系统或在系统上升级其特权。此漏洞影响 Linux 内核版本 5.13-rc5 之前的版本。 | 2012年2月 – 2021年5月 |
CVE-2021-33909 | Linux 内核 3.16 到 5.13.x 版本中的 fs/seq_file.c 未正确限制序列缓冲区分配,导致整数溢出、越界写入和由非特权用户升级为 root 用户,即 CID-8cae8cd89f05。 | 2014年7月 – 2021年7月 |
CVE- 2021-34866 | 此漏洞允许本地攻击者升级 Linux Kernel 5.14-rc3 上的权限。攻击者必须首先获得在目标系统上执行低特权代码的能力,以利用此漏洞。具体问题存在于 eBPF 程序的处理中。此问题源于未对用户提供的 eBPF 程序进行适当验证,可能导致类型混淆条件。攻击者可以利用此漏洞在内核上下文中升级特权并执行任意代码。该漏洞编号为 ZDI-CAN-14689。 | 2020年6月 – 2021年8月 |
CVE-2021-43267 | 在 Linux 内核之前的 5.14.16 版本中,在 net/tipc/crypto.c 中发现了一个问题。透明进程间通信 (TIPC) 功能允许远程攻击者利用 MSG_CRYPTO 消息类型的用户提供的大小验证不足。 | 2016年10月 – 2022年2月 |
CVE-2021-42008 | 在 Linux 内核 5.13.13 之前的版本中,drivers/net/hamradio/6pack.c 中的 decode_data 函数存在一个 slab 越界写入漏洞。具有 CAP_NET_ADMIN 能力的进程输入可以导致 root 访问。 | 2005年4月 – 2021年8月 |
CVE-2022-0185 | 在 Linux 内核的 Filesystem Context 功能中发现了一个基于堆的缓冲区溢出漏洞,影响的是 legacy_parse_param 函数在验证提供的参数长度时的方式。一个非特权用户(如果启用了非特权用户命名空间,否则需要命名空间 CAP_SYS_ADMIN 特权)能够打开一个不支持 Filesystem Context API 的文件系统(因此回退到遗留处理),利用此漏洞可以在系统上升级其特权。 | 2019年2月 – 2022年1月 |
CVE-2022- 0492 | 在 Linux 内核的 kernel/cgroup/cgroup-v1.c 函数中发现了一个漏洞,即 cgroup_release_agent_write。在特定情况下,此漏洞允许使用 cgroups v1 release_agent 功能升级特权并出乎意料地绕过命名空间隔离。 | 2016年12月 – 2022年1月 |
CVE-2022-25636 | Linux 内核 5.4 到 5.6.10 版本中的 net/netfilter/nf_dup_netdev.c 允许本地用户通过堆溢出写入获得特权。这与 nf_tables_offload 有关。 | 2019年9月 – 2022年2月 |
CVE-2022-1015 | 在 netfilter 子系统的 linux/net/netfilter/nf_tables_api.c 中发现了 Linux 内核中的漏洞,允许本地用户引起越界写入问题。 | 2013年10月 – 2022年3月 |
CVE-2022-1016 | 在 net/netfilter/nf_tables_core.c:nft_do_chain 中发现了 Linux 内核的漏洞,可能导致使用后释放问题。此问题需要使用适当的前提条件处理"返回",因为它可能会导致由本地非特权攻击者引起的内核信息泄漏问题。 | 2021年1月 – 2022年3月 |
在未公开的0day漏洞样本上进行的其他测试也显示出了成功的检测和阻止。在误报/漏报方面,VED 有一个漏报案例,即它无法检测以下漏洞利用:
CVE 编号 | NIST 描述 |
---|---|
CVE-2016-5195 | 这个漏洞利用是"Dirty COW",发生在 Linux 内核 2.x 到 4.x 的 mm/gup.c 中的竞态条件问题。该问题存在于对写时复制(COW)特性的不正确处理中,使得本地用户可以写入只读内存映射,从而升级特权。这个漏洞利用已经在2016年10月被发现并被利用。 |
这是因为它们直接针对用户空间,即使是通过内核进行操作。在 Dirty COW 漏洞利用方面,VED 的"绕过"是由于漏洞的本质和利用方法导致的,这也是未来漏洞利用绕过 VED 的一种方式,即类似地直接针对用户空间。
到目前为止,VED还没有出现误报的情况。
附录3:参考资料
Some of recent cases demonstrating the importance of true kernel level security.
This sneaky ransomware is now targeting Linux servers, too
https://www.zdnet.com/article/this-sneaky-ransomware-is-now-targeting-linux-servers-too/
Anatomy of a Linux Ransomware Attack
https://linuxsecurity.com/features/anatomy-of-a-linux-ransomware-attack
New Linux malware combines unusual stealth with a full suite of capabilities
Linux malware is on the rise—6 types of attacks to look for
CVE-2022-1015/CVE-2022-1015-1016
https://blog.dbouman.nl/2022/04/02/How-The-Tables-Have-Turned-CVE-2022-1015-1016
CVE-2022-25636 https://github.com/Bonfee/CVE-2022-25636
CVE-2022-0492
https://thehackernews.com/2022/03/new-linux-kernel-cgroups-vulnerability.html
https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/
CVE-2022-0185 - Winning a $31337 Bounty after Pwning Ubuntu and Escaping Google’s KCTF Containers
https://www.willsroot.io/2022/01/cve-2022-0185.html
CVE-2021-42008 Exploiting A 16-Year-Old Vulnerability In The Linux 6pack Driver
https://syst3mfailure.io/sixpack-slab-out-of-bounds
Exploiting CVE-2021-43267 https://haxx.in/posts/pwning-tipc/
CVE-2021-34866 Writeup - 202111 https://blog.hexrabbit.io/2021/11/03/CVE-2021-34866-writeup/
V5.11 https://ctftime.org/writeup/30589
The Art of Exploiting UAF by Ret2bpf in Android Kernel
Kernel Pwning with eBPF: a Love Story (CVE-2021-3490)
https://www.graplsecurity.com/post/kernel-pwning-with-ebpf-a-love-story
Sequoia: A deep root in Linux’s filesystem layer (CVE-2021-33909)
https://www.qualys.com/2021/07/20/cve-2021-33909/sequoia-local-privilege-escalation-linux.txt
https://www.qualys.com/2021/07/20/cve-2021-33909/cve-2021-33909-exploit.tar.gz
CVE-2021-22555: Turning \x00\x00 into 10000$
https://google.github.io/security-research/pocs/linux/cve-2021-22555/writeup.html
Blue Klotski (CVE-2021-3573) and the story for fixing
https://f0rm2l1n.github.io/2021-07-23-Blue-Klotski/
Four Bytes of Power: Exploiting CVE-2021-26708 in the Linux kernel
https://a13xp0p0v.github.io/2021/02/09/CVE-2021-26708.html
Exploiting CVE-2021-26708 (Linux kernel) with sshd
https://hardenedvault.net/blog/2022-03-01-poc-cve-2021-26708/
CVE-2021-26708
https://github.com/jordan9001/vsock_poc
CVE-2021–20226 a reference counting bug which leads to local privilege escalation in io_uring https://flattsecurity.medium.com/cve-2021-20226-a-reference-counting-bug-which-leads-to-local-privilege-escalation-in-io-uring-e946bd69177a