---
id: "CVE-2025-55449"
kind: "vulnerability"
aliases: ["CVE-2025-55449", "GHSA-4m32-cjv7-f425"]
title: "AstrBot is vulnerable to RCE with hard-coded JWT signing keys"
severity: "critical"
cvss: 9.8
epss: 0.00281
exploited: false
status: "open"
category: "package"
products: [{"name": "astrbot", "fixed": ["3.5.18"], "affected": "< 3.5.18", "ecosystem": "pypi"}, {"name": "astrbot", "fixed": [], "affected": "= 3.5.15", "ecosystem": "vendor"}]
ecosystems: ["pypi", "vendor"]
tags: ["astrbot", "cwe-321", "cwe-345", "cwe-798", "package", "pypi", "python", "self-hosted"]
not_affected_if: ["dashboard-not-exposed", "patched-version"]
published_at: "2025-11-14T21:52:23+00:00"
first_seen_at: "2026-10-27T15:18:29+00:00"
updated_at: "2026-10-27T15:32:59+00:00"
sources: [{"source": "ghsa", "url": "https://github.com/advisories/GHSA-4m32-cjv7-f425", "first_seen_at": "2026-10-27T15:18:29+00:00"}, {"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2025-55449", "first_seen_at": "2026-10-27T15:32:59+00:00"}]
---

# AstrBot is vulnerable to RCE with hard-coded JWT signing keys

AstrBot signs its dashboard login tokens with a hard-coded key that is public in the source code. An attacker can forge an admin token, install a malicious Python plugin, and execute arbitrary commands on the host.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- pypi:astrbot affected < 3.5.18 fixed 3.5.18
- vendor:astrbot affected = 3.5.15 fixed ?

## How to check

- Run `pip show astrbot` and confirm the installed version is below `3.5.18`
- Check whether the dashboard is reachable from the internet or an untrusted network

## Fix

- Upgrade the `astrbot` package to `3.5.18` or later
- Rotate any credentials or secrets on hosts that ran an affected version with a reachable dashboard

## Timeline

- 2026-10-27T15:18:29+00:00 ghsa https://github.com/advisories/GHSA-4m32-cjv7-f425
- 2026-10-27T15:32:59+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2025-55449

## From the sources

### Summary
AstrBot uses a hard-coded JWT signing key, allowing attackers to execute arbitrary commands by installing a malicious plugin.

### Details

AstrBot uses a [hard-coded JWT signing key](https://github.com/AstrBotDevs/AstrBot/blob/v3.5.16/astrbot/core/__init__.py), which allows attackers to bypass the authentication mechanism. Once bypassed, the attacker can install a Python plugin that will be imported [here](https://github.com/AstrBotDevs/AstrBot/blob/master/astrbot/dashboard/routes/plugin.py), enabling arbitrary command execution on the target host.

### Impact

All publicly accessible AstrBot instances are vulnerable.

For more information, please see: [CVE-2025-55449-AstrBot-RCE](https://github.com/Marven11/CVE-2025-55449-AstrBot-RCE)

### Patch

This vulnerability was first reported on **2025-06-21** and was patched on the **same day** (2025-06-21).

The vulnerability was publicly disclosed on **2025-11-14**. Prior to public disclosure, monitoring from AstrBot Cloud indicated that fewer than 2% of deployed instances were still running the affected version. Therefore, this disclosure is not expected to have a significant impact on existing active instances.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
