[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$ffomcwi2ixc1k":3},{"code":4,"message":5,"data":6,"timestamp":26},10000,"success",{"full_name":7,"position":8,"description":9,"language":10,"stars":11,"forks":12,"stars_gained":13,"age_days":14,"hn_threads":15,"one_liner":16,"summary_md":17,"topic":18,"github_topics":21,"license":22,"homepage":23,"updated_at":24,"history":25},"Neo23x0\u002Fprocess-watcher",25,"A process monitoring tool that tries to detect exploitation","Go",109,4,14,7,[],"用 eBPF 监控某个 Linux 服务启动了哪些子进程，用于发现漏洞利用。","一个范围很窄、需要 root 的 eBPF 代理，只盯住指定服务的进程树并记录它启动了哪些子进程。适合在已知 Linux 主机上做应急响应或加固，不是通用 EDR。\n\n## 解决什么问题\n\n假设攻击者让对外暴露的 nginx、php-fpm 或 Java 服务执行了一条命令。服务本身看起来正常，只有多出来的子进程——shell、`useradd` 或下载器——暴露了入侵。事后翻 `\u002Fproc` 会漏掉已经退出的进程，而依赖服务自身日志的检测也可能根本不触发。process-watcher 挂载 eBPF 程序，在被监控的进程树产生子进程时发出事件，于是你能看到那个短命命令及其父进程链，而不是事后拼凑。\n\n## 有什么不同\n\n关键在匹配机制：它按实际被执行文件的文件名匹配，而不是 `comm` 或 `argv[0]`，并且会跨 exec、reparent、double fork 以及根进程退出来跟踪后代，因此重新挂到 PID 1 下的命令仍能被归属到原根进程。事件可写 JSONL、UDP\u002FTCP 或 webhook；命令行参数捕获需显式开启，因为命令行可能含密钥。可选的 kill 规则能按 image、argv 或正则向匹配的子进程发信号，这是一个直接而粗暴的处置手段。\n\n代价是严格。缺少任一条件时代理会以退出码 3 停止，绝不会退回轮询 `\u002Fproc`（README 称那样会漏掉短命进程）。也就是说覆盖是二元的：主机满足条件才有数据。`check-config` 和 `print-config` 无需 root，但观测本身不行。\n\n## 谁值得试\n\n适合：安全或平台团队在已知 amd64\u002Farm64、较新内核的主机上运行某个特定服务，希望得到该服务启动子进程的轻量、可审计记录——例如 README 提到的 PHP 关键漏洞发布窗口。也适合应急响应人员只盯一个可疑服务而不是整台机器。\n\n不适合：内核较旧、只有容器环境，或服务进程树无法按镜像名锁定的主机。它也不是通用主机入侵检测系统；它只看你指定的进程树。\n\n## 使用条件与边界\n\n需要 Linux `amd64`\u002F`arm64`、内核 5.15+ 且带 BTF（`\u002Fsys\u002Fkernel\u002Fbtf\u002Fvmlinux`）。README 提醒仅看版本号不够，因为代理启动时会检查所需的具体函数和结构字段。需要 root（或 `CAP_BPF` + `CAP_PERFMON`，读取其他用户可执行文件还需 `CAP_SYS_PTRACE`，kill 规则需 `CAP_KILL`），并且必须在宿主机初始 PID namespace 中运行：它拒绝在容器内运行，内核 lockdown 为 `confidentiality` 时也无法工作。`sudo .\u002Fprocess-watcher doctor` 可检查这些条件；已测试内核见 [docs\u002Fcompatibility.md](https:\u002F\u002Fgithub.com\u002FNeo23x0\u002Fprocess-watcher\u002Fblob\u002Fmain\u002Fdocs\u002Fcompatibility.md)。\n\n日常维护也要花心思：维护监控名单和排除项、谨慎处理命令行参数捕获、先小范围验证 kill 规则。部署可用单个静态二进制或经 [packaging\u002FINSTALL.md](https:\u002F\u002Fgithub.com\u002FNeo23x0\u002Fprocess-watcher\u002Fblob\u002Fmain\u002Fpackaging\u002FINSTALL.md) 安装的 systemd 服务；发布包提供校验和与构建来源证明。\n\n## HotRepo 点评\n\nHotRepo 自 2026-10-24 开始追踪；2026-10-25 的新项目榜（不是总榜）显示 109 个总星、排名 #25——这是单次快照，不是单日增长。仅有两天记录，无法判断能否持续。采用前请确认内核能通过 `doctor`，并核实你要监控的服务真实可执行文件名与配置一致。",{"slug":19,"name":20},"security","安全",[],"GPL-3.0",null,"2026-10-25T03:18:09Z",[],1792906231]