blob: e3df4dc03985a29e60be2919333c8acfb16806e5 [file] [log] [blame]
========
Security
========
.. toctree::
Known vulnerabilities
=====================
Apache NuttX RTOS vulnerabilities are labelled with CVE (Common
Vulnerabilities and Exposures) identifiers. List of known, responsibly
disclosed, and fixed vulnerabilities are publicly available online at
`CVE.ORG <https://www.cve.org/CVERecord/SearchResults?query=nuttx>`_
and at the bottom of this page in the `NuttX CVEs`_ section.
`CVE <https://cve.org/>`_ IDs are unique identifiers given to security
vulnerabilities. The Apache Security Team is a
`CVE Numbering Authority (CNA) <https://www.cve.org/ProgramOrganization/CNAs>`_
covering all Apache projects and is the only group able to allocate IDs
to Apache Software Foundation project issues.
Not security vulnerabilities
============================
Apache NuttX RTOS is highly portable to over 15 different CPU architectures,
including microcontrollers with as tiny memory resources as single kilobytes
of RAM/Flash memory. Putting additional checks outside a generic nature would
dramatically impact final firmware performance and size.
**Function parameters and incoming data validation rests on the custom
application/firmware developer.**
Special care should be taken when handling:
* syscalls.
* pointers (always set to NULL before and after use).
* structures (always initialize with ``{0}`` before use).
* user controllable data (type and size).
* network data.
* dynamically allocated buffers.
.. note::
If you find a generic problem in existing code base that
may impact Confidentiality, Integrity, or Availability (i.e. information
leak, denial of service, remote code execution) and is not your own custom
application specific, please send us a security report.
Security Issues Handling
========================
Security related issues are handled in compliance with
`The Apache Security Team Guide <https://www.apache.org/security/>`_
and `Apache Committers Security Guide
<https://www.apache.org/security/committers.html>`_.
Please read these documents carefully before submitting and/or
handling a security vulnerabilities. Below is an extract of the information.
.. warning::
Do not enter details of security vulnerabilities in a project's public
bug tracker, issues, or pull requests. Do not make information about
the vulnerability public until it is formally announced at the end
of this process. Messages associated with any commits should not make
any reference to the security nature of the commit.
1. Report:
1. Please report potential security vulnerabilities over email to
security@nuttx.apache.org **before disclosing them in any public form**.
This enables responsible disclosure by providing a fix for everyone
impacted before details are made public. Messages sent to our security@
address are automatically copied to security@apache.org.
2. Please send one plain-text, unencrypted, email for each vulnerability
you are reporting. We may ask you to resubmit your report if you send
it as an image, movie, HTML, or PDF attachment when you could as easily
describe it with plain text.
3. Do not enter details of security vulnerabilities in a project's public
bug tracker, issues, or pull requests. **Do not make information about
the vulnerability public until it is formally announced at the end
of this process.** Messages associated with any commits should not make
any reference to the security nature of the commit.
4. Security fixes are usually part of the standard release cycle, but for
urgent cases special patch releases may be created to address the issue.
In order to keep this process smooth please provide us with as much
details as possible. **Reproducible examples, proof-of-concept code,
but most importantly fix patches are more than welcome.**
5. There are problems that we are well aware of, and have been reported
to us many times, but we do not classify as a security vulnerability, see
`Not security vulnerabilities`_ for details.
Please consider reporting them as Issue or Pull Request on GitHub instead.
6. The project team sends an e-mail to the original reporter to acknowledge
the report, with a copy to the relevant security mailing list.
2. Investigation:
1. The project team investigates the report and either rejects or accepts it.
2. Project team members may share information about the vulnerability
with domain experts (including colleagues at their employer) at the
discretion of the project's security team, providing that they make
clear that the **information is not for public disclosure.**
3. If the project team **rejects** the report, the team writes to the
reporter to explain why, with a copy to the relevant security mailing
list.
4. If the project team **accepts** the report, the team writes to the
reporter to let them know that they have accepted the report and that
they are working on a fix or validating fix provided by the reporter.
CVE ID is requested where problem details are reported upon resolution.
3. Resolution:
1. The project team agrees on a fix on their private list.
2. The project team requests a CVE (Common Vulnerabilities and Exposures)
ID from the internal portal, https://cveprocess.apache.org.
Apache Security Team can help determine if a report requires multiple
CVE IDs or if multiple reports should be merged under a single CVE ID.
CVE ID can be shared with the reporter.
3. The project team documents the details of the vulnerability and the fix
on the internal portal. The portal generates draft announcement texts.
For an example of an announcement see Tomcat's announcement of
CVE-2008-2370. The level of detail to include in the report is a matter
of judgement. Generally, reports should contain enough information to
enable people to assess the risk the vulnerability poses for their own
system, and no more. **Announcements do not normally include steps
to reproduce the vulnerability.**
4. Optionally CVE can be set into the REVIEW state to request a review from
the Apache Security team. Discussion is possible using the "comment"
feature which also sends the comments to the private mailing list(s).
5. The project team provides the reporter with a copy of the fix and the
draft vulnerability announcement for comment.
6. The project team agrees on the fix, the announcement, and the release
schedule with the reporter. If the reporter is unresponsive in a
reasonable timeframe this should not block the project team from moving
to the next steps, particularly if an issue is of high severity/impact.
7. The project team commits the fix **without making any reference that
the commit relates to a security vulnerability.**
8. The project team creates a release that includes the fix.
4. Public announcement:
1. After (or at the same time as) the release announcement, the project
team announces the vulnerability and the fix. CVE status is set to READY
in the internal portal, that is also used to send emails.
**This is the first point that any information regarding the
vulnerability is made public.** The vulnerability announcement should
be sent to the following destinations:
a. the same destinations as the release announcement.
b. the vulnerability reporter.
c. the project's security list (or security@apache.org if
the project does not have a dedicated security list).
d. oss-security@lists.openwall.com (subscription not required).
2. The project team updates the project's security pages.
NuttX CVEs
==========
CVE-2025-48769
--------------
* Title: fs/vfs/fs_rename: use after free.
* Published: 2026-01-01.
* Affected versions: >= 7.20 , < 12.11.0.
* Fixed in versions: 12.11.0.
* Type: `CWE-416 Use After Free <https://cwe.mitre.org/data/definitions/416.html>`_.
* Credits:
* Finder: Liu, Richard Jiayang <rjliu3@illinois.edu>.
* Remediation developer: Liu, Richard Jiayang <rjliu3@illinois.edu>.
* Coordinator: Arnout Engelen <engelen@apache.org>.
* Coordinator: Tomek CEDRO <cederom@apache.org>.
* Remediation reviewer: Xiang Xiao <xiaoxiang@apache.org>.
* Remediation reviewer: Jiuzhu Dong <jiuzhudong@apache.org>.
* References:
* https://www.cve.org/CVERecord?id=CVE-2025-48769.
* http://www.openwall.com/lists/oss-security/2025/12/31/11.
* https://github.com/apache/nuttx/pull/16455.
* https://lists.apache.org/thread/7m83v11ldfq7bvw72n9t5sccocczocjn.
Use After Free vulnerability was discovered in fs/vfs/fs_rename code of the
Apache NuttX RTOS, that due recursive implementation and single buffer use by
two different pointer variables allowed arbitrary user provided size buffer
reallocation and write to the previously freed heap chunk, that in specific
cases could cause unintended virtual filesystem rename/move operation results.
This issue affects Apache NuttX RTOS: from 7.20 before 12.11.0. Users of
virtual filesystem based services with write access especially when exposed
over the network (i.e. FTP) are affected and recommended to upgrade to
version 12.11.0 that fixes the issue.
CVE-2025-48768
--------------
* Title: fs/inode: fs_inoderemove root inode removal.
* Published: 2026-01-01.
* Affected versions: >= 10.0.0 , < 12.10.0.
* Fixed in version: 12.10.0.
* Type: `CWE-763 Release of Invalid Pointer or Reference <https://cwe.mitre.org/data/definitions/763.html>`_.
* Credits:
* Finder: Liu, Richard Jiayang <rjliu3@illinois.edu>.
* Remediation developer: Liu, Richard Jiayang <rjliu3@illinois.edu>.
* Coordinator: Arnout Engelen <engelen@apache.org>.
* Coordinator: Tomek CEDRO <cederom@apache.org>.
* Remediation reviewer: Alan Carvalho de Assis <acassis@apache.org>.
* Remediation reviewer: Tomek CEDRO <cederom@apache.org>.
* Remediation reviewer: Xiang Xiao <xiaoxiang@apache.org>.
* Remediation reviewer: Jiuzhu Dong <jiuzhudong@apache.org>.
* References:
* https://www.cve.org/CVERecord?id=CVE-2025-48768.
* http://www.openwall.com/lists/oss-security/2025/12/31/10.
* https://github.com/apache/nuttx/pull/16437.
* https://lists.apache.org/thread/nwo1kd08b7t3dyz082q2pghdxwvxwyvo.
Release of Invalid Pointer or Reference vulnerability was discovered in
fs/inode/fs_inoderemove code of the Apache NuttX RTOS that allowed root
filesystem inode removal leading to a debug assert trigger (that is disabled
by default), NULL pointer dereference (handled differently depending on the
target architecture), or in general, a Denial of Service. This issue affects
Apache NuttX RTOS: from 10.0.0 before 12.10.0. Users of filesystem based
services with write access that were exposed over the network (i.e. FTP)
are affected and recommended to upgrade to version 12.10.0 that fixes
the issue.
CVE-2025-47869
--------------
* Title: examples/xmlrpc: Fix calls buffers size.
* Published: 2025-06-16.
* Affected versions: >= 6.22 , < 12.9.0.
* Fixed in version: 12.9.0.
* Type: `CWE-119 Improper Restriction of Operations within the Bounds of a Memory Buffer <https://cwe.mitre.org/data/definitions/119.html>`_.
* Credits:
* Reporter: Chánh Phạm <chanhphamviet@gmail.com>.
* Remediation developer: Arnout Engelen <engelen@apache.org>.
* Coordinator: Arnout Engelen <engelen@apache.org>.
* Coordinator: Tomek CEDRO <cederom@apache.org>.
* Remediation reviewer: Alan Carvalho de Assis <acassis@apache.org>.
* Remediation reviewer: Alin Jerpelea <jerpelea@apache.org>.
* Remediation reviewer: Lee, Lup Yuen <lupyuen@apache.org>.
* Remediation reviewer: Xiang Xiao <xiaoxiang@apache.org>.
* Remediation reviewer: Jianyu Wang <wangjianyu3@xiaomi.com>.
* References:
* https://www.cve.org/CVERecord?id=CVE-2025-47869.
* http://www.openwall.com/lists/oss-security/2025/06/14/2.
* https://github.com/apache/nuttx-apps/pull/3027.
* https://lists.apache.org/thread/306qcqyc3bpb2ozh015yxjo9kqs4jbvj.
Improper Restriction of Operations within the Bounds of a Memory Buffer
vulnerability was discovered in Apache NuttX RTOS apps/exapmles/xmlrpc
application. In this example application device stats structure that stored
remotely provided parameters had hardcoded buffer size which could lead to
buffer overflow. Structure members buffers were updated to valid size of
CONFIG_XMLRPC_STRINGSIZE+1. This issue affects Apache NuttX RTOS users that
may have used or base their code on example application as presented in
releases from 6.22 before 12.9.0. Users of XMLRPC in Apache NuttX RTOS are
advised to review their code for this pattern and update buffer sizes
as presented in the version of the example in release 12.9.0.
CVE-2025-47868
--------------
* Title: tools/bdf-converter.: tools/bdf-converter: Fix loop termination
condition.
* Published: 2025-06-16.
* Affected versions: >= 6.9 , < 12.9.0.
* Fixed in version: 12.9.0.
* Type:
* `CWE-787 Out-of-bounds Write <https://cwe.mitre.org/data/definitions/787.html>`_.
* `CWE-122 Heap-based Buffer Overflow <https://cwe.mitre.org/data/definitions/122.html>`_.
* Credits:
* Finder: Chánh Phạm <chanhphamviet@gmail.com>.
* Remediation developer: Nathan Hartman <hartmannathan@apache.org>.
* Coordinator: Arnout Engelen <engelen@apache.org>.
* Coordinator: Tomek CEDRO <cederom@apache.org>
* Remediation reviewer: Alan Carvalho de Assis <acassis@apache.org>.
* Remediation reviewer: Alin Jerpelea <jerpelea@apache.com>.
* Remediation reviewer: Lee, Lup Yuen <lupyuen@apache.org>.
* Remediation reviewer: Nathan Hartman <hartmannathan@apache.org>.
* Remediation reviewer: Simone Falsetti <simbit18@apache.org>.
* References:
* https://www.cve.org/CVERecord?id=CVE-2025-47868.
* http://www.openwall.com/lists/oss-security/2025/06/14/1.
* https://github.com/apache/nuttx/pull/16000.
* https://lists.apache.org/thread/p4o2lcqgspx3ws1n2p4wmoqbqow1w1pw.
Out-of-bounds Write resulting in possible Heap-based Buffer Overflow
vulnerability was discovered in tools/bdf-converter font conversion utility
that is part of Apache NuttX RTOS repository. This standalone program is
optional and neither part of NuttX RTOS nor Applications runtime, but active
bdf-converter users may be affected when this tool is exposed to external
provided user data data (i.e. publicly available automation). This issue
affects Apache NuttX: from 6.9 before 12.9.0. Users are recommended
to upgrade to version 12.9.0, which fixes the issue.
CVE-2025-35003
--------------
* Title: NuttX Bluetooth Stack HCI and UART DoS/RCE Vulnerabilities.
* Published: 2025-05-26.
* Affected versions: >= 7.25 , < 12.9.0.
* Fixed in version: 12.9.0.
* Type:
* `CWE-119 Improper Restriction of Operations within the Bounds of a Memory Buffer <https://cwe.mitre.org/data/definitions/119.html>`_.
* `CWE-121 Stack-based Buffer Overflow <https://cwe.mitre.org/data/definitions/121.html>`_.
* Credits:
* Reporter: Chongqing Lei <leicq@seu.edu.cn>.
* Reporter: Zhen Ling <zhenling@seu.edu.cn>.
* Remediation developer: Chongqing Lei <leicq@seu.edu.cn>.
* Coordinator: Arnout Engelen <engelen@apache.org>.
* Coordinator: Tomek CEDRO <cederom@apache.org>.
* Remediation reviewer: Lee, Lup Yuen <lupyuen@apache.org>.
* Remediation reviewer: Xiang Xiao <xiaoxiang@apache.org>.
* References:
* https://www.cve.org/CVERecord?id=CVE-2025-35003.
* http://www.openwall.com/lists/oss-security/2025/05/26/1.
* https://github.com/apache/nuttx/pull/16179.
* https://lists.apache.org/thread/k4xzz3jhkx48zxw9vwmqrmm4hmg78vsj.
Improper Restriction of Operations within the Bounds of a Memory Buffer and
Stack-based Buffer Overflow vulnerabilities were discovered in Apache NuttX
RTOS Bluetooth Stack (HCI and UART components) that may result in system
crash, denial of service, or arbitrary code execution, after receiving
maliciously crafted packets. NuttX's Bluetooth HCI/UART stack users are
advised to upgrade to version 12.9.0, which fixes the identified
implementation issues.
CVE-2021-34125
--------------
* Published: 2023-03-09.
* Affected versions: PX4-Autopilot <= 1.11.3.
* Fixed in version:
* nuttx#016873788280ca815ba886195535bbe601de6e48.
* nuttx-apps#2fc1157f8585acc39f13a31612ebf890f41e76ca.
* px4-autopilot#555f900cf52c0057e4c429ff3699c91911a21cab.
* References:
* https://www.cve.org/CVERecord?id=CVE-2021-34125.
* https://github.com/PX4/PX4-Autopilot/issues/17062.
* https://github.com/PX4/PX4-Autopilot/pull/17264/commits/555f900cf52c0057e4c429ff3699c91911a21cab.
* https://www.st.com/resource/en/application_note/dm00493651-introduction-to-stm32-microcontrollers-security-stmicroelectronics.pdf.
* https://nuttx.apache.org/.
* https://nuttx.apache.org/docs/latest/applications/nsh/commands.html#access-memory-mb-mh-and-mw.
* https://gist.github.com/swkim101/f473b9a60e6d4635268402a2cd2025ac.
* https://github.com/apache/incubator-nuttx/pull/3292/commits/016873788280ca815ba886195535bbe601de6e48.
* https://github.com/apache/incubator-nuttx-apps/pull/647/commits/2fc1157f8585acc39f13a31612ebf890f41e76ca.
An issue discovered in Yuneec Mantis Q and PX4-Autopilot v1.11.3 and below
allow attacker to gain access to sensitive information via various nuttx
commands.
CVE-2021-26461
--------------
* Title: malloc, realloc and memalign implementations are vulnerable
to integer wrap-arounds.
* Published: 2021-06-21.
* Affected versions: < 10.1.0.
* Fixed in version: 10.1.0.
* Type: `CWE-190 Integer Overflow or Wraparound <https://cwe.mitre.org/data/definitions/190.html>`_.
* Credits: Apache NuttX would like to thank Omri Ben-Bassat of Section 52
at Azure Defender for IoT of Microsoft Corp for bringing this issue
to our attention.
* References:
* https://www.cve.org/CVERecord?id=CVE-2021-26461.
* https://lists.apache.org/thread.html/r806fccf8b003ae812d807c6c7d97950d44ed29b2713418cbe3f2bddd%40%3Cdev.nuttx.apache.org%3E.
Apache Nuttx Versions prior to 10.1.0 are vulnerable to integer wrap-around
in functions malloc, realloc and memalign. This improper memory assignment
can lead to arbitrary memory allocation, resulting in unexpected behavior
such as a crash or a remote code injection/execution.
CVE-2020-17529
--------------
* Title: Apache NuttX (incubating) Out of Bound Write from invalid
fragmentation offset value specified in the IP header.
* Published: 2020-12-09.
* Affected versions: < 10.0.1.
* Fixed in version: 10.0.1.
* Type: `CWE-787 Out-of-bounds Write <https://cwe.mitre.org/data/definitions/787.html>`_.
* Credits: Apache NuttX would like to thank Forescout for reporting the issue.
* References:
* https://www.cve.org/CVERecord?id=CVE-2020-17529.
* http://www.openwall.com/lists/oss-security/2020/12/09/5.
* https://lists.apache.org/thread.html/r4d71ae3ab96b589835b94ba7ac4cb88a704e7307bceefeab749366f3%40%3Cdev.nuttx.apache.org%3E.
Out-of-bounds Write vulnerability in TCP Stack of Apache NuttX (incubating)
versions up to and including 9.1.0 and 10.0.0 allows attacker to corrupt
memory by supplying and invalid fragmentation offset value specified
in the IP header. This is only impacts builds with both CONFIG_EXPERIMENTAL
and CONFIG_NET_TCP_REASSEMBLY build flags enabled.
CVE-2020-17528
--------------
* Title: Apache NuttX (incubating) Out of Bound Write from invalid TCP
Urgent length.
* Published: 2020-12-09.
* Affected versions: < 10.0.1.
* Fixed in version: 10.0.1.
* Type: `CWE-787 Out-of-bounds Write <https://cwe.mitre.org/data/definitions/787.html>`_.
* Credits: Apache NuttX would like to thank Forescout for reporting the issue.
* References:
* https://www.cve.org/CVERecord?id=CVE-2020-17528.
* http://www.openwall.com/lists/oss-security/2020/12/09/4.
* https://lists.apache.org/thread.html/r7f4215aba288660b41b7e731b6262c8275fa476e91e527a74d2888ea%40%3Cdev.nuttx.apache.org%3E.
Out-of-bounds Write vulnerability in TCP stack of Apache NuttX (incubating)
versions up to and including 9.1.0 and 10.0.0 allows attacker to corrupt
memory by supplying arbitrary urgent data pointer offsets within TCP packets
including beyond the length of the packet.
CVE-2020-1939
-------------
* Published: 2020-05-12.
* Affected versions: >= 6.15 , <= 8.2.
* Fixed in version: 9.0.0.
* References:
* https://www.cve.org/CVERecord?id=CVE-2020-1939.
* https://lists.apache.org/thread.html/re3adc65ff4d8d9c34e5bccba3941a28cbb0a47191c150df2727e101d%40%3Cdev.nuttx.apache.org%3E.
The Apache NuttX (Incubating) project provides an optional separate "apps"
repository which contains various optional components and example programs.
One of these, ftpd, had a NULL pointer dereference bug. The NuttX RTOS itself
is not affected. Users of the optional apps repository are affected only
if they have enabled ftpd. Versions 6.15 to 8.2 are affected.
CVE-2018-20578
--------------
* Published: 2018-12-28.
* Affected versions: < 7.27.
* Fixed in version: 7.27.
* References:
* https://www.cve.org/CVERecord?id=CVE-2018-20578.
* https://bitbucket.org/nuttx/nuttx/issues/119/denial-of-service-infinite-loop-while.
* https://bitbucket.org/nuttx/nuttx/downloads/nuttx-7_27-README.txt.
An issue was discovered in NuttX before 7.27. The function
netlib_parsehttpurl() in apps/netutils/netlib/netlib_parsehttpurl.c
mishandles URLs longer than hostlen bytes (in the webclient, this is set
by default to 40), leading to an Infinite Loop.
The attack vector is the Location header of an HTTP 3xx response.