Skip to main content

Boteraser | Website and Server Security Solutions

🛡️ CVE-2026-47731 — ait-core

🔴 CVSS 9.5 — Critical ✅ No Known Exploit CWE-22 NVD
9.5
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

NASA AMMOS Instrument Toolkit: Path traversal resulting in arbitrary file append (can be triggered over the network by unauthenticated attacker)

1. Summary

The Binary Stream Capture (BSC) component exposes an unauthenticated HTTP API for dynamically creating packet capture “handlers.” Because the code blindly trusts path‑related form fields, a remote client can:

  • Bypass the configured log root and direct BSC to log to arbitrary filesystem paths (path traversal / directory escape), and
  • Append attacker‑controlled data to those files, using the privileges of theait-bsc process.

There are two ways for a remote attacker to trigger this:

1. If the attacker has access to the network where ait-bsc is deployed (a reason for that could be that the ports are publicly accessible), the payloads can be directly sent to the server to trigger the arbitrary file append. This type of attack is demonstrated in python_poc.py.

2. Even if the attacker does not have direct access to the network because the software is running in a local network, it is possible to exploit this if a bad actor in that network opens an attacker-controlled website (which might be a website created by an attacker, or a third-party website compromised by the attacker). The browser javascript can automatically send the requests necessary to exploit this into the local network. This is even possible if the server is only accessible on localhost. This type of attack is demonstrated by attacker_tcp.py and test1.html (first launch the attacker TCP server, then start a webserver to host test1.html, for example using python3 -m http.server 7000,

and open test1.html).

Impact

This issue affects BSC (Binary Stream Capture) and usage of the ait-bsc server. This impacts AIT-Core versions before 3.1.1, from 2.x before 2.6.1. Users are recommended to upgrade to version 3.1.1 or 2.6.1.

Details

A remote attacker can use this vulnerability to append data to arbitrary files on the system (if the ait-bsc has privileges to write to them). It is easy to use this to corrupt data on the system (which can include the AIT-Core python code to crash the server after it is restarted and python attempts to execute the corrupted code). It should be mentioned here that there seems to be a bug in the TCP handler that results in a lot of data being written in an infinite loop after the connection has been closed, this could result in excessive disk space use. That the attacker can modify executable files like python or bash scripts means that this vulnerability could also lead to Remote Code Execution as soon as the user runs the modified code. However, depending on the system, it is not so easy to execute this attack in practice (it might not be possible), because ait-bsc adds a header in front of attacker-controlled data.

Fix Information

The vulnerability is mitigated by constraining BSC ability to write paths only in the project root log directory which is configured through the bsc.yaml. Additionally, any attempts to traverse outside of the configured location are rejected.

Patches

  • 3.1.1
  • 2.6.1

2. Affected Code Paths

2.1 REST entry point: /NAME/start

StreamCaptureManagerServer exposes an unauthenticated POST endpoint:

```python

# ait/core/bsc.py

class StreamCaptureManagerServer(Bottle):

def _route(self):

self._app.route("/", method="GET", callback=self._get_logger_list)

self._app.route("/stats", method="GET", callback=self._fetch_handler_stats)

self._app.route(

"/<name>/start", method="POST", callback=self._add_logger_by_name

)

self._app.route(

"/<name>/stop", method="DELETE", callback=self._stop_logger_by_name

)

...

```

Handler:

```python

def _add_logger_by_name(self, name):

...

data = dict(request.forms)

loc = data.pop("loc", "")

port = data.pop("port", None)

conn_type = data.pop("conn_type", None)

if not port or not conn_type:

raise ValueError("Port and/or conn_type not set")

address = [loc, int(port)]

if "rotate_log" in data:

data["rotate_log"] = True if data == "true" else False

if "rotate_log_delta" in data:

data["rotate_log_delta"] = int(data["rotate_log_delta"])

self._logger_manager.add_logger(name, address, conn_type, **data)

```

All form fields except loc, port, conn_type are passed directly as **data into add_logger.

This includes attacker‑controlled path, file_name_pattern, and potentially log_dir_path.

There is no authentication on this route.

2.2 Manager: unvalidated path and log_dir_path

StreamCaptureManager.add_logger:

```python

# ait/core/bsc.py

def add_logger(self, name, address, conn_type, log_dir_path=None, **kwargs):

capture_handler_conf = kwargs

if not log_dir_path:

log_dir_path = self._mngr_conf["root_log_directory"]

log_dir_path = os.path.normpath(os.path.expanduser(lo

How this vulnerability can be exploited

This issue can be reached over the network, attack complexity is low, an attacker needs no privileges on the target. No user interaction is required. The scope is unchanged, so the impact stays within the vulnerable component. Rated impact: confidentiality none, integrity high, availability high.

CVSS metrics in full

The score comes from this vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H

  • Attack vector: Network — reachable from anywhere that can route to the service.
  • Attack complexity: Low — the attack works reliably, with no preparation.
  • Privileges required: None — an unauthenticated stranger can try it.
  • User interaction: None — nobody has to be tricked into anything.
  • Scope: Unchanged — the damage stays inside the vulnerable component.
  • Confidentiality impact: None.
  • Integrity impact: High — total loss, or loss the attacker controls.
  • Availability impact: High — total loss, or loss the attacker controls.

Weakness class

CVE-2026-47731 is classified as CWE-22: Path Traversal. A file path built from user input is not confined to the intended directory, letting an attacker reach files elsewhere on the filesystem.

Affected software

CVE-2026-47731 is recorded against 2 packages.

  • ait-core (from 3.1.0 up to 3.1.1)
  • unknown

Timeline and source

Published on 29 June 2026 and last revised on 2 July 2026. No public exploit is currently recorded for this entry. Record sourced from NVD.

References

github.com (Web)
github.com (Package)
github.com (Web)
github.com (Web)
pypi.org (Package)
github.com (Advisory)
nvd.nist.gov (Advisory)

Other advisories for this package

ait-core has other advisories on record. If you are patching this one, these are worth checking on the same host:

Same weakness in other software

These advisories are the same class of weakness (CWE-22: Path Traversal) in other software:

Details

Severity CRITICAL
CVSS Score 9.5
CVSS Vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
CWE CWE-22
Public Exploit ✅ No
Source NVD
Published 2026-06-29
Updated 2026-08-20
Modified 2026-07-02
Fix URL N/A

Affected Packages

Software From version Fixed in
ait-core 3.1.0 3.1.1
unknown — —

Similar Threats

Exploit Protection

Are you running ait-core?

CVE-2026-47731 carries CVSS 9.5 Critical rating. BotEraser checks your installation against this and other known CVE records, and blocks IPs associated with exploit activity.

Check My Site For CVE-2026-47731 →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.

Browse related advisories

All advisoriesCVECVE 2026
✓