From: Siddharth <sdoshi@mvista.com>
To: openembedded-core@lists.openembedded.org
Cc: Siddharth Doshi <sdoshi@mvista.com>
Subject: [OE-core][wrynose][PATCHv2 4/6] vim: Security Fix for CVE-2026-47167
Date: Mon, 27 Jul 2026 11:48:15 +0530 [thread overview]
Message-ID: <20260727061817.8586-4-sdoshi@mvista.com> (raw)
In-Reply-To: <20260727061817.8586-1-sdoshi@mvista.com>
From: Siddharth Doshi <sdoshi@mvista.com>
Picking patch as per [1], and same patch is mentioned in [2]
References:
[1] https://nvd.nist.gov/vuln/detail/CVE-2026-47167
[2] https://security-tracker.debian.org/tracker/CVE-2026-47167
Signed-off-by: Siddharth Doshi <sdoshi@mvista.com>
---
.../vim/files/CVE-2026-47167.patch | 102 ++++++++++++++++++
meta/recipes-support/vim/vim.inc | 1 +
2 files changed, 103 insertions(+)
create mode 100644 meta/recipes-support/vim/files/CVE-2026-47167.patch
diff --git a/meta/recipes-support/vim/files/CVE-2026-47167.patch b/meta/recipes-support/vim/files/CVE-2026-47167.patch
new file mode 100644
index 0000000000..f9a989cf3a
--- /dev/null
+++ b/meta/recipes-support/vim/files/CVE-2026-47167.patch
@@ -0,0 +1,102 @@
+From 5eb4bd1c12801f9ffb451f22b4d459ff2b7ff962 Mon Sep 17 00:00:00 2001
+From: Christian Brabandt <cb@256bit.org>
+Date: Sun, 17 May 2026 19:39:24 +0000
+Subject: [PATCH 4/6] patch 9.2.0496: [security]: Code Injection in cucumber
+ filetype plugin
+
+Problem: [security]: Code Injection in cucumber filetype plugin
+ (Christopher Lusk)
+Solution: Use rubys Regexp.new() with the untrusted pattern
+
+Github Security Advisory:
+https://github.com/vim/vim/security/advisories/GHSA-4473-94jm-w5x9
+
+Signed-off-by: Christian Brabandt <cb@256bit.org>
+
+Upstream-Status: Backport [https://github.com/vim/vim/commit/a65a52d684bc58535ad28a4ae824d22e76399934]
+CVE: CVE-2026-47167
+Signed-off-by: Siddharth Doshi <sdoshi@mvista.com>
+---
+ runtime/ftplugin/cucumber.vim | 5 ++++-
+ src/testdir/test_filetype.vim | 30 ++++++++++++++++++++++++++++++
+ src/version.c | 2 ++
+ 3 files changed, 36 insertions(+), 1 deletion(-)
+
+diff --git a/runtime/ftplugin/cucumber.vim b/runtime/ftplugin/cucumber.vim
+index f4848d1c60..9723898d15 100644
+--- a/runtime/ftplugin/cucumber.vim
++++ b/runtime/ftplugin/cucumber.vim
+@@ -2,6 +2,8 @@
+ " Language: Cucumber
+ " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
+ " Last Change: 2016 Aug 29
++" 2026 May 26 by Vim Project: prevent Code Injection
++" https://github.com/vim/vim/security/advisories/GHSA-4473-94jm-w5x9
+
+ " Only do this when not done yet for this buffer
+ if (exists("b:did_ftplugin"))
+@@ -96,7 +98,8 @@ function! s:stepmatch(receiver,target)
+ catch
+ endtry
+ if has("ruby") && pattern !~ '\\\@<!#{'
+- ruby VIM.command("return #{if (begin; Kernel.eval('/'+VIM.evaluate('pattern')+'/'); rescue SyntaxError; end) === VIM.evaluate('a:target') then 1 else 0 end}")
++ " Use Regexp.new, so the pattern stays untrusted data and cannot inject Ruby
++ ruby VIM.command("return #{if (begin; Regexp.new(VIM.evaluate('pattern')); rescue RegexpError; end) === VIM.evaluate('a:target') then 1 else 0 end}")
+ else
+ return 0
+ endif
+diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim
+index 70e269ee63..f6956795da 100644
+--- a/src/testdir/test_filetype.vim
++++ b/src/testdir/test_filetype.vim
+@@ -3433,4 +3433,34 @@ func Test_app_file()
+ filetype off
+ endfunc
+
++func Test_cucumber_code_injection()
++ CheckFeature ruby
++ filetype plugin on
++
++ call mkdir('Xcucu/features/step_definitions', 'pR')
++ call writefile([
++ \ 'Feature: demo',
++ \ ' Scenario: trigger',
++ \ ' Given xyzzy',
++ \ ], 'Xcucu/features/test.feature')
++ let marker = getcwd() . '/Xcucu/MARKER'
++ " Malicious step: terminates the regex literal, injects Ruby system(),
++ " comments the trailing slash. With the fix, the pattern is passed to
++ " Regexp.new() instead of Kernel.eval() and the payload is inert.
++ call writefile([
++ \ 'Given /xyzzy/; system("touch ' . marker . '"); #/ do',
++ \ 'end',
++ \ ], 'Xcucu/features/step_definitions/poc.rb')
++
++ new Xcucu/features/test.feature
++ call assert_equal('cucumber', &filetype)
++ call cursor(3, 1)
++ " Triggers s:jump -> s:steps -> s:stepmatch on every discovered step,
++ " including the malicious one. Suppress preview and error messages.
++ silent! normal [d
++ call assert_false(filereadable(marker), 'Ruby injection executed')
++ bwipe!
++ filetype plugin off
++endfunc
++
+ " vim: shiftwidth=2 sts=2 expandtab
+diff --git a/src/version.c b/src/version.c
+index cf62805e44..03a520b146 100644
+--- a/src/version.c
++++ b/src/version.c
+@@ -734,6 +734,8 @@ static char *(features[]) =
+
+ static int included_patches[] =
+ { /* Add new patch number below this line */
++/**/
++ 496,
+ /**/
+ 495,
+ /**/
+--
+2.34.1
+
diff --git a/meta/recipes-support/vim/vim.inc b/meta/recipes-support/vim/vim.inc
index 8360b1622d..7a4a0bc932 100644
--- a/meta/recipes-support/vim/vim.inc
+++ b/meta/recipes-support/vim/vim.inc
@@ -26,6 +26,7 @@ SRC_URI = "git://github.com/vim/vim.git;branch=master;protocol=https;tag=v${PV}
file://CVE-2026-42307.patch \
file://CVE-2026-43961.patch \
file://CVE-2026-47162.patch \
+ file://CVE-2026-47167.patch \
"
PV .= ".0340"
--
2.34.1
next prev parent reply other threads:[~2026-07-27 6:20 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-27 6:18 [OE-core][wrynose][PATCHv2 1/6] vim: Security Fix for CVE-2026-42307 Siddharth
2026-07-27 6:18 ` [OE-core][wrynose][PATCHv2 2/6] vim: Security Fix for CVE-2026-43961 Siddharth
2026-07-27 6:18 ` [OE-core][wrynose][PATCHv2 3/6] vim: Security Fix for CVE-2026-47162 Siddharth
2026-07-27 6:18 ` Siddharth [this message]
2026-07-27 6:18 ` [OE-core][wrynose][PATCHv2 5/6] vim: Security Fix for CVE-2026-55892 Siddharth
2026-07-27 6:18 ` [OE-core][wrynose][PATCHv2 6/6] vim: Security Fix for CVE-2026-57452 Siddharth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260727061817.8586-4-sdoshi@mvista.com \
--to=sdoshi@mvista.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.