All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] vim: fix CVE-2021-3778
@ 2021-09-27 10:44 Minjae Kim
  2021-09-27 23:08 ` [OE-core] " Richard Purdie
  0 siblings, 1 reply; 5+ messages in thread
From: Minjae Kim @ 2021-09-27 10:44 UTC (permalink / raw)
  To: openembedded-core; +Cc: Minjae Kim

vim is vulnerable to Heap-based Buffer Overflow

reference:
https://github.com/vim/vim/commit/65b605665997fad54ef39a93199e305af2fe4d7f
---
 .../vim/files/CVE-2021-3778.patch             | 49 +++++++++++++++++++
 meta/recipes-support/vim/vim.inc              |  1 +
 2 files changed, 50 insertions(+)
 create mode 100644 meta/recipes-support/vim/files/CVE-2021-3778.patch

diff --git a/meta/recipes-support/vim/files/CVE-2021-3778.patch b/meta/recipes-support/vim/files/CVE-2021-3778.patch
new file mode 100644
index 0000000000..9cb61a6ac7
--- /dev/null
+++ b/meta/recipes-support/vim/files/CVE-2021-3778.patch
@@ -0,0 +1,49 @@
+From eb41373c8c88b0789e5cf04669d6116f9a199264 Mon Sep 17 00:00:00 2001
+From: Minjae Kim <flowergom@gmail.com>
+Date: Sun, 26 Sep 2021 23:48:00 +0000
+Subject: [PATCH] patch 8.2.3409: reading beyond end of line with invalid utf-8
+ character
+
+Problem: Reading beyond end of line with invalid utf-8 character.
+Solution: Check for NUL when advancing.
+
+Upstream-Status: Accepted [https://github.com/vim/vim/commit/65b605665997fad54ef39a93199e305af2fe4d7f]
+CVE: CVE-2021-3778
+Signed-off-by: Minjae Kim <flowergom@gmail.com>
+---
+ src/regexp_nfa.c                 | 3 ++-
+ src/testdir/test_regexp_utf8.vim | 7 +++++++
+ 2 files changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c
+index fb512f961..4d337f1f1 100644
+--- a/src/regexp_nfa.c
++++ b/src/regexp_nfa.c
+@@ -5455,7 +5455,8 @@ find_match_text(colnr_T startcol, int regstart, char_u *match_text)
+               match = FALSE;
+               break;
+           }
+-          len2 += MB_CHAR2LEN(c2);
++          len2 += enc_utf8 ? utf_ptr2len(rex.line + col + len2)
++                                                           : MB_CHAR2LEN(c2);
+       }
+       if (match
+               // check that no composing char follows
+diff --git a/src/testdir/test_regexp_utf8.vim b/src/testdir/test_regexp_utf8.vim
+index 19ff882be..e0665818b 100644
+--- a/src/testdir/test_regexp_utf8.vim
++++ b/src/testdir/test_regexp_utf8.vim
+@@ -215,3 +215,10 @@ func Test_optmatch_toolong()
+   set re=0
+ endfunc
+ 
++func Test_match_invalid_byte()
++  call writefile(0z630a.765d30aa0a.2e0a.790a.4030, 'Xinvalid')
++  new
++  source Xinvalid
++  bwipe!
++  call delete('Xinvalid')
++endfunc
+-- 
+2.17.1
+
diff --git a/meta/recipes-support/vim/vim.inc b/meta/recipes-support/vim/vim.inc
index 7e9225fbcb..db1e9caf4d 100644
--- a/meta/recipes-support/vim/vim.inc
+++ b/meta/recipes-support/vim/vim.inc
@@ -18,6 +18,7 @@ SRC_URI = "git://github.com/vim/vim.git \
            file://no-path-adjust.patch \
            file://racefix.patch \
            file://b7081e135a16091c93f6f5f7525a5c58fb7ca9f9.patch \
+          file://CVE-2021-3778.patch \
 "
 
 SRCREV = "98056533b96b6b5d8849641de93185dd7bcadc44"
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [OE-core] [PATCH] vim: fix CVE-2021-3778
  2021-09-27 10:44 [PATCH] vim: fix CVE-2021-3778 Minjae Kim
@ 2021-09-27 23:08 ` Richard Purdie
  2021-09-28  6:58   ` Minjae Kim
  0 siblings, 1 reply; 5+ messages in thread
From: Richard Purdie @ 2021-09-27 23:08 UTC (permalink / raw)
  To: Minjae Kim, openembedded-core

On Mon, 2021-09-27 at 19:44 +0900, Minjae Kim wrote:
> vim is vulnerable to Heap-based Buffer Overflow
> 
> reference:
> https://github.com/vim/vim/commit/65b605665997fad54ef39a93199e305af2fe4d7f
> ---
>  .../vim/files/CVE-2021-3778.patch             | 49 +++++++++++++++++++
>  meta/recipes-support/vim/vim.inc              |  1 +
>  2 files changed, 50 insertions(+)
>  create mode 100644 meta/recipes-support/vim/files/CVE-2021-3778.patch
> 
> diff --git a/meta/recipes-support/vim/files/CVE-2021-3778.patch b/meta/recipes-support/vim/files/CVE-2021-3778.patch
> new file mode 100644
> index 0000000000..9cb61a6ac7
> --- /dev/null
> +++ b/meta/recipes-support/vim/files/CVE-2021-3778.patch
> @@ -0,0 +1,49 @@
> +From eb41373c8c88b0789e5cf04669d6116f9a199264 Mon Sep 17 00:00:00 2001
> +From: Minjae Kim <flowergom@gmail.com>
> +Date: Sun, 26 Sep 2021 23:48:00 +0000
> +Subject: [PATCH] patch 8.2.3409: reading beyond end of line with invalid utf-8
> + character
> +
> +Problem: Reading beyond end of line with invalid utf-8 character.
> +Solution: Check for NUL when advancing.
> +
> +Upstream-Status: Accepted [https://github.com/vim/vim/commit/65b605665997fad54ef39a93199e305af2fe4d7f]
> +CVE: CVE-2021-3778
> +Signed-off-by: Minjae Kim <flowergom@gmail.com>
> +---
> + src/regexp_nfa.c                 | 3 ++-
> + src/testdir/test_regexp_utf8.vim | 7 +++++++
> + 2 files changed, 9 insertions(+), 1 deletion(-)
> +
> +diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c
> +index fb512f961..4d337f1f1 100644
> +--- a/src/regexp_nfa.c
> ++++ b/src/regexp_nfa.c
> +@@ -5455,7 +5455,8 @@ find_match_text(colnr_T startcol, int regstart, char_u *match_text)
> +               match = FALSE;
> +               break;
> +           }
> +-          len2 += MB_CHAR2LEN(c2);
> ++          len2 += enc_utf8 ? utf_ptr2len(rex.line + col + len2)
> ++                                                           : MB_CHAR2LEN(c2);
> +       }
> +       if (match
> +               // check that no composing char follows
> +diff --git a/src/testdir/test_regexp_utf8.vim b/src/testdir/test_regexp_utf8.vim
> +index 19ff882be..e0665818b 100644
> +--- a/src/testdir/test_regexp_utf8.vim
> ++++ b/src/testdir/test_regexp_utf8.vim
> +@@ -215,3 +215,10 @@ func Test_optmatch_toolong()
> +   set re=0
> + endfunc
> + 
> ++func Test_match_invalid_byte()
> ++  call writefile(0z630a.765d30aa0a.2e0a.790a.4030, 'Xinvalid')
> ++  new
> ++  source Xinvalid
> ++  bwipe!
> ++  call delete('Xinvalid')
> ++endfunc
> +-- 
> +2.17.1
> +
> diff --git a/meta/recipes-support/vim/vim.inc b/meta/recipes-support/vim/vim.inc
> index 7e9225fbcb..db1e9caf4d 100644
> --- a/meta/recipes-support/vim/vim.inc
> +++ b/meta/recipes-support/vim/vim.inc
> @@ -18,6 +18,7 @@ SRC_URI = "git://github.com/vim/vim.git \
>             file://no-path-adjust.patch \
>             file://racefix.patch \
>             file://b7081e135a16091c93f6f5f7525a5c58fb7ca9f9.patch \
> +          file://CVE-2021-3778.patch \
>  "
>  
>  SRCREV = "98056533b96b6b5d8849641de93185dd7bcadc44"


Thanks for the patch, I'd like to get this CVE fixed for master. Unfortunately
the patch doesn't seem to apply?

ERROR: vim-8.2-r0 do_patch: Command Error: 'quilt --quiltrc /media/build1/poky/build/tmp/work/core2-64-poky-linux/vim/8.2-r0/recipe-sysroot-native/etc/quiltrc push' exited with 0  Output:
stdout: Applying patch CVE-2021-3778.patch
patching file src/regexp_nfa.c
Hunk #1 FAILED at 5455.
1 out of 1 hunk FAILED -- rejects in file src/regexp_nfa.c
patching file src/testdir/test_regexp_utf8.vim
Patch CVE-2021-3778.patch does not apply (enforce with -f)

stderr: 
ERROR: Logfile of failure stored in: /media/build1/poky/build/tmp/work/core2-64-poky-linux/vim/8.2-r0/temp/log.do_patch.45096
ERROR: Task (/media/build1/poky/meta/recipes-support/vim/vim_8.2.bb:do_patch) failed with exit code '1'

Cheers,

Richard




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] vim: fix CVE-2021-3778
  2021-09-27 23:08 ` [OE-core] " Richard Purdie
@ 2021-09-28  6:58   ` Minjae Kim
  2021-09-28  7:36     ` Minjae Kim
  0 siblings, 1 reply; 5+ messages in thread
From: Minjae Kim @ 2021-09-28  6:58 UTC (permalink / raw)
  To: openembedded-core

[-- Attachment #1: Type: text/plain, Size: 90 bytes --]

Hi Richard ,

Thanks for the notice, I'll update it properly.

Thanks

Minjae Kim.

[-- Attachment #2: Type: text/html, Size: 114 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] vim: fix CVE-2021-3778
  2021-09-28  6:58   ` Minjae Kim
@ 2021-09-28  7:36     ` Minjae Kim
  2021-09-28 10:41       ` [OE-core] " Richard Purdie
  0 siblings, 1 reply; 5+ messages in thread
From: Minjae Kim @ 2021-09-28  7:36 UTC (permalink / raw)
  To: openembedded-core

[-- Attachment #1: Type: text/plain, Size: 3740 bytes --]

Hi Richard,

When I tried to rebuild this patch on the latest master branch,
I could not get any patch errors as below.

poky/master/poky$ bitbake vim -c cleanall; bitbake vim -C compile
Loading cache: 100% |                                                                                                                                                       | ETA:  --:--:--
Loaded 0 entries from dependency cache.
Parsing recipes: 100% |######################################################################################################################################################| Time: 0:00:03
Parsing of 828 .bb files complete (0 cached, 828 parsed). 1469 targets, 44 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies

Build Configuration:
BB_VERSION           = "1.51.1"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "universal"
TARGET_SYS           = "x86_64-poky-linux"
MACHINE              = "qemux86-64"
DISTRO               = "poky"
DISTRO_VERSION       = "3.3+snapshot-a1e31bb8d625bf4531347e7cff6de89f104800c7"
TUNE_FEATURES        = "m64 core2"
TARGET_FPU           = ""
meta
meta-poky
meta-yocto-bsp       = "master:a1e31bb8d625bf4531347e7cff6de89f104800c7"

Initialising tasks: 100% |###################################################################################################################################################| Time: 0:00:00
Sstate summary: Wanted 0 Local 0 Network 0 Missed 0 Current 0 (0% match, 0% complete)
NOTE: No setscene tasks
NOTE: Executing Tasks
NOTE: Tasks Summary: Attempted 3 tasks of which 0 didn't need to be rerun and all succeeded.
Loading cache: 100% |########################################################################################################################################################| Time: 0:00:00
Loaded 1469 entries from dependency cache.
NOTE: Resolving any missing task queue dependencies

Build Configuration:
BB_VERSION           = "1.51.1"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "universal"
TARGET_SYS           = "x86_64-poky-linux"
MACHINE              = "qemux86-64"
DISTRO               = "poky"
DISTRO_VERSION       = "3.3+snapshot-a1e31bb8d625bf4531347e7cff6de89f104800c7"
TUNE_FEATURES        = "m64 core2"
TARGET_FPU           = ""
meta
meta-poky
meta-yocto-bsp       = "master:a1e31bb8d625bf4531347e7cff6de89f104800c7"

NOTE: Tainting hash to force rebuild of task /home/webos_build/upstream/poky/master/poky/meta/recipes-support/vim/vim_8.2.bb, do_compile                                     | ETA:  0:00:00
WARNING: /home/webos_build/upstream/poky/master/poky/meta/recipes-support/vim/vim_8.2.bb:do_compile is tainted from a forced run                                             | ETA:  0:00:00
Initialising tasks: 100% |###################################################################################################################################################| Time: 0:00:01
Sstate summary: Wanted 10 Local 0 Network 0 Missed 10 Current 549 (0% match, 98% complete)
Removing 3 stale sstate objects for arch qemux86_64: 100% |##################################################################################################################| Time: 0:00:00
NOTE: Executing Tasks
NOTE: Tasks Summary: Attempted 1964 tasks of which 1945 didn't need to be rerun and all succeeded.

Summary: There was 1 WARNING message shown.
upstream/poky/master/poky$

Thanks,
Minjae Kim

[-- Attachment #2: Type: text/html, Size: 5557 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [OE-core] [PATCH] vim: fix CVE-2021-3778
  2021-09-28  7:36     ` Minjae Kim
@ 2021-09-28 10:41       ` Richard Purdie
  0 siblings, 0 replies; 5+ messages in thread
From: Richard Purdie @ 2021-09-28 10:41 UTC (permalink / raw)
  To: Minjae Kim, openembedded-core

On Tue, 2021-09-28 at 00:36 -0700, Minjae Kim wrote:
> Hi Richard,
> 
> When I tried to rebuild this patch on the latest master branch,
> I could not get any patch errors as below.
> 
> poky/master/poky$ bitbake vim -c cleanall; bitbake vim -C compile
> Loading cache: 100% |                                                         
>                                                                              
>                | ETA:  --:--:--
> Loaded 0 entries from dependency cache.
> Parsing recipes: 100%
> |#############################################################################
> #########################################################################|
> Time: 0:00:03
> Parsing of 828 .bb files complete (0 cached, 828 parsed). 1469 targets, 44
> skipped, 0 masked, 0 errors.
> NOTE: Resolving any missing task queue dependencies
>  
> Build Configuration:
> BB_VERSION           = "1.51.1"
> BUILD_SYS            = "x86_64-linux"
> NATIVELSBSTRING      = "universal"
> TARGET_SYS           = "x86_64-poky-linux"
> MACHINE              = "qemux86-64"
> DISTRO               = "poky"
> DISTRO_VERSION       = "3.3+snapshot-a1e31bb8d625bf4531347e7cff6de89f104800c7"
> TUNE_FEATURES        = "m64 core2"
> TARGET_FPU           = ""
> meta                 
> meta-poky            
> meta-yocto-bsp       = "master:a1e31bb8d625bf4531347e7cff6de89f104800c7"
>  
> Initialising tasks: 100%
> |#############################################################################
> ######################################################################| Time:
> 0:00:00
> Sstate summary: Wanted 0 Local 0 Network 0 Missed 0 Current 0 (0% match, 0%
> complete)
> NOTE: No setscene tasks
> NOTE: Executing Tasks
> NOTE: Tasks Summary: Attempted 3 tasks of which 0 didn't need to be rerun and
> all succeeded.
> Loading cache: 100%
> |#############################################################################
> ###########################################################################|
> Time: 0:00:00
> Loaded 1469 entries from dependency cache.
> NOTE: Resolving any missing task queue dependencies
>  
> Build Configuration:
> BB_VERSION           = "1.51.1"
> BUILD_SYS            = "x86_64-linux"
> NATIVELSBSTRING      = "universal"
> TARGET_SYS           = "x86_64-poky-linux"
> MACHINE              = "qemux86-64"
> DISTRO               = "poky"
> DISTRO_VERSION       = "3.3+snapshot-a1e31bb8d625bf4531347e7cff6de89f104800c7"
> TUNE_FEATURES        = "m64 core2"
> TARGET_FPU           = ""
> meta                 
> meta-poky            
> meta-yocto-bsp       = "master:a1e31bb8d625bf4531347e7cff6de89f104800c7"
>  
> NOTE: Tainting hash to force rebuild of task
> /home/webos_build/upstream/poky/master/poky/meta/recipes-
> support/vim/vim_8.2.bb, do_compile                                     | ETA: 
> 0:00:00
> WARNING: /home/webos_build/upstream/poky/master/poky/meta/recipes-
> support/vim/vim_8.2.bb:do_compile is tainted from a forced run               
>                              | ETA:  0:00:00
> Initialising tasks: 100%
> |#############################################################################
> ######################################################################| Time:
> 0:00:01
> Sstate summary: Wanted 10 Local 0 Network 0 Missed 10 Current 549 (0% match,
> 98% complete)
> Removing 3 stale sstate objects for arch qemux86_64: 100%
> |#############################################################################
> #####################################| Time: 0:00:00
> NOTE: Executing Tasks
> NOTE: Tasks Summary: Attempted 1964 tasks of which 1945 didn't need to be
> rerun and all succeeded.
>  
> Summary: There was 1 WARNING message shown.
> upstream/poky/master/poky$ 

I checked again and the patch definitely does not work. I think the whitespace
is being corrupted on the trip through the mailing list.

I've manually refreshed the patch locally to fix it but I think something about
your email setup is causing problems with patch corruption :(.

Cheers,

Richard






^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-09-28 10:41 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-27 10:44 [PATCH] vim: fix CVE-2021-3778 Minjae Kim
2021-09-27 23:08 ` [OE-core] " Richard Purdie
2021-09-28  6:58   ` Minjae Kim
2021-09-28  7:36     ` Minjae Kim
2021-09-28 10:41       ` [OE-core] " Richard Purdie

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.