2022云栖精选-eBPF安全特性解析

简介: 许庆伟深信服创新研究院

lQLPJxbcF2cqNBvMiM0FeLCMz4ifcSGHeANpqgFLAEAA_1400_136.png

image.png

安全是eBPF 应用中较为重要的一个特性。比如操作系统软件安网络容器场景都会应用到eBPF的安全特性。

可观测性存在冰山现象,安全也是。普通开发者或用户,平时接触的多为主机安全PC 端的安全等。PC 端或大型集群服务器业务场景非常广泛,包括异常的攻击行为异常漏洞等,其对应的检测范围也较大。主机端实现安全防护或检测,一般通过构建病毒库,然后不断地根据受到的攻击将新的病毒更新到病毒库,达到一定的阻断和防御目的但该手段无法应对近年出现的新型病毒,因此我们需要利用eBPF的能力,比如eBPF一个容器或云原生场景的白名单,白名单之外的所有异常行为都会被阻断。

image.png

安全是指一种状态,在这种状态下,某种对象或对象的某种属性不受威胁。

image.png

eBPF具有以下几个安全特性:

l  程序沙箱化:内核源代码受到保护并保持不变,eBPF程序的验证步骤会确保资源不会程序阻塞;

l  侵入性低:无需修改内核代码,也无需停下现有程序来验证效果;

l  透明化:数据都从内核中透明地收集,应用无需检测监控的状态,符合安全用例;

l  可配置:自定义乃至自动化配置策略,修改检测、阻断规则文件更快速,更新灵活性高、过滤条件丰富(进程、网络、文件等)。一般而言,检测到异常后,如果直接阻断,可能会对业务产生影响。因此,会先进行告警,然后根据严重程度决定是否阻断。

l  快速检测:在内核直接处理各种事件,使得检测异常情况更方便和快速,从性能和开销上也能获得更大的收益;

image.png

eBPF程序会被LLVM编译为eBPF字节码,eBPF字节码需要通过eBPF Verifier(静态)验证,再通过比如JIT 解析成符合要求的机器码,方能真正地运行。

因此,边界检查是eBPF Verifier的重点工作,经过验证步骤后,能够确保eBPF程序可以安全运行内核的稳定性大多与内存相关,因此eBPF 验证器主要工作也与其有一定的关联,也就需要确保以下几点:

第一,需要拥有加载 eBPF 流程所需的特权,对指令集指令数都有一定要求。安全角度来说,即使赋予程序一定的非 root 权限,部分功能可能也并没有效果。

第二,不要出现 crash 或其他异常导致系统异常或内核崩溃的情况。因为 eBPF 本身的工作内容即沙箱化无侵入、不对内核造成大的影响。

第三,程序可以正常结束,无死循环。从静态分析的角度将程序完全地运行一遍,确保无死循环

第四,检查内存越界。如果存在内存越界,则可能导致验证不通过,流程无法往下进行。

第五,检查寄存器溢出。如果存在寄存器溢出,则会导致验证流程中断。

image.png

随着云网边端的急速发展,人们的目光越发聚焦在目前最火热的云原生场景上。FalcoTraceeTetragonDatadog-agentKubeArmor是现阶段云原生场景下比较流行的几款运行时防护方案这些方案主要基于eBPF挂载内核函数并编写过滤策略,在内核层出现异常攻击时触发预置的策略,在内核层对异常攻击进行记录并发出告警,无需再返回用户层,可以直接发出告警甚至阻断

以上方案多为应用层的运行时防御方案,以进程为粒度,而阻断进程会导致业务运行受到影响。

因此,我们正在推进内核侧的eBPFLSM结合的方案,期望能够解决上述问题。该方案能够从函数调用的粒度进行阻断,在白名单内记录正常的调用路径,一旦发现白名单之外的调用行为,即可阻断此次函数调用不会影响正常的业务运行。但此类方案目前尚存在的限制,比如需要较高的内核版本。

此前,人们对安全的关注点大多集中于应用层规则的编写或安全策略的实施。而伴随着云原生的发展,我们会越来越注重于内核端,结合内核和 eBPF 的安全特性,进行防御和阻断。

安全策略可以通过 KubernetesCRD)、JSON API Open Policy AgentOPA)等系统注入

image.png

CNCF为例,上层收集到的数据,通过 agent 内核端,进行一系列的收集检测。每一个 POD 会制定规则,触发了规则之后会给予相应的措施,比如告警或阻断。


关于龙蜥峰会 eBPF & Linux 稳定性专场课件获取方式:


【PPT 课件获取】:关注微信公众号(OpenAnolis),回复“龙蜥课件” 即可获取。有任何疑问请随时咨询龙蜥助手—小龙(微信:openanolis_assis)。


【视频回放】:视频回放可前往龙蜥官网https://openanolis.cn/video 查看。


lQLPJxbcF2cqM2TM-M0CnrCgW_7LDpyh1wNpqgFKAPsA_670_248.png

相关文章
|
3天前
|
安全 生物认证 区块链
智能家居安全:从理论到实践的全面解析
【6月更文挑战第22天】本文深入探讨了智能家居安全领域的核心问题,旨在为读者提供一套完整的安全解决方案。文章首先界定了智能家居安全的重要性和面临的挑战,随后详细分析了常见的安全威胁类型,并提出了相应的防御策略。通过案例分析,本文展示了如何将理论知识应用于实际中,以增强智能家居系统的安全性。最后,文章对智能家居安全的未来趋势进行了预测,并强调了持续研究的必要性。
|
8天前
|
JavaScript 前端开发 Java
【JavaScript】ECMAS6(ES6)新特性概览(二):解构赋值、扩展与收集、class类全面解析
【JavaScript】ECMAS6(ES6)新特性概览(二):解构赋值、扩展与收集、class类全面解析
15 2
|
8天前
|
SQL 自然语言处理 前端开发
【JavaScript】ECMAS6(ES6)新特性概览(一):变量声明let与const、箭头函数、模板字面量全面解析
【JavaScript】ECMAS6(ES6)新特性概览(一):变量声明let与const、箭头函数、模板字面量全面解析
11 2
|
15天前
|
编译器 PHP 开发者
PHP 8.0 新特性解析与实践
PHP 8.0的发布带来了许多令人激动的新特性和改进,本文将深入解析PHP 8.0的一些重要特性,包括JIT编译器、命名参数、属性声明的初始化等,并结合实际案例进行详细讨论,帮助开发者更好地理解和应用这些新特性。
20 5
|
12天前
|
安全 Java API
深入解析 Java 8 新特性:LocalDate 的强大功能与实用技巧
深入解析 Java 8 新特性:LocalDate 的强大功能与实用技巧
17 1
|
1天前
|
网络协议 安全 网络安全
如何打造安全DNS以保障业务可用?一文解读
如何打造安全DNS以保障业务可用?一文解读
6 0
|
7天前
|
网络协议 安全 Linux
【内网安全】隧道技术&SSH&DNS&ICMP&SMB&上线通讯Linux&Mac
【内网安全】隧道技术&SSH&DNS&ICMP&SMB&上线通讯Linux&Mac
|
28天前
|
Java 编译器 Go
【字节跳动青训营】后端笔记整理-1 | Go语言入门指南:基础语法和常用特性解析(一)
本文主要梳理自第六届字节跳动青训营(后端组)-Go语言原理与实践第一节(王克纯老师主讲)。
47 1
|
10天前
|
SQL 自然语言处理 JavaScript
【JavaScript】ECMAS6(ES6)新特性概览(一):变量声明let与const、箭头函数、模板字面量全面解析
ES6,作为ECMAScript 2015的简称,标志着JavaScript编程语言的一个重要进化节点。它不是渐进的变化,而是一次飞跃式的更新,为开发者带来了一系列强大的新特性与语法糖,极大提升了代码的简洁性、可读性和运行效率。从新的变量声明方式let与const,到优雅的箭头函数、模板字符串,再到让对象操作更为灵活的解构赋值与增强的对象字面量,ES6的每项改进都旨在让JavaScript适应日益复杂的应用场景,同时保持其作为脚本语言的活力与魅力。本文是深入探索这些核心特性的起点,为你铺开一条通向高效、现代JavaScript编程实践
28 0
|
19天前
|
编译器 PHP 开发者
PHP 8 新特性解析:迈向更高效的编程时代
PHP 8 是一次里程碑式的更新,通过引入许多令人振奋的新特性,使得PHP语言在性能、安全性和开发体验方面都有了巨大的进步。本文将深入解析PHP 8 中的关键特性,探讨它们对于开发者和企业的意义,以及如何充分利用这些新特性来提升自己的技术水平和项目的质量。
14 0

推荐镜像

更多