美国网络安全和基础设施安全局(CISA)近日将其 Known Exploited Vulnerabilities 目录新增了一条记录——CVE-2025-48595。这不是一个"可能被利用"的纸上漏洞,而是已被实际攻击者使用的高危缺陷。该漏洞存在于 Android 框架层,本质是整数溢出,攻击者可借此提升本地权限。CISA 的 KEV 目录只收录"正在被利用"的漏洞,一旦上榜,联邦机构必须在规定期限内修补,私营组织同样应该高度重视。
整数溢出如何变成提权通道
整数溢出听起来像是"算错了数",但在操作系统框架层面,算错一个数的后果远不止于此。Android 框架中大量使用 int、long 等固定宽度类型来表示缓冲区大小、数组索引、权限等级等关键参数。当一个本应表示"缓冲区大小"的值因溢出从正数翻转为负数或回绕到一个小值时:
- 内存分配缩水:本应分配 2GB 的缓冲区,溢出后只分配了几个字节,后续写入直接越界。
- 权限检查绕过:如果权限等级用整数比较判断,溢出后的值可能落在"已授权"区间。
- 数组越界访问:索引值溢出后指向意料之外的内存区域,读取或篡改其他进程的数据。
CVE-2025-48595 正是这类路径——本地攻击者通过精心构造的输入触发框架层整数溢出,绕过原本的权限边界,从普通应用权限跃升到更高特权级别。
CISA KEV 目录意味着什么
CISA 的 KEV 目录(Known Exploited Vulnerabilities Catalog)不是普通漏洞库。入选条件严格:必须有可靠的证据表明该漏洞正在被现实攻击者利用。上榜后:
- 联邦机构必须在 CISA 规定的截止日期前完成修补。
- 该目录已成为全球安全团队的优先修补参考——许多企业安全策略直接引用 KEV 作为"必须立即处理"的清单。
你可以实时查询这个目录。下面是一个可直接运行的 Python 脚本,拉取当前 KEV 目录并筛选出 Android/Linux 相关条目:
#!/usr/bin/env python3
"""拉取 CISA KEV 目录,筛选 Android/Linux 相关漏洞,输出优先修补清单。"""
import requests
import json
from datetime import datetime
KEV_URL = "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json"
def fetch_kev():
resp = requests.get(KEV_URL, timeout=30)
resp.raise_for_status()
return resp.json()
def filter_android_linux(vulnerabilities):
keywords = ["android", "linux", "kernel", "mobile"]
results = []
for v in vulnerabilities:
product = v.get("product", "").lower()
description = v.get("shortDescription", "").lower()
if any(k in product or k in description for k in keywords):
results.append(v)
return results
def main():
data = fetch_kev()
vulns = data.get("vulnerabilities", [])
filtered = filter_android_linux(vulns)
print(f"KEV 目录总条目: {len(vulns)}")
print(f"Android/Linux 相关条目: {len(filtered)}")
print("-" * 80)
for v in filtered:
cve = v.get("cveID", "N/A")
product = v.get("product", "N/A")
description = v.get("shortDescription", "N/A")
due_date = v.get("dueDate", "N/A")
print(f"CVE: {cve}")
print(f"产品: {product}")
print(f"描述: {description}")
print(f"修补截止: {due_date}")
print("-" * 80)
if __name__ == "__main__":
main()
运行前确保安装了 requests:
pip install requests
python3 check_kev_android_linux.py
输出会列出所有与 Android/Linux 相关且正在被利用的漏洞,包括修补截止日期,方便你排定优先级。
检查你的设备是否受影响
针对 CVE-2025-48595,实际排查分两个场景:
Android 设备
查看安全补丁级别,确认是否已包含该漏洞的修复:
# 在 Android 设备上(通过 adb shell 或终端模拟器)
getprop ro.build.version.security_patch
输出类似 2025-06-05。如果日期早于 Google 安全公告中修复该 CVE 的月份,设备仍处于风险状态。Google 每月发布 Android 安全公告,对应补丁逐步推送到各厂商——厂商延迟是最大的现实风险。
对于企业移动设备管理(MDM)场景,可以批量检查:
# 通过 adb 批量检查多台设备的安全补丁级别
for device in $(adb devices | grep -v "List" | awk '{print $1}'); do
echo -n "设备 $device 安全补丁: "
adb -s $device shell getprop ro.build.version.security_patch
done
Linux 服务器
CISA 同时警告 Linux 内核漏洞也在被利用(具体 CVE 在 KEV 目录中可查)。检查内核版本:
# 查看当前内核版本
uname -r
# 查看可用的内核更新(Debian/Ubuntu)
apt list --upgradable 2>/dev/null | grep linux-image
# 查看可用的内核更新(RHEL/CentOS)
yum check-update kernel
如果内核版本落在已知受影响区间且尚未更新,应立即安排修补窗口。
修补与缓解的实际建议
- 优先级拉满:KEV 目录中的漏洞 = 正在被打。不要排进"下季度修补计划",应在一周内处理。
- Android 的难点是厂商推送:Google 发布补丁后,各手机厂商需要适配并推送 OTA。如果你的设备厂商迟迟不推送,考虑:
- 使用 Google Pixel 系列设备(最快收到安全补丁)。
- 在 MDM 策略中强制要求最低安全补丁级别,不达标设备限制访问企业资源。
- Linux 服务器可以更快行动:内核更新通常由发行版直接推送,运维团队应建立快速内核升级的标准流程。
- 纵深防御:即使尚未修补,也可以通过以下方式降低风险:
- 限制本地应用安装来源(Android 侧禁用未知来源安装)。
- 在 Linux 服务器上启用 SELinux/AppArmor 强制访问控制,即使整数溢出触发,提权路径也会被 MAC 策略阻断。
- 网络层限制受影响设备的出站连接,缩小攻击者拿到提权后的横向移动空间。
检查 SELinux 状态并确保运行在强制模式:
# 查看 SELinux 当前模式
getenforce
# 如果返回 "Permissive" 或 "Disabled",切换到强制模式
setenforce 1
# 持久化配置(修改 /etc/selinux/config)
sed -i 's/^SELINUX=.*/SELINUX=enforcing/' /etc/selinux/config
行动清单
| 项目 | 动作 | 时间要求 |
|---|---|---|
| 查看 KEV 目录 | 运行上方脚本或访问 CISA 网站,确认所有 Android/Linux 条目 | 立即 |
| Android 设备补丁级别 | getprop ro.build.version.security_patch,比对公告月份 |
立即 |
| Linux 内核版本 | uname -r,对照受影响版本区间 |
立即 |
| 内核/框架升级 | 安装发行版推送的安全更新 | 一周内 |
| MAC 策略检查 | 确认 SELinux/AppArmor 运行在强制模式 | 一周内 |
| MDM 策略更新 | 加入最低安全补丁级别要求 | 两周内 |
整数溢出这类漏洞,表面看是"算术错误",实际是权限边界被悄然推倒。CISA 把它放进 KEV 目录,说明有人已经推倒了这扇门。你需要的不是"理解原理",而是确认自己的门还关着。