Logo
componentgpsd
Name
gpsd
Version
3.24
Type
library
Description
A TCP/IP Daemon simplifying the communication with GPS devices
Licenses
BSD-2-Clause
PURL
-
CPE
cpe:2.3:*:gpsd_project:gpsd:3.24:*:*:*:*:*:*:*

Other Versions#


Project
Branch
Version
kirkstone
3.23.1
master
3.27.5

Patches#


#
Title
Author
Resolve
1
drivers/driver_nmea2000.c: Fix issue 356, skyview buffer
"Gary E. Miller" <gem@rellim.com>
CVE-2025-67268
2
gpsd/packet.c: Fix integer underflow is malicious Navcom
"Gary E. Miller" <gem@rellim.com>
CVE-2025-67269

Vulnerabilities#


Name
Analysis
Description
Exploitable
gpsd through release-3.27.5, fixed at commit 4c06658, contains a command injection vulnerability in gpsprof that allows attackers who control the GPS device subtype value to execute arbitrary shell commands by embedding backtick payloads in the gnuplot plot title without proper escaping. The subtype field sourced from a DEVICES JSON log entry or NMEA PGRMT sentence is written into a generated gnuplot program via a set title statement with only double-quote characters escaped, enabling arbitrary shell command execution as the user running gnuplot when the victim renders the generated plot through the gpsprof and gnuplot workflow.
Patched
An integer underflow vulnerability exists in the `nextstate()` function in `gpsd/packet.c` of gpsd versions prior to commit `ffa1d6f40bca0b035fc7f5e563160ebb67199da7`. When parsing a NAVCOM packet, the payload length is calculated using `lexer->length = (size_t)c - 4` without checking if the input byte `c` is less than 4. This results in an unsigned integer underflow, setting `lexer->length` to a very large value (near `SIZE_MAX`). The parser then enters a loop attempting to consume this massive number of bytes, causing 100% CPU utilization and a Denial of Service (DoS) condition.
Patched
gpsd before commit dc966aa contains a heap-based out-of-bounds write vulnerability in the drivers/driver_nmea2000.c file. The hnd_129540 function, which handles NMEA2000 PGN 129540 (GNSS Satellites in View) packets, fails to validate the user-supplied satellite count against the size of the skyview array (184 elements). This allows an attacker to write beyond the bounds of the array by providing a satellite count up to 255, leading to memory corruption, Denial of Service (DoS), and potentially arbitrary code execution.