-
Notifications
You must be signed in to change notification settings - Fork 10
修补当前漏洞的建议 #10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
最稳妥的办法只能是仅允许高特权用户调用,所以每次要打开关闭代理都得过uac |
我觉得可以存到配置文件里。事实上,目前clash api的鉴权token就是存到配置文件里的,攻击者如果能读本地文件,他已经可以去通过clash api去操纵代理的开关了(甚至能做到更危险的事情,比如把所有流量都代理到自己手里)。在此基础上能额外控制service的启停并不构成更大的安全风险。 为了阻止提权风险,这个配置文件需要设置成管理员可写、普通用户只读,配置文件内容包括鉴权token和/start_clash的所有配置项。即:
这个方案不管怎么说都比简单检查UA要靠谱,这样也不再需要专门阻止透过代理连接到service api了(因为远程的攻击者不知道token),甚至checksum都不需要算(因为所有参数都固化到配置文件里)。 |
需要重新思考一下,Clash自带的TUN模式到底是不是必须的,因为Clash的功能特别丰富,如果必须将其以高权限执行,将来可能还会存在更大的风险。 |
关于这个问题,也可以用系统提供的IPC方式解决。目前代码中用warp开了http服务器,warp完全支持使用tcp以外的方式传输数据,只要是个异步读写流就行。Windows下面可以使用Named Pipe,Linux/MacOS可以用 Unix Domain Socket,这两种方式还都有对应系统提供的额外的访问控制。 目前的问题是GUI那边使用的reqwest库目前还不支持Named Pipe和Unix Domain Socket,这个方案的实际可行度也不高。 |
发表一些拙见,考虑不周请多担待。
问题
威胁
目标
手段
实现思路
校验和
阻止不合适的人访问daemon
未能解决的问题
The text was updated successfully, but these errors were encountered: