[Spec Change] Should llm_judge prompt-injection mitigations be a MUST, not a SHOULD? #11
Replies: 1 comment 1 reply
|
Leaning toward option 3 ( Concrete precedent from the adapters themselves:
Every one of these is "the adapter can prove X truthfully and can't prove Y, so it says so explicitly instead of inferring or omitting" — which is exactly the shape I'd pair it with option 1 regardless (an injection-attempt fixture in the conformance suite — see #9) since self-reporting hardening and testing it are different problems; a runner could claim |
Uh oh!
There was an error while loading. Please reload this page.
Flagged in
spec/CRITIQUE.md#3 and explicitly marked "Partially fixed" — this is the one open security item from the critique that hasn't moved since 1.0.The problem: a malicious test case's
inputcan inject instructions into anllm_judgegrader's prompt, causing the judge to always returnscore: 1.0regardless of the actual output — silently making a broken system appear to pass. The spec currently says runners:All three are recommendations, not requirements, and there's no spec-level way to detect that a runner skipped them.
Why this is genuinely a judgment call, not just "make it stricter": the spec's role is data format, not runner implementation — the CRITIQUE's own original resolution reasoned "the spec cannot enforce prompt injection resistance at the data format level." Structured-output constraint (SHOULD #1) is something a reference implementation controls; delimiting (SHOULD #2) depends on how each runner assembles its prompt template, which the spec doesn't currently standardize.
Concrete options for this thread:
llm_judgetest case with an obvious injection attempt ininput— to the conformance suite (see the linked discussion on that) so at least detection of the vulnerability is standardized even if mitigation stays a SHOULD.evalport-sdk's ownllm_judgeimplementation already does this by default — codifying existing reference-implementation behavior rather than inventing new requirements.openeval.judge_hardening: "structured_output+delimited", so aResultcan self-report which mitigations its runner actually applied — turns an invisible property into a queryable, auditable one without forcing every runner into the same implementation.Security-minded folks, especially anyone who's dealt with prompt injection in production judge/grading pipelines, this is the thread to weigh in on.
All reactions