Skip to content

security(attestation): refuse special evidence files without blocking on open #2303

Open

Description

@seonghobae

Finding

The #2302 single-read repair correctly switched scientific-validation evidence intake to os.open(..., O_NOFOLLOW) followed by descriptor fstat, but the untrusted root member is opened with blocking O_RDONLY before its regular-file type is known. A FIFO named as the sole sealed evidence member can therefore block the verifier in open(2) indefinitely while it waits for a writer, so the intended non-regular fail-closed contract is not reached.

This is an availability/integrity boundary defect in the unsigned verifier foundation, not a psychometric-policy change.

RED / acceptance

  1. Add a deterministic contract that intercepts the descriptor open and requires O_NONBLOCK together with O_NOFOLLOW before the untrusted member is opened. Do not use a test that can itself hang on a FIFO.
  2. Minimal repair: add O_NONBLOCK to the leaf open flags; regular-file semantics are unchanged, while FIFOs/devices can be opened without a blocking wait and rejected immediately by the existing fstat regular-file check.
  3. Preserve the one-byte-snapshot digest/parse binding from security(attestation): read sealed scientific evidence once before attestation #2302 and all security(attestation): isolate verifier outputs from sealed evidence and symlinked parents #2301 output safety.
  4. Keep 100% owned branch/docstring coverage in Scientific Validation Evidence Quality.
  5. Do not claim hosted GREEN until the repaired exact-head generation is terminal.

Refs #2299 #2300 #2301 #2302 #2164 ContextualWisdomLab/TEPP#637.

Activity

  1. seonghobae commented on Sep 20, 2026

    @seonghobae
    ContributorAuthor

    Implemented ordinary-forward on canonical #2300 owner lane.

    • source-level RED c68843d88288eed062f3a0941586821e267c92ea intercepts the untrusted leaf open and requires O_NOFOLLOW | O_NONBLOCK without constructing a potentially hanging FIFO fixture;
    • causal repair 22a0180297fb0ed9dde9bfc5960461bd4bdbef25 adds O_NONBLOCK to descriptor acquisition while preserving security(attestation): read sealed scientific evidence once before attestation #2302's one-byte-snapshot hash/parse binding and the existing descriptor fstat regular-file guard;
    • CHANGELOG 3edf38157e4bbd07541ba69e4e3274e34810aeef;
    • current doctoring/head 0306e65c16d79ed9a08098011e0875f3c04bf11e.

    No terminal hosted RED is claimed because repair followed immediately. Keep #2303 open until the exact 0306e65c... quality/security generation is terminal and independently reviewed. This remains unsigned verifier availability/integrity hardening, not signer authority.

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions