[CLSA-2026:1787304699] Fix of 10 CVEs
Type:
security
Severity:
Important
Release date:
2026-08-21 09:31:57 UTC
Description:
* SECURITY UPDATE: stack-based buffer overflow in option callback functions: illegal_char() and did_set_string_option() wrote the E539/E526/E535 option errors into the caller's 80-byte errbuf[] with unbounded sprintf(). The call site reported upstream, did_set_langmap() in src/map.c, does not exist in this version, where 'langmap' errors are reported through EMSG2() into a bounded buffer. - debian/patches/CVE-2024-22667.patch: introduce ERR_BUFLEN and use snprintf() bounded by it at the three sprintf() sites, in src/option.c and src/option.h; matches upstream patch 9.0.2142. - CVE-2024-22667 * SECURITY UPDATE: buffer overflow in 'helpfile' option handling: get_tagfname() copied the user-controlled 'helpfile' value into a MAXPATHL buffer with STRCPY() and then appended "tags" at the tail, so an over-long 'helpfile' overflowed the buffer. - debian/patches/CVE-2026-25749.patch: bound the copy with vim_strncpy() leaving room for the "tags" suffix, in src/tag.c; matches upstream patches 9.1.2132 and 9.1.2133. - CVE-2026-25749 * SECURITY UPDATE: buffer overflow in the netbeans specialKeys command: special_keys() walked the modifier prefix writing two bytes per modifier into the 64-byte keybuf[] with no bound, so a long modifier run overflowed it. - debian/patches/CVE-2026-26269.patch: stop the modifier loop while i + 2 < KEYBUFLEN, in src/netbeans.c; matches upstream patch 9.1.2148. - CVE-2026-26269 * SECURITY UPDATE: command injection via netrw URIs: the hostname and port taken from a netrw URI were interpolated unescaped into the command passed to system(), so shell metacharacters in the host or port ran arbitrary commands. - debian/patches/CVE-2026-28417.patch: validate the host against an RFC1123 hostname / IPv4 / IPv6 pattern at the four netrw entry points and shellescape() the host, user and port in s:MakeSshCmd(), in runtime/autoload/netrw.vim; matches upstream patches 9.2.0073, 9.2.0089 and 9.2.0553. - CVE-2026-28417 * SECURITY UPDATE: crash and huge allocation recovering a corrupted swap file: ml_recover() trusted pe_page_count, pe_bnum, pe_old_lnum and pe_line_count from the swap file, so bogus values caused a multi-GB mf_get() allocation or a SEGV inside readfile(). - debian/patches/CVE-2026-28421.patch: bound pe_page_count and pe_bnum against mf_blocknr_max and validate pe_old_lnum and pe_line_count before use, in src/memline.c; matches upstream patch 9.2.0077. - CVE-2026-28421 * SECURITY UPDATE: command injection via newline in glob(): the newline character was missing from SHELL_SPECIAL, so it was not escaped before mch_expand_wildcards() handed the pattern to the shell and could act as a command separator. - debian/patches/CVE-2026-33412.patch: add '\n' to SHELL_SPECIAL, in src/os_unix.c; matches upstream patch 9.2.0202. - CVE-2026-33412 * SECURITY UPDATE: modeline security bypass: several options holding expressions could be set from a modeline, so opening a crafted file evaluated attacker-supplied expressions. In this version the expressions reachable this way are the 'statusline'-style %{} items of 'printheader' and 'guitabtooltip', which were evaluated in the sandbox only; the F{func} flag of 'complete' and the mapset() function named by the upstream advisory arrived in later releases and are not present in this version. - debian/patches/patch-8.1.1366-using-expressions-in-a-modeline-is-unsafe.patch: add the 'modelineexpr' option and the P_MLE flag, refuse P_MLE options in a modeline unless 'modelineexpr' is set, mark the expression-bearing options P_MLE, and document 'modelineexpr' and E992, in src/option.c, src/option.h and runtime/doc/options.txt; prerequisite for the fix below. - debian/patches/patch-8.1.1367-can-set-modelineexpr-in-modeline.patch: mark 'modelineexpr' itself P_SECURE so a modeline cannot enable it, and document that, in src/option.c and runtime/doc/options.txt; without this the check above can be turned off by the crafted file itself. - debian/patches/CVE-2026-34982.patch: mark 'complete', 'guitabtooltip' and 'printheader' P_MLE, in src/option.c; matches upstream patch 9.2.0276. - CVE-2026-34982 * SECURITY UPDATE: path traversal in zip.vim: neither zip#Write() nor zip#Extract() rejected archive members whose path escaped the extraction directory, so a crafted zip could write outside it. - debian/patches/CVE-2026-35177.patch: reject any path that simplifies to one containing "../" in both zip#Write() and zip#Extract(), in runtime/autoload/zip.vim; matches upstream patch 9.2.0280. - CVE-2026-35177 * SECURITY UPDATE: command injection in the netbeans interface via defineAnnoType: typeName, fg and bg arrived unvalidated from the NetBeans server and were interpolated into an Ex command, so a bar could append arbitrary commands; specialKeys likewise built a map command from an unvalidated key token. - debian/patches/CVE-2026-39881.patch: validate typeName, fg and bg against character allowlists and accept only alphanumerics and '-' in a specialKeys token, in src/netbeans.c; matches upstream patch 9.2.0316. - CVE-2026-39881 * SECURITY UPDATE: command injection via backticks in tag files: expand_tag_fname() passed a tag filename containing backticks to wildcard expansion, which ran it through the shell. - debian/patches/CVE-2026-41411.patch: refuse to expand a tag filename containing a backtick, in src/tag.c; matches upstream patch 9.2.0357. - CVE-2026-41411 * NOTE: behaviour change that comes with the 'modelineexpr' mechanism above: options that hold an expression ('balloonexpr', 'foldexpr', 'foldtext', 'formatexpr', 'guitablabel', 'iconstring', 'includeexpr', 'indentexpr', 'rulerformat', 'statusline', 'tabline', 'titlestring', 'complete', 'guitabtooltip' and 'printheader') can no longer be set from a modeline unless the new 'modelineexpr' option is on, and are refused with E992. 'cdpath' becomes modeline- and sandbox-refused (E520). This is the upstream 8.1.1366 behaviour; see :help modelineexpr. * debian/patches/fix-Test_terminal_cwd.patch: join the first two terminal lines before comparing in Test_terminal_cwd(), so the test still passes when the build path is long enough for the pwd output to wrap; matches upstream patch 9.0.0541.
Updated packages:
  • vim_8.0.1453-1ubuntu1.13+tuxcare.els1_amd64.deb
    sha:491d2bf0f3ad9611bbffcc4b439dd6e50eb9b9c4
  • vim-athena_8.0.1453-1ubuntu1.13+tuxcare.els1_amd64.deb
    sha:0597634a98a24a54558fd1abd9158334fb918f50
  • vim-common_8.0.1453-1ubuntu1.13+tuxcare.els1_all.deb
    sha:a8f812fcab2af06e787d5c18c2243e6ce21f6f4e
  • vim-doc_8.0.1453-1ubuntu1.13+tuxcare.els1_all.deb
    sha:d56b3a3848c15541a7e301dd3c8ab87a738d1ad2
  • vim-gnome_8.0.1453-1ubuntu1.13+tuxcare.els1_all.deb
    sha:65db9726ffd7529576f4bebff827ff776beef640
  • vim-gtk_8.0.1453-1ubuntu1.13+tuxcare.els1_amd64.deb
    sha:7921c98f6131d7eaf28ff0388bcd81c91c836d1c
  • vim-gtk3_8.0.1453-1ubuntu1.13+tuxcare.els1_amd64.deb
    sha:3d6cff2c315d154a398b0e506645d62bf560cc75
  • vim-gui-common_8.0.1453-1ubuntu1.13+tuxcare.els1_all.deb
    sha:ec16df439ace811836cc60183dd97d575e31450c
  • vim-nox_8.0.1453-1ubuntu1.13+tuxcare.els1_amd64.deb
    sha:95c1fe2ffe4c6e2025246cbe010143158bb1bf9b
  • vim-runtime_8.0.1453-1ubuntu1.13+tuxcare.els1_all.deb
    sha:45b7a889a6e99babf7514190cf87bf52838fb49d
  • vim-tiny_8.0.1453-1ubuntu1.13+tuxcare.els1_amd64.deb
    sha:691a21618d15b8e7fd76090233f5e960c48fef23
  • xxd_8.0.1453-1ubuntu1.13+tuxcare.els1_amd64.deb
    sha:9f479aa5122bf1b7153589f2283737e439d2d4c5
Notes:
This page is generated automatically and has not been checked for errors. For clarification or corrections please contact the CloudLinux Packaging Team.