Closed thelastlin closed 4 months ago
可是這樣的話簽名就是個擺設了,思考一下 會有安全隱患嗎,比如用戶放了一個不安全的插件進去 以前插件是和librime綑綁的,換插件比較麻煩要連著librime一起換,現在可以單獨換插件,還是可能有很多人去加插件的 有沒有啥能兼顧一點安全的辦法
會有安全隱患嗎,比如用戶放了一個不安全的插件進去
输入法位于 /Library/Input\ Methods/
,这一目录默认是只有root用户可修改。
如果用户将插件放到/Library/Input Methods/Squirrel.app/Contents/Frameworks/rime-plugins
中的话,那可以认为具有管理员权限的用户一定授权了这一行为,应对此行为负责。
对于安全隐患,OpenSSH先前出现过一个类似的问题:CVE-2023-38408。
有沒有啥能兼顧一點安全的辦法
也许确实没有。
作为参考,Apple在随Mac OS X自带的OpenSSH和sudo中带有一个类似的私有entitlement:com.apple.private.security.clear-library-validation
,它们会在dlopen
失败时禁用library的签名验证,对应的代码及文章说明可参见 apple-oss-distributions/OpenSSH 及 https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/ 。
如果想要强化安全性的话,似乎可以考虑修改librime
,只允许加载指定目录中的插件,并且在插件加载前先检查插件的所有者、权限和ACL,若非root用户具有写权限时则拒绝加载。
升级之后lua require so也会报签名错误,求助怎么解决
需要用第三方庫的先別升級,或者有能力的自己簽名吧,過不久再發一版,只是沒想好是否分成兩個版本,一般用戶就用安全版,想折騰的用戶去用不驗證動態庫的版本並自行承擔風險
问题表现
Squirrel 0.18 无法使用自行编译的插件。在尝试加载自行编译的插件时,
dlopen
会给出错误:自行重新编译或对原有的binary重新进行签名可避免此错误。
可能解决方案
com.apple.security.cs.disable-library-validation
,参考:https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_disable-library-validation 。