Every CVE Search/ Get API key

CVE-2018-8881

Netwide Assembler (NASM) 2.13.02rc2 has a heap-based buffer over-read in the function tokenize in...

7.3 HighFix available

Netwide Assembler (NASM) 2.13.02rc2 has a heap-based buffer over-read in the function tokenize in asm/preproc.c, related to an unterminated string.

Attack profile

How easy it is to exploit

Attack vector
Local
Complexity
Low
Privileges needed
Low
User interaction
Required

What an attacker can affect

Confidentiality
High
Integrity
High
Availability
High

Exploit likelihood

1.09%Unchanged since Apr 14, 2021
90%50%10%1%

What each source reports

NVD Score used 7.3

Netwide Assembler (NASM) 2.13.02rc2 has a heap-based buffer over-read in the function tokenize in asm/preproc.c, related to an unterminated string.

Record
CVE-2018-8881
CVSS 3.0
7.3 HighCVSS:3.0/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
CVSS 2.0
6.8 MediumAV:N/AC:M/Au:N/C:P/I:P/A:P
Weakness
CWE-125
Updated
2026-11-02
CVE List No score

Netwide Assembler (NASM) 2.13.02rc2 has a heap-based buffer over-read in the function tokenize in asm/preproc.c, related to an unterminated string.

Record
CVE-2018-8881
Updated
2026-11-02
EUVDEUVD-2018-20489 No score

Netwide Assembler (NASM) 2.13.02rc2 has a heap-based buffer over-read in the function tokenize in asm/preproc.c, related to an unterminated string.

Record
EUVD-2018-20489
Updated
2026-11-03
GitHub AdvisoriesGHSA-x2vw-jwp7-h598 7.3

Netwide Assembler (NASM) 2.13.02rc2 has a heap-based buffer over-read in the function tokenize in...

Netwide Assembler (NASM) 2.13.02rc2 has a heap-based buffer over-read in the function tokenize in asm/preproc.c, related to an unterminated string.

Record
GHSA-x2vw-jwp7-h598
CVSS 3.0
7.3 HighCVSS:3.0/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
Weakness
CWE-125
Updated
2026-11-02
OSV 7.3

Netwide Assembler (NASM) 2.13.02rc2 has a heap-based buffer over-read in the function tokenize in asm/preproc.c, related to an unterminated string.

Record
CVE-2018-8881
CVSS 3.0
7.3 HighCVSS:3.0/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
Updated
2026-11-02
OSVDEBIAN-CVE-2018-8881 7.3

Netwide Assembler (NASM) 2.13.02rc2 has a heap-based buffer over-read in the function tokenize in asm/preproc.c, related to an unterminated string.

Record
DEBIAN-CVE-2018-8881
CVSS 3.0
7.3 HighCVSS:3.0/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
Updated
2026-11-02
Show 5 moreShow less
OSVUBUNTU-CVE-2018-8881 7.3

Netwide Assembler (NASM) 2.13.02rc2 has a heap-based buffer over-read in the function tokenize in asm/preproc.c, related to an unterminated string.

Record
UBUNTU-CVE-2018-8881
CVSS 3.0
7.3 HighCVSS:3.0/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
Updated
2026-11-02
OSVopenSUSE-SU-2020:0952-1 No score

Security update for nasm

This update for nasm fixes the following issues:

nasm was updated to version 2.14.02.

This allows building of Mozilla Firefox 78ESR and also contains lots of bugfixes, security fixes and improvements.

  • Fix crash due to multiple errors or warnings during the code generation pass if a list file is specified.
  • Create all system-defined macros defore processing command-line given preprocessing directives (-p, -d, -u, --pragma, --before).
  • If debugging is enabled, define a DEBUG_FORMAT predefined macro. See section 4.11.7.
  • Fix an assert for the case in the obj format when a SEG operator refers to an EXTERN symbol declared further down in the code.
  • Fix a corner case in the floating-point code where a binary, octal or hexadecimal floating-point having at least 32, 11, or 8 mantissa digits could produce slightly incorrect results under very specific conditions.
  • Support -MD without a filename, for gcc compatibility. -MF can be used to set the dependencies output filename. See section 2.1.7.
  • Fix -E in combination with -MD. See section 2.1.21.
  • Fix missing errors on redefined labels; would cause convergence failure instead which is very slow and not easy to debug.
  • Duplicate definitions of the same label with the same value is now explicitly permitted (2.14 would allow it in some circumstances.)
  • Add the option --no-line to ignore %line directives in the source. See section 2.1.33 and section 4.10.1.
  • Changed -I option semantics by adding a trailing path separator unconditionally.
  • Fixed null dereference in corrupted invalid single line macros.
  • Fixed division by zero which may happen if source code is malformed.
  • Fixed out of bound access in processing of malformed segment override.
  • Fixed out of bound access in certain EQU parsing.
  • Fixed buffer underflow in float parsing.
  • Added SGX (Intel Software Guard Extensions) instructions.
  • Added +n syntax for multiple contiguous registers.
  • Fixed subsections_via_symbols for macho object format.
  • Added the --gprefix, --gpostfix, --lprefix, and --lpostfix command line options, to allow command line base symbol renaming. See section 2.1.28.
  • Allow label renaming to be specified by %pragma in addition to from the command line. See section 6.9.
  • Supported generic %pragma namespaces, output and debug. See section 6.10.
  • Added the --pragma command line option to inject a %pragma directive. See section 2.1.29.
  • Added the --before command line option to accept preprocess statement before input. See section 2.1.30.
  • Added AVX512 VBMI2 (Additional Bit Manipulation), VNNI (Vector Neural Network), BITALG (Bit Algorithm), and GFNI (Galois Field New Instruction) instructions.
  • Added the STATIC directive for local symbols that should be renamed using global-symbol rules. See section 6.8.
  • Allow a symbol to be defined as EXTERN and then later overridden as GLOBAL or COMMON. Furthermore, a symbol declared EXTERN and then defined will be treated as GLOBAL. See section 6.5.
  • The GLOBAL directive no longer is required to precede the definition of the symbol.
  • Support private_extern as macho specific extension to the GLOBAL directive. See section 7.8.5.
  • Updated UD0 encoding to match with the specification
  • Added the --limit-X command line option to set execution limits. See section 2.1.31.
  • Updated the Codeview version number to be aligned with MASM.
  • Added the --keep-all command line option to preserve output files. See section 2.1.32.
  • Added the --include command line option, an alias to -P (section 2.1.18).
  • Added the --help command line option as an alias to -h (section 3.1).
  • Added -W, -D, and -Q suffix aliases for RET instructions so the operand sizes of these instructions can be encoded without using o16, o32 or o64.

New upstream version 2.13.03:

  • Add flags: AES, VAES, VPCLMULQDQ
  • Add VPCLMULQDQ instruction
  • elf: Add missing dwarf loc section
  • documentation updates

This update was imported from the SUSE:SLE-15:Update update project.

Record
openSUSE-SU-2020:0952-1
Updated
2026-11-02
OSVopenSUSE-SU-2020:0954-1 No score

Security update for nasm

This update for nasm fixes the following issues:

nasm was updated to version 2.14.02.

This allows building of Mozilla Firefox 78ESR and also contains lots of bugfixes, security fixes and improvements.

  • Fix crash due to multiple errors or warnings during the code generation pass if a list file is specified.
  • Create all system-defined macros defore processing command-line given preprocessing directives (-p, -d, -u, --pragma, --before).
  • If debugging is enabled, define a DEBUG_FORMAT predefined macro. See section 4.11.7.
  • Fix an assert for the case in the obj format when a SEG operator refers to an EXTERN symbol declared further down in the code.
  • Fix a corner case in the floating-point code where a binary, octal or hexadecimal floating-point having at least 32, 11, or 8 mantissa digits could produce slightly incorrect results under very specific conditions.
  • Support -MD without a filename, for gcc compatibility. -MF can be used to set the dependencies output filename. See section 2.1.7.
  • Fix -E in combination with -MD. See section 2.1.21.
  • Fix missing errors on redefined labels; would cause convergence failure instead which is very slow and not easy to debug.
  • Duplicate definitions of the same label with the same value is now explicitly permitted (2.14 would allow it in some circumstances.)
  • Add the option --no-line to ignore %line directives in the source. See section 2.1.33 and section 4.10.1.
  • Changed -I option semantics by adding a trailing path separator unconditionally.
  • Fixed null dereference in corrupted invalid single line macros.
  • Fixed division by zero which may happen if source code is malformed.
  • Fixed out of bound access in processing of malformed segment override.
  • Fixed out of bound access in certain EQU parsing.
  • Fixed buffer underflow in float parsing.
  • Added SGX (Intel Software Guard Extensions) instructions.
  • Added +n syntax for multiple contiguous registers.
  • Fixed subsections_via_symbols for macho object format.
  • Added the --gprefix, --gpostfix, --lprefix, and --lpostfix command line options, to allow command line base symbol renaming. See section 2.1.28.
  • Allow label renaming to be specified by %pragma in addition to from the command line. See section 6.9.
  • Supported generic %pragma namespaces, output and debug. See section 6.10.
  • Added the --pragma command line option to inject a %pragma directive. See section 2.1.29.
  • Added the --before command line option to accept preprocess statement before input. See section 2.1.30.
  • Added AVX512 VBMI2 (Additional Bit Manipulation), VNNI (Vector Neural Network), BITALG (Bit Algorithm), and GFNI (Galois Field New Instruction) instructions.
  • Added the STATIC directive for local symbols that should be renamed using global-symbol rules. See section 6.8.
  • Allow a symbol to be defined as EXTERN and then later overridden as GLOBAL or COMMON. Furthermore, a symbol declared EXTERN and then defined will be treated as GLOBAL. See section 6.5.
  • The GLOBAL directive no longer is required to precede the definition of the symbol.
  • Support private_extern as macho specific extension to the GLOBAL directive. See section 7.8.5.
  • Updated UD0 encoding to match with the specification
  • Added the --limit-X command line option to set execution limits. See section 2.1.31.
  • Updated the Codeview version number to be aligned with MASM.
  • Added the --keep-all command line option to preserve output files. See section 2.1.32.
  • Added the --include command line option, an alias to -P (section 2.1.18).
  • Added the --help command line option as an alias to -h (section 3.1).
  • Added -W, -D, and -Q suffix aliases for RET instructions so the operand sizes of these instructions can be encoded without using o16, o32 or o64.

New upstream version 2.13.03:

  • Add flags: AES, VAES, VPCLMULQDQ
  • Add VPCLMULQDQ instruction
  • elf: Add missing dwarf loc section
  • documentation updates

This update was imported from the SUSE:SLE-15:Update update project.

Record
openSUSE-SU-2020:0954-1
Updated
2026-11-02
OSVSUSE-SU-2020:1843-1 No score

Security update for nasm

This update for nasm fixes the following issues:

nasm was updated to version 2.14.02.

This allows building of Mozilla Firefox 78ESR and also contains lots of bugfixes, security fixes and improvements.

  • Fix crash due to multiple errors or warnings during the code generation pass if a list file is specified.
  • Create all system-defined macros defore processing command-line given preprocessing directives (-p, -d, -u, --pragma, --before).
  • If debugging is enabled, define a DEBUG_FORMAT predefined macro. See section 4.11.7.
  • Fix an assert for the case in the obj format when a SEG operator refers to an EXTERN symbol declared further down in the code.
  • Fix a corner case in the floating-point code where a binary, octal or hexadecimal floating-point having at least 32, 11, or 8 mantissa digits could produce slightly incorrect results under very specific conditions.
  • Support -MD without a filename, for gcc compatibility. -MF can be used to set the dependencies output filename. See section 2.1.7.
  • Fix -E in combination with -MD. See section 2.1.21.
  • Fix missing errors on redefined labels; would cause convergence failure instead which is very slow and not easy to debug.
  • Duplicate definitions of the same label with the same value is now explicitly permitted (2.14 would allow it in some circumstances.)
  • Add the option --no-line to ignore %line directives in the source. See section 2.1.33 and section 4.10.1.
  • Changed -I option semantics by adding a trailing path separator unconditionally.
  • Fixed null dereference in corrupted invalid single line macros.
  • Fixed division by zero which may happen if source code is malformed.
  • Fixed out of bound access in processing of malformed segment override.
  • Fixed out of bound access in certain EQU parsing.
  • Fixed buffer underflow in float parsing.
  • Added SGX (Intel Software Guard Extensions) instructions.
  • Added +n syntax for multiple contiguous registers.
  • Fixed subsections_via_symbols for macho object format.
  • Added the --gprefix, --gpostfix, --lprefix, and --lpostfix command line options, to allow command line base symbol renaming. See section 2.1.28.
  • Allow label renaming to be specified by %pragma in addition to from the command line. See section 6.9.
  • Supported generic %pragma namespaces, output and debug. See section 6.10.
  • Added the --pragma command line option to inject a %pragma directive. See section 2.1.29.
  • Added the --before command line option to accept preprocess statement before input. See section 2.1.30.
  • Added AVX512 VBMI2 (Additional Bit Manipulation), VNNI (Vector Neural Network), BITALG (Bit Algorithm), and GFNI (Galois Field New Instruction) instructions.
  • Added the STATIC directive for local symbols that should be renamed using global-symbol rules. See section 6.8.
  • Allow a symbol to be defined as EXTERN and then later overridden as GLOBAL or COMMON. Furthermore, a symbol declared EXTERN and then defined will be treated as GLOBAL. See section 6.5.
  • The GLOBAL directive no longer is required to precede the definition of the symbol.
  • Support private_extern as macho specific extension to the GLOBAL directive. See section 7.8.5.
  • Updated UD0 encoding to match with the specification
  • Added the --limit-X command line option to set execution limits. See section 2.1.31.
  • Updated the Codeview version number to be aligned with MASM.
  • Added the --keep-all command line option to preserve output files. See section 2.1.32.
  • Added the --include command line option, an alias to -P (section 2.1.18).
  • Added the --help command line option as an alias to -h (section 3.1).
  • Added -W, -D, and -Q suffix aliases for RET instructions so the operand sizes of these instructions can be encoded without using o16, o32 or o64.

New upstream version 2.13.03:

  • Add flags: AES, VAES, VPCLMULQDQ
  • Add VPCLMULQDQ instruction
  • elf: Add missing dwarf loc section
  • documentation updates
Record
SUSE-SU-2020:1843-1
Updated
2026-11-02
OSVUSN-3694-1 No score

nasm vulnerabilities

It was discovered that NASM incorrectly handled certain source files. If a user or automated system were tricked into processing a specially crafted source file, a remote attacker could use these issues to cause NASM to crash, resulting in a denial of service, or possibly execute arbitrary code.

Record
USN-3694-1
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
nasm
Debian:12
before 2.13.02-0.1
2.13.02-0.1
nasm
Debian:13
before 2.13.02-0.1
2.13.02-0.1
nasm
Debian:14
before 2.13.02-0.1
2.13.02-0.1
nasm
SUSE:Linux Enterprise Module for Development Tools 15 SP1
From an advisory covering 13 CVEs
before 2.14.02-3.4.1
2.14.02-3.4.1
nasm
SUSE:Linux Enterprise Module for Development Tools 15 SP2
From an advisory covering 13 CVEs
before 2.14.02-3.4.1
2.14.02-3.4.1
nasm
Ubuntu:14.04:LTS
before 2.10.09-1ubuntu0.1, plus listed versions
2.10.07-12.10.09-1
2.10.09-1ubuntu0.1
nasm
Ubuntu:16.04:LTS
before 2.11.08-1ubuntu0.1, plus listed versions
2.11.06-1really2.11.05-12.11.08-1
2.11.08-1ubuntu0.1
nasm
Ubuntu:14.04:LTS
From an advisory covering 15 CVEs
before 2.10.09-1ubuntu0.1, plus listed versions
2.10.07-12.10.09-1
2.10.09-1ubuntu0.1
nasm
openSUSE:Leap 15.1
From an advisory covering 13 CVEs
before 2.14.02-lp151.3.3.1
2.14.02-lp151.3.3.1
nasm
openSUSE:Leap 15.2
From an advisory covering 13 CVEs
before 2.14.02-lp152.4.3.1
2.14.02-lp152.4.3.1

History

History
RecordedChangedSources
affected, facts
aliasesEUVD
first indexedCVE List, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2018-8881 is a high vulnerability (CVSS 7.3) in Nasm Netwide Assembler, published March 20, 2018. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 1.09%, the 65th percentile. Fixed in nasm 2.13.02-0.1.

References

Show 48 moreShow less
MoveEnter Open