草庐IT

eBPF-AntiRootkit

全部标签

借助 ChatGPT 编写的 libbpf eBPF 工具开发实践教程: 通过例子学习 eBPF

这是一个基于CO-RE(一次编译,到处运行)的libbpf的eBPF的开发教程,提供了从入门到进阶的eBPF开发实践指南,包括基本概念、代码实例、实际应用等内容。我们主要提供了一些eBPF工具的案例,帮助开发者学习eBPF的开发方法和技巧。教程内容可以在目录中找到,每个目录都是一个独立的eBPF工具案例。在学习eBPF的过程中,我们受到了tutorial_bcc_python_developer的许多启发和帮助,但从2022年的角度出发,使用libbpf开发eBPF的应用是目前相对更好的选择。但目前似乎很少有基于libbpf和BPFCO-RE出发的、通过案例和工具介绍eBPF开发的教程,因此我

借助 ChatGPT 编写的 libbpf eBPF 工具开发实践教程: 通过例子学习 eBPF

这是一个基于CO-RE(一次编译,到处运行)的libbpf的eBPF的开发教程,提供了从入门到进阶的eBPF开发实践指南,包括基本概念、代码实例、实际应用等内容。我们主要提供了一些eBPF工具的案例,帮助开发者学习eBPF的开发方法和技巧。教程内容可以在目录中找到,每个目录都是一个独立的eBPF工具案例。在学习eBPF的过程中,我们受到了tutorial_bcc_python_developer的许多启发和帮助,但从2022年的角度出发,使用libbpf开发eBPF的应用是目前相对更好的选择。但目前似乎很少有基于libbpf和BPFCO-RE出发的、通过案例和工具介绍eBPF开发的教程,因此我

eBPF内核技术在滴滴云原生的落地实践

将滴滴技术设为“星标⭐️”第一时间收到文章更新导读eBPF是Linux内核革命性技术,能够安全高效地扩展内核能力,应用广泛,尤其是在云原生可观测性领域的应用已经成为行业热点。在滴滴云原生环境中,eBPF技术进行了业务实践和内源共建,HuaTuoeBPF平台快速落地并取得初步收益,目前已经支持云原生关键组件,诸如服务访问关系拓扑、容器安全、宿主机安全、网络诊断、根因定位等业务,HuaTuo也是滴滴开源委员会的精品孵化项目。希望本文为业界开发者提供一种如何将eBPF技术快速应用到云原生场景的落地方式,共同提升云原生系统深度可观测性。本文分为:1.BPF技术的前世2.BPF技术的今生3.滴滴生产环境

Cilium:基于eBPF的高效云原生网络和ServiceMesh方案

Cilium简介Cilium是一种开源的云原生网络解决方案,基于革命性的内核技术eBPF,为工作负载提供高性能、安全、可观测的网络连接。eBPF技术通过提供附加自定义程序到内核中的事件为应用程序提供超能力,Cilium项目利用eBPF的能力开发了多个程序,通过这些程序可以有效地管理容器集群。目前Clilium项目包含三个项目:Cilium、Hubble、Tetragon。解决了容器网络云面临的三大挑战:连接、可观测性、安全。Cilium最初由Isovalent创建,并于2015年开源,非常受欢迎。有14000+GitHubstar,500+贡献者,以及14000+用户注册了Cilium社区Sl

ebpf简介

目录什么是eBPFeBPF架构eBPF优势eBPF相关工具什么是eBPFeBPF是什么呢?从它的全称“扩展的伯克利数据包过滤器(ExtendedBerkeleyPacketFilter)”来看,它是一种数据包过滤技术,是从BPF(BerkeleyPacketFilter)技术扩展而来的。顾名思义BPF来源于伯克利大学,最早应用于网络数据包过滤器,它比当时最先进的抓包技术快20倍,其主要得利于它的两个设计:内核态引入一个新的虚拟机,所有指令都在内核虚拟机中运行。用户态使用BPF字节码来定义过滤表达式,然后传递给内核,由内核虚拟机解释执行。BPF提供了一种在内核事件和用户程序事件发生时安全注入代码

【权限提升】Linux Kernel ebpf 提权漏洞(CVE-2022-23222)

文章目录前言一、漏洞描述二、漏洞影响版本三、漏洞复现四、漏洞修复前言CVE-2022-23222LinuxKernelebpf权限提升漏洞一、漏洞描述eBPF(extendedBerkeleyPacketFilter)是一种可以在Linux内核中运行用户编写的程序,而不需要修改内核代码或加载内核模块的技术。简单来说eBPF让Linux内核变得可编程化了。由于内核在执行用户提供的eBPF程序前缺乏适当的验证,攻击者可以利用这个漏洞获取root权限。该漏洞是由于Linux内核的BPF验证器存在一个空指针漏洞,没有对*_OR_NULL指针类型进行限制,允许这些类型进行指针运算。攻击者可利用该漏洞在获

使用 ChatGPT ,通过自然语言编写 eBPF 程序和追踪 Linux 系统

eBPF是一项革命性的技术,起源于Linux内核,可以在操作系统的内核中运行沙盒程序。它被用来安全和有效地扩展内核的功能,而不需要改变内核的源代码或加载内核模块。今天,eBPF被广泛用于各类场景:在现代数据中心和云原生环境中,可以提供高性能的网络包处理和负载均衡;以非常低的资源开销,做到对多种细粒度指标的可观测性,帮助应用程序开发人员跟踪应用程序,为性能故障排除提供洞察力;保障应用程序和容器运行时的安全执行,等等。eBPF已经成为了一个越来越受欢迎的技术,它可以帮助我们更加高效地对内核和用户态的几乎所有应用进行追踪和分析。但是,eBPF的开发,或者追踪内核产生的各类事件,需要一定的专业知识,对

c - 通过 bpf 系统调用加载 eBPF 程序时参数列表太长

我正在尝试通过Go中的bpf系统调用加载eBPF程序,但我看到系统调用返回了一个错误。为了限制问题,我使用了以下最小的eBPF程序,它什么都不做:structtask_group{};Go程序的重要部分如下:b,err:=ioutil.ReadFile("bpf/bbf_tty.o")iferr!=nil{fmt.Print(err)}progType:=BPF_PROG_TYPE_KPROBEinsns:=unsafe.Pointer(&b)insnCnt:=len(b)lba:=struct{progTypeuint32pad0[4]byteinsnCntuint32pad1[4]

golang、ebpf 和函数持续时间

我正在玩gobpf,但在计算跟踪用户空间函数的持续时间时遇到了问题。我使用bpf_ktime_get_ns()读取时间,然后尝试计算增量,但得到了巨大的数字,尽管跟踪函数只休眠了1秒。这是经过测试的C程序,它有一个名为“ameba”的函数。#include#include#include#include#includechar*ameba(char*s1,char*s2);intmain(void){time_trawtime;structtm*timeinfo;time(&rawtime);timeinfo=localtime(&rawtime);printf("enter:%s",

linux - 如何获取 linux ebpf 程序集?

我想学习linuxebpfvm,如果我写一个ebpf程序test.c,用到llvm:clang-O2-targetbpf-otest.otest.c.如何在经典bpf中获取像tcpdump-d这样的ebpf程序集,谢谢。 最佳答案 这取决于您所说的“学习[ing]linuxebpfvm”的确切含义。语言本身如果您想了解eBPF的指令,即类汇编语言本身,您可以查看thedocumentationfromthekernel(非常密集)或bcc项目的thissummarizedversionofthesyntax。虚拟机如果您想了解eBP