仅限会员阅读
“利用Kibana的无头Chrome:一个真实世界远程代码执行漏洞的代码详解” Aman Sharma
阅读时长约6分钟·发布于2025年12月3日
分享
当一个报表功能演变成一个远程代码执行(RCE)漏洞入口时,魔鬼往往藏在细节之中——尤其是在代码里。让我带您详细了解Kibana内置的Chromium如何与不当的沙箱配置相结合,从而打开了通向系统级攻击的大门。
免费链接 (按回车键或点击以全尺寸查看图片)
漏洞代码:一切开始的地方
在Kibana的源代码中,无头Chrome的配置位于/x-pack/plugins/reporting/server/browsers/chromium/driver_factory/args.ts。关键部分如下所示:
// 易受攻击版本的第58-60行
getArgs(options: BrowserArgs): string[] {
const args = [
// ... 其他参数
'--no-sandbox', // 👈 这是绕过安全的关键
'--disable-dev-shm-usage',
'--disable-setuid-sandbox',
];
if (options.disableSandbox) {
args.push('--no-sandbox');
args.push('--disable-setuid-sandbox');
}
return args;
}
--no-sandbox标志不仅仅是一个调试选项——它被硬编码到了Elastic Cloud的生产部署中。沙箱机制将浏览器的渲染进程与宿主系统隔离开来。没有它,渲染进程的漏洞利用就会演变为对宿主系统的攻击。
漏洞利用链:逐步代码逻辑FINISHED CSD0tFqvECLokhw9aBeRqvYTD3cAv2GUNlJNRecGo+ImnapmorFQB55yexoECFMRMmlp+/Bf5Sv6DGLZ6xvQWVPur9qIGmk8asYi5kfvs0LV9zJ95JXHHCGTOpY/8uPfA/tyPckIlFzDdbUgDbNqX59f23KEkeBGoUPzLud7BIQ=