我使用 vim 并有一个用于 modelines 的用例。模式行意味着 vim 将解析文本文件中的行,例如:
# vim: set someoption=somevalue
然后将设置这些选项。如果我是编写模型的人,这很棒,但它也可能打破我可以用我的文本编辑器打开不受信任的文本文件而没有伤害的假设。
假设我正在运行更新版本的 vim。假设我不介意是否有人可以设置使事情看起来很糟糕的烦人选项(例如,弄乱制表符宽度)。恶意文本文件能做什么?
谢谢!
我使用 vim 并有一个用于 modelines 的用例。模式行意味着 vim 将解析文本文件中的行,例如:
# vim: set someoption=somevalue
然后将设置这些选项。如果我是编写模型的人,这很棒,但它也可能打破我可以用我的文本编辑器打开不受信任的文本文件而没有伤害的假设。
假设我正在运行更新版本的 vim。假设我不介意是否有人可以设置使事情看起来很糟糕的烦人选项(例如,弄乱制表符宽度)。恶意文本文件能做什么?
谢谢!
尽管理论上模型不应该让你做任何坏事,但清理模型函数输入是很困难的。过去有几个安全问题允许执行任意命令或 DoS 攻击。引用我可以找到的一些过去的漏洞:
虽然我相信它们都已被修复,但新的漏洞不断出现,并且将来很可能会发现类似的漏洞,这就是发行版默认禁用模式行的原因(至少 Debian 和 SuSE 会这样做)。
由于最初的问题被标记为“攻击预防”,我将把它作为提问者的请求,以进行可用的缓解。我希望这没问题。
vim 官网提供了一个插件:securemodelines。它根据白名单的内容限制了可以从 vim 模式行执行的操作。该插件在 vim 网站上的 karma 评分是健康的,平均评分(每次下载评分)与NERD Tree插件相当。
最初的创建者 Ciaran McCreesh 博士已将开发转移到 GitHub,各种开发人员从那里分叉并根据自己的需要对其进行定制,如GitHub 网络图所示。
原始文档仍在 vim 官方网站上,如上链接。1
Vim 模式在过去有任意代码执行错误。
所以他们在过去可能会造成很多伤害。
在 6.3 中首次发现,已修复,后来发现了一些类似的漏洞。
由于风险是固有的(混合数据和代码),因此通常会为 root 禁用模式行。
据我了解,以前的错误已修复,因此除了未发布的问题外,使用现代 Vim 可以安全地打开带有模式线的不受信任的文件。