Skip to content

Security P0: reject malformed MMS BIT STRING before reporting bit iteration #132

Closed

Description

@masarray

Repro: Security and Evidence workflow run 36316147544, Clang/libFuzzer reporting corpus, ASan heap-buffer-overflow at src/mms/reporting.cpp:141 in decode_bit_field.

Root cause: a one-byte raw BIT STRING with an unused-bit count 1..7 yields zero payload bits; unsigned payload_bytes*8-unused underflows and the decoder reads outside the byte vector. The fuzzer found this while exercising report inclusion/option fields.

Fix must be isolated from GUI PR #130 and must fail closed on malformed BIT STRING. Add regression for empty payload with nonzero unused count and zero-payload valid empty field; rerun test_reporting and sanitizer fuzz corpus. Do not weaken/skip Security and Evidence.


2026-10-23 cleanup disposition
Resolved in current main and preserved in #286: src/mms/reporting.cpp::decode_bit_field rejects unused > payload_bits before subtraction; tests/test_reporting.cpp::empty_payload_bit_string_unused_bits_fail_closed exercises malformed empty payload for option fields/inclusion, with valid padding retained. Close this already-fixed security issue; regression test remains, no code deletion.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions