CVE-2019-12735: Vim/NeoVim modeline RCE漏洞分析

Date

vim

一. 漏洞背景

Vim和Neovim是Unix类操作系统下广泛使用的文本编辑器,其中后者的开发基于前者。 Vim/Neovim中的modeline功能可以让用户在文本文件的开头或结尾使用特定代码来控制编辑器的一些行为。这个功能被限制到仅能执行特定set指令,且有沙箱隔离,但:source!指令却可以用来绕过沙箱执行命令。

  • CVE编号: CVE-2019-12735
  • 受影响版本: Vim < 8.1.1365, Neovim < 0.3.6

二. 漏洞成因

Modeline功能会将所有含表达式的语句在沙箱中执行,可能的选项包括'foldexpr', 'formatexpr', 'includeexpr', 'indentexpr', 'statusline', 'foldtext'。 Modeline的常见格式如下:

modeline

但是source命令可以用来绕过沙箱。当使用:source!命令时,vim会从指定文件读入vimscript代码并执行:

source

Vim释出的补丁patch 8.1.1365中增加了对:source!命令的沙箱环境判断,拒绝在沙箱中执行。

patch

也就是说在patch 8 …

View comments.

more ...

发大财

Date

get-rich han

lets start with profit

所有赚大钱的方法,都写在了刑法里

its more than a joke, coz its not just "yeah, illegal business generally brings you much more profit than legal business does", its also implying, that

收益越大风险越高

so true, you cant expect earning that much of profit in the open market, to earn more …

View comments.

more ...

谈谈career

banner

最近有些焦虑,开始怀疑自己可以一眼望穿的人生。我知道任何时候都可能是一个全新的起点,但我至少已经一年没有看到一个了。

时间还早,我写篇日记回顾一下自己经历的那些认知起点。

为了方便身边的人,我这次用中文。

有用的知识更重要

这是我在初中时候开始笃信的理念。今天来看这句话虽然很符合直觉,但它的负面影响也显而易见。

的确,当你需要特定的知识时,你会自然地认为,这样的学习才是有意义的,是啊,如果你根本用不上一些知识,那么专门学习它们又是为什么呢?你的家长和老师大概会告诉你,学习这些是没用,但考试要用。okay,可以这样理解,你无话可说,但是,这个理由足够让你心甘情愿地学习无用的知识么?如果答案是肯定的,那么我们的学校教育可能是非常成功的了。

我想不少人都思考过这个问题,他们大多数接受了上文给出的逻辑,或者依旧怀着愧疚继续颓废,做一个loser,或者强迫自己征服这些可能在高考之后忘得一干二净的枯燥知识,将来走上大多数人认为的成功者道路。

我属于前者,但我还是坚信,有用的知识更重要。于是我把自己认为有用的知识和技能提上日程,利用我所能得到的所有资源,去学习这些知识,其中,正如你所看见的,计算机和英语对我现在的影响最大。

后来的日子里,我时常思考我思想的正确性:有用是针对特定语境而言的,它由个人,以及其所做的事情决定。对于我 …

View comments.

more ...