Case study · OpenSMTPD · 2026-05-26

Five OpenSMTPD upstream fixes from a corrected per-claim disclosure

Gilles Chehade, OpenSMTPD’s lead maintainer, committed five hardening patches to the OpenBSD tree on 2026-05-26 following a corrected per-claim disclosure to the security team. All five name the practice as the diff author. None is remote code execution; the original chained-to-RCE framing was retracted three days earlier. This is the resolution side of the case study at the centre of The Calculator Discipline.

26 May 2026 · OpenSMTPD · OpenBSD usr.sbin/smtpd · defense-in-depth + conditional remote DoS · not RCE
Full technical disclosure: stuart-thomas.com/research/opensmtpd-2026-05-26/

What landed today

Five commits by Gilles Chehade (poolpOrg@), OpenSMTPD’s lead maintainer, landed in openbsd/src on 2026-05-26. All five name the practice as the diff author. The summary:

CommitSubjectFileClass
388bcda Reject oversized sockaddr payloads received over privsep IPC mproc.c Defense-in-depth, PR:H
3b4f66f clear userinfo before sending over imsg lka.c Same-uid stack residue (defense-in-depth)
c2e63d9 Ensure pending asynchronous lookups do not retain dangling smtp_session references after teardown smtp_session.c Real UAF — conditional remote DoS
b529354 validate encrypted queue buffer sizes before processing auth tag and IV data crypto.c Hardening (exploit framing retracted)
2c717ae Zero the temporary envelope parsing buffers before use queue_backend.c Defense-in-depth zero-init

Per-commit technical detail, including the verbatim public commit-body language for the two commits that carry it (388bcda and c2e63d9), is in the full disclosure.

Fix availability

The five commits are in OpenBSD −current as of 2026-05-26. Release timing and any backport to the supported −stable branches are the OpenBSD project’s call; the practice does not speculate on them.

The authoritative sources are:

The lka-side hostnametable configuration is the operational hook worth noting in the interim: a listener configured without hostnametable (or another lka-side table) does not reach the c2e63d9 use-after-free path. The OpenSMTPD-portable distribution at github.com/OpenSMTPD/OpenSMTPD is a separate downstream and follows its own release process.

Why this is published as a walk-back

The original disclosure to security@openbsd.org on 2026-05-23 framed six findings as “chained to Remote/Local Code Execution”. That framing was wrong. The disclosure had been produced from an AI-assisted source review the practice had not independently verified against the current OpenBSD 7.8 amd64 tree before sending, and the chain framing was inflation that the source observations did not actually support.

Theo de Raadt replied the same day with a single pointed question, paraphrased here with respect to the privacy of security@ correspondence: whether the practice was actually claiming to have exploited the chain; whether execution had been achieved.

The honest answer was no. No chain had been built, no execution had been achieved, no working proof-of-concept existed for any of the six claims. Each claim contained a real source observation, but the chain framing was assembled, not demonstrated.

The walk-back that followed is what produced the five fixes that landed today:

DateEvent
2026-05-23Original six-claim disclosure sent to security@openbsd.org, framed as “chained to RCE”.
2026-05-23Theo de Raadt replies asking, in substance, whether execution had been achieved.
2026-05-25Per-claim verification of all six claims against the current usr.sbin/smtpd/ tree at OpenBSD 7.8 amd64. Three real but inflated; one trivial same-uid residue; two retracted as fabricated.
2026-05-26 07:00Corrected per-claim reply sent to Theo. Opening sentence: “No. I did not achieve execution.”
2026-05-26 14:31Theo replies that he is forwarding the corrected list to the OpenSMTPD maintainers, who will commit what they judge worthwhile.
2026-05-26Within hours, Gilles Chehade (poolpOrg@) commits the five fixes listed in the table above. All five credit the practice as the diff author.

Two of the original six claims were retracted as fabricated. The smtp_reply vsnprintf %.*s trigger does not exist — no current format string in the function can produce a write greater than the 4096-byte buffer. The crypto_decrypt_buffer exploit framing fails the caller-bounds trace because the underflow lands in the safe return 0 decrypt-failure path before the dangerous memcpy is reached; upstream shipped the explicit input validation anyway as defense-in-depth (b529354), but the exploit story behind it does not hold.

A sixth real defect from the original mail — a double-close in queue_message_fd_r()’s error path in queue_backend.c — is not in this 2026-05-26 batch. Whether it lands separately is for the maintainers.

This is the resolution the original mail did not deserve. It happened because the OpenBSD posture treats corrections as worth reading rather than as evidence to escalate against the reporter. Both Theo de Raadt and Gilles Chehade handled the case professionally throughout. The practice does not take that for granted.

Severity, honestly

The five fixes that landed are, by category:

None of these is remote code execution. None is a chain. None is pre-auth network impact on the shipped binary. Defense-in-depth, hardening, and conditional remote DoS are the honest words; the practice intends to use them consistently.

Methodology context

The methodological lesson behind the walk-back is documented in a separate paper: The Calculator Discipline: A Taxonomy and Pre-Send Filter for AI-Assisted Vulnerability Disclosure Hallucinations (DOI 10.5281/zenodo.20393083), published 2026-05-26. The paper presents this OpenSMTPD case as its second case study, with per-claim verification preserved at the time of publication.

The four-verifier pre-send filter described in the paper’s §6 is published as penfold.disclose.hallucination_check in the practice’s open-source penfold toolkit (BSD-2-Clause, github.com/jetnoir/penfold). The original 2026-05-23 mail would have triggered severity_inflation and caller_bounds_gate verdicts had the verifier existed at the time of drafting. It does now.

The wider point survives. AI-assisted source review is useful, but it is not ground truth. A pre-send filter that catches the mechanical failure modes — bug-shape fabrication, evidence fabrication, severity inflation, trivial-as-critical — needs to sit between the AI’s confident output and the maintainer’s inbox. The five fixes today are what happens when that filter is applied retroactively, by hand, and the result is forwarded honestly. Other researchers running AI-assisted source review at this volume would benefit from the same posture.

What this case study is not

Full technical disclosure

stuart-thomas.com/research/opensmtpd-2026-05-26/ — per-commit detail, verbatim public commit-body language, full disclosure history, explicit non-claims.

Methodology paper

The Calculator Discipline: A Taxonomy and Pre-Send Filter for AI-Assisted Vulnerability Disclosure Hallucinations, S. Thomas, 2026. DOI 10.5281/zenodo.20393083. CC BY 4.0. This OpenSMTPD case is the paper’s second case study.

Toolkit

The pre-send filter described in §6 of the methodology paper ships as penfold.disclose.hallucination_check at github.com/jetnoir/penfold (BSD-2-Clause).

Credit

Gilles Chehade (poolpOrg@opensmtpd.org) authored all five upstream commits. Theo de Raadt (deraadt@openbsd.org) forwarded the corrected per-claim list upstream. Stuart Thomas is credited as “diff by Stuart Thomas <stuart.thomas@triageforge.co.uk>” on all five commits. None of the named maintainers endorses this case study or the methodology paper that accompanies it; they are credited only for the public work of theirs that produced these fixes.

Legal note

This case study is published under the Defamation Act 2013 facts-and-opinion convention. Commit hashes, dates, file paths, and the verbatim public commit-body language quoted in the full disclosure are accurate to the best of the author’s knowledge and are evidenced by the public github.com/openbsd/src mirror. The verbatim text of security@openbsd.org correspondence is not reproduced here out of respect for the list’s private status; paraphrasing preserves the substance. Named individuals are referenced only in their public capacity as committers and maintainers, in connection with their own public commits. They are characterised, where mentioned, as professional and prompt; this is the practice’s honest experience and an honest opinion held in good faith. Research was conducted on hardware owned by the author, within the scope permitted by the Computer Misuse Act 1990 (England and Wales) own-hardware exemption.