CVE-2018-16517
asm/labels.c in Netwide Assembler (NASM) is prone to NULL Pointer Dereference, which allows the...
asm/labels.c in Netwide Assembler (NASM) is prone to NULL Pointer Dereference, which allows the attacker to cause a denial of service via a crafted file.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Required
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
NVD Score used
5.5
asm/labels.c in Netwide Assembler (NASM) is prone to NULL Pointer Dereference, which allows the attacker to cause a denial of service via a crafted file.
- Record
CVE-2018-16517- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - CVSS 2.0
- 4.3 Medium
AV:N/AC:M/Au:N/C:N/I:N/A:P - Weakness
- CWE-476
- Updated
- 2026-11-02
CVE List No score
asm/labels.c in Netwide Assembler (NASM) is prone to NULL Pointer Dereference, which allows the attacker to cause a denial of service via a crafted file.
- Record
CVE-2018-16517- Updated
- 2026-11-02
EUVDEUVD-2018-8326 No score
asm/labels.c in Netwide Assembler (NASM) is prone to NULL Pointer Dereference, which allows the attacker to cause a denial of service via a crafted file.
- Record
EUVD-2018-8326- Updated
- 2026-11-03
GitHub AdvisoriesGHSA-v4mp-339h-9w7f
5.5
asm/labels.c in Netwide Assembler (NASM) is prone to NULL Pointer Dereference, which allows the...
asm/labels.c in Netwide Assembler (NASM) is prone to NULL Pointer Dereference, which allows the attacker to cause a denial of service via a crafted file.
- Record
GHSA-v4mp-339h-9w7f- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Weakness
- CWE-476
- Updated
- 2026-11-02
OSV
5.5
asm/labels.c in Netwide Assembler (NASM) is prone to NULL Pointer Dereference, which allows the attacker to cause a denial of service via a crafted file.
- Record
CVE-2018-16517- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVDEBIAN-CVE-2018-16517
5.5
asm/labels.c in Netwide Assembler (NASM) is prone to NULL Pointer Dereference, which allows the attacker to cause a denial of service via a crafted file.
- Record
DEBIAN-CVE-2018-16517- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
Show 5 moreShow less
OSVUBUNTU-CVE-2018-16517
5.5
asm/labels.c in Netwide Assembler (NASM) is prone to NULL Pointer Dereference, which allows the attacker to cause a denial of service via a crafted file.
- Record
UBUNTU-CVE-2018-16517- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVMGASA-2020-0303 No score
Updated nasm packages fix security vulnerability
Netwide Assembler (NASM) 2.13 has a stack-based buffer over-read in the disasm function of the disasm/disasm.c file. Remote attackers could leverage this vulnerability to cause a denial of service or possibly have unspecified other impact via a crafted ELF file (CVE-2018-10254).
Netwide Assembler (NASM) 2.14rc0 has an endless while loop in the assemble_file function of asm/nasm.c because of a globallineno integer overflow (CVE-2018-10316).
Netwide Assembler (NASM) 2.14rc15 has a buffer over-read in x86/regflags.c (CVE-2018-16382).
NASM nasm-2.13.03 nasm- 2.14rc15 version 2.14rc15 and earlier contains a memory corruption (crashed) of nasm when handling a crafted file due to function assemble_file(inname, depend_ptr) at asm/nasm.c:482. vulnerability in function assemble_file(inname, depend_ptr) at asm/nasm.c:482. that can result in aborting/crash nasm program. This attack appear to be exploitable via a specially crafted asm file (CVE-2018-1000667).
asm/labels.c in Netwide Assembler (NASM) is prone to NULL Pointer Dereference, which allows the attacker to cause a denial of service via a crafted file (CVE-2018-16517).
Netwide Assembler (NASM) 2.14rc15 has an invalid memory write (segmentation fault) in expand_smacro in preproc.c, which allows attackers to cause a denial of service via a crafted input file (CVE-2018-16999).
Netwide Assembler (NASM) 2.14rc16 has a heap-based buffer over-read in expand_mmac_params in asm/preproc.c for the special cases of the % and $ and ! characters (CVE-2018-19215).
Netwide Assembler (NASM) 2.14rc15 has a heap-based buffer over-read in expand_mmac_params in asm/preproc.c for insufficient input (CVE-2018-19214).
- Record
MGASA-2020-0303- 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
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
nasmDebian:12 |
before 2.14-1 | 2.14-1 |
nasmDebian:13 |
before 2.14-1 | 2.14-1 |
nasmDebian:14 |
before 2.14-1 | 2.14-1 |
nasmMageia:7 From an advisory covering 9 CVEs |
before 2.14.02-1.mga7 | 2.14.02-1.mga7 |
nasmSUSE: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 |
nasmSUSE: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 |
nasmUbuntu:16.04:LTS |
All versions, plus listed versions 2.11.06-1really2.11.05-12.11.08-12.11.08-1ubuntu0.1 |
None known |
nasmUbuntu:18.04:LTS |
All versions, plus listed versions 2.13.01-22.13.02-0.1 |
None known |
nasmUbuntu:20.04:LTS |
All versions, plus listed versions 2.14.02-1 |
None known |
nasmUbuntu:Pro:22.04:LTS |
All versions, plus listed versions 2.15.05-12.15.05-1ubuntu0.1~esm12.15.05-1ubuntu0.1~esm2 |
None known |
Show 6 moreShow less
| Package | Affected | Fixed |
|---|---|---|
nasmUbuntu:Pro:24.04:LTS |
All versions, plus listed versions 2.16.01-12.16.01-1build12.16.01-1ubuntu0.1~esm12.16.01-1ubuntu0.1~esm2 |
None known |
nasmUbuntu:25.10 |
All versions, plus listed versions 2.16.03-1 |
None known |
nasmUbuntu:26.10 |
All versions, plus listed versions 3.01-1 |
None known |
nasmUbuntu:26.04:LTS |
All versions, plus listed versions 2.16.03-13.01-1 |
None known |
nasmopenSUSE:Leap 15.1 From an advisory covering 13 CVEs |
before 2.14.02-lp151.3.3.1 | 2.14.02-lp151.3.3.1 |
nasmopenSUSE:Leap 15.2 From an advisory covering 13 CVEs |
before 2.14.02-lp152.4.3.1 | 2.14.02-lp152.4.3.1 |
Public exploits
Links only. Every CVE stores no exploit code.
| Source | Link | Date |
|---|---|---|
| Exploit-DB | Netwide Assembler (NASM) 2.14rc15 - NULL Pointer Dereference (PoC) | 2019-04-18 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| aliases | EUVD | |
| first indexed | CVE List, Exploit-DB, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2018-16517 is a medium vulnerability (CVSS 5.5) in Nasm Netwide Assembler, published September 6, 2018. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 4.50%, the 91st percentile. Fixed in nasm 2.14-1.
References
bugzilla.nasm.us/show_bug.cgi?id=3392513
fakhrizulkifli.github.io/CVE-2018-16517.html
exploit-db.com/exploits/46726
packetstormsecurity.com/files/152566/Netwide-Assembler-NASM-2.14rc15-Null-Pointer-Dereference.html
lists.opensuse.org/opensuse-security-announce/2020-07/msg00017.html
lists.opensuse.org/opensuse-security-announce/2020-07/msg00015.html
Show 38 moreShow less
nvd.nist.gov/vuln/detail/CVE-2018-16517
github.com/advisories/GHSA-v4mp-339h-9w7f
security-tracker.debian.org/tracker/CVE-2018-16517
advisories.mageia.org/MGASA-2020-0303.html
bugs.mageia.org/show_bug.cgi?id=26916
lists.suse.com/pipermail/sle-security-updates/2020-July/007073.html
suse.com/support/update/announcement/2020/suse-su-20201843-1
bugzilla.suse.com/1084631
bugzilla.suse.com/1086186
bugzilla.suse.com/1086227
bugzilla.suse.com/1086228
bugzilla.suse.com/1090519
bugzilla.suse.com/1090840
bugzilla.suse.com/1106878
bugzilla.suse.com/1107592
bugzilla.suse.com/1107594
bugzilla.suse.com/1108404
bugzilla.suse.com/1115758
bugzilla.suse.com/1115774
bugzilla.suse.com/1115795
bugzilla.suse.com/1173538
suse.com/security/cve/CVE-2018-1000667
suse.com/security/cve/CVE-2018-10016
suse.com/security/cve/CVE-2018-10254
suse.com/security/cve/CVE-2018-10316
suse.com/security/cve/CVE-2018-16382
suse.com/security/cve/CVE-2018-16517
suse.com/security/cve/CVE-2018-16999
suse.com/security/cve/CVE-2018-19214
suse.com/security/cve/CVE-2018-19215
suse.com/security/cve/CVE-2018-19216
suse.com/security/cve/CVE-2018-8881
suse.com/security/cve/CVE-2018-8882
suse.com/security/cve/CVE-2018-8883
ubuntu.com/security/CVE-2018-16517
cve.org/CVERecord?id=CVE-2018-16517
lists.opensuse.org/archives/list/[email protected]/thread/DOJ3G66H5CLZFCUKGB4363DLYQJJULTG
lists.opensuse.org/archives/list/[email protected]/thread/W7JG7QO2J6GPYXBPONYRKYBTFH2XDJZJ