CrowdStrike Falcon成功拦截Git漏洞CVE-2025-48384攻击
CrowdStrike发现Git漏洞CVE-2025-48384正在被主动利用。在观察到的攻击活动中,威胁行为者将复杂的社交工程策略与恶意Git仓库克隆操作相结合。这种定向攻击链对运行未打补丁Git安装的组织构成了重大风险。
漏洞详情
CVE-2025-48384是Git中的一个配置文件解析漏洞,影响macOS和Linux操作系统。该漏洞源于Git在解析配置文件和子模块路径时对回车字符的不一致处理。
攻击者可以通过创建一个包含恶意.gitmodules文件的Git仓库来利用此漏洞,该文件包含带有尾部回车字符的子模块路径。当递归克隆仓库时(通过命令git clone --recursive),路径解析不一致允许威胁行为者实现向攻击者指定路径的任意文件写入。通过策略性地放置符号链接并利用回车字符混淆,攻击者可以将恶意内容直接写入Git子模块的hooks目录。Git随后在正常的子模块检出过程中自动执行此恶意钩子脚本,导致在受害者系统上实现任意代码执行。
野外利用分析
在分析社交工程活动和野外利用过程中,CrowdStrike识别了与CVE-2025-48384相关的以下指标:
- 使用
git clone --recursive克隆恶意仓库
- 从仓库的某个子模块执行了post-checkout钩子脚本
图1显示了执行的post-checkout钩子脚本内容,该脚本使用Python执行第一阶段恶意软件脚本hooks/vm.tf,将TAR文件提取到/tmp,然后删除子模块的文件。
CrowdStrike Falcon防护覆盖
CrowdStrike Falcon®传感器的机器学习能力和基于行为的检测能力(IOA)可以自动检测和防止利用。此外,已向客户提供CrowdStrike Falcon® Next-Gen SIEM规则模板以防护CVE-2025-48384利用。
图2显示了基于观察到的执行工件和回车字符滥用的攻击指标(IOA)检测。
图3显示,CrowdStrike® Charlotte AI™完全了解检测的上下文,为人工分析师提供以下"调查概述"步骤:
- 分析命令行执行及其上下文
- 调查进程树和相关工件以寻找可疑行为
- 关联用户活动和关于克隆仓库的权限
- 审查克隆仓库内容以寻找入侵指标(IOC)
图4显示了针对恶意Git钩子的额外IOA覆盖。
图5显示,Charlotte AI完全了解检测的上下文,可以协助人工分析师解决和修复活动。
结论
流行应用程序中的漏洞继续对全球组织构成重大威胁。Git中的这个最新漏洞也不例外,对未打补丁的用户构成了风险。
为保护终端免受此威胁,CrowdStrike Falcon® Insight XDR客户应确保启用以下防护策略设置:
Falcon Next-Gen SIEM规则模板"CrowdStrike - Endpoint - Git Arbitrary Write (CVE-2025-48384)“可供客户用于警报可疑Git活动,包括向磁盘写入可疑的"post-checkout"文件。
附录:威胁狩猎查询
以下Falcon Next-Gen SIEM高级事件搜索查询旨在协助防御者在终端上狩猎此活动和类似活动。
注意:确保将Falcon URL更新为当前配置的环境所在云(US1、US2、EU1等)
异常Git进程向hooks子文件夹写入post-checkout脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
defineTable(
query={
event_platform=Mac #event_simpleName="NewScriptWritten" FilePath="*/.git/*/hooks/" FileName="post-checkout" ContextBaseFileName="git"
},
name="git_script_write",
start=1d,
include=*
)
| event_platform=Mac #event_simpleName="ProcessRollup2"
| match(file="git_script_write", field="TargetProcessId", column="ContextProcessId")
| CommandLine=/\s[a-z,\d]{15,45}/i
| format("[GraphExplorer](https://falcon.crowdstrike.com/graphs/process-explorer/tree?id=pid:%s:%s)", field=["aid", "TargetProcessId"], as=GraphExplorer)
| groupBy([aid, GraphExplorer, TargetFileName, ImageFileName, CommandLine])
|
狩猎包含潜在回车字符的文件写入磁盘:
1
2
3
4
5
6
7
8
9
10
11
12
|
defineTable(
query={
event_platform=Mac TargetFileName="*\\u000d"
},
name="file_containing_carriage_return_char",
start=1d,
include=*
)
| event_platform=Mac #event_simpleName="ProcessRollup2"
| match(file="file_containing_carriage_return_char", field="TargetProcessId", column="ContextProcessId")
| format("[GraphExplorer](https://falcon.crowdstrike.com/graphs/process-explorer/tree?id=pid:%s:%s)", field=["aid", "TargetProcessId"], as=GraphExplorer)
| groupBy([aid, GraphExplorer, TargetFileName, ImageFileName, CommandLine])
|
Post-checkout脚本文件内容:
1
2
3
4
5
6
7
8
9
10
11
12
|
defineTable(
query={
event_platform=Mac #event_simpleName="ScriptControlScanInfo" ScriptContentName="post-checkout" ScriptContent=/hooks\/vm\.tf|hooks\/mongodb\.hook\.js/
},
name="malicious_post_checkout_contents",
start=1d,
include=*
)
| event_platform=Mac #event_simpleName="ProcessRollup2"
| match(file="malicious_post_checkout_contents", field="TargetProcessId", column="ContextProcessId")
| format("[GraphExplorer](https://falcon.crowdstrike.com/graphs/process-explorer/tree?id=pid:%s:%s)", field=["aid", "TargetProcessId"], as=GraphExplorer)
| groupBy([aid, GraphExplorer, ScriptContent, ImageFileName, CommandLine])
|