← back to George Gmail
verification/e2e-proof.json
58 lines
{
"intent": "Remediate GHSA-p6gq-j5cr-w38f without changing George's send-with-attachment MIME behavior",
"risk_tier": "R1",
"environment": "local dependency and streamTransport only; no George process, Gmail API, draft/send, PM2, deploy, production write, or remote push",
"baseline_commit": "9cfb00ae972c9d65dfa67644031a77eec0ccf641",
"timestamp": "2026-08-28T21:29:08-07:00",
"ticket": "TK-10946-remediate-nodemailer-ghsa-p6gq-j5cr-w38f",
"commands": [
"npm test",
"node --check server.js",
"node --check lib/attachment-mime.js",
"node --check test/nodemailer-security.test.js",
"npm audit --omit=dev --audit-level=high",
"git diff --check"
],
"assertions": [
{
"boundary": "dependency advisory",
"verdict": "PASS",
"evidence": "package and lockfile resolve exact nodemailer 9.0.6; fresh npm audit reports 0 vulnerabilities"
},
{
"boundary": "production usage",
"verdict": "PASS",
"evidence": "send-with-attachment continues to map caller content_base64 into in-memory Buffer attachments; production now calls the tested buildAttachmentMime helper with disableFileAccess and disableUrlAccess forced true"
},
{
"boundary": "MIME compatibility",
"verdict": "PASS",
"evidence": "hermetic production-helper test generated multipart/mixed MIME with UTF-8 subject, expected addressing, filename, content type, and exact base64 attachment bytes"
},
{
"boundary": "file and URL access controls",
"verdict": "PASS",
"evidence": "the production helper rejected html.path and raw.path with EFILEACCESS, and html.href and raw.href with EURLACCESS; loopback URL targets were never contacted"
},
{
"boundary": "existing compliance behavior",
"verdict": "PASS",
"evidence": "the complete existing send-preflight suite still passes"
},
{
"boundary": "side effects",
"verdict": "PASS",
"evidence": "tests used streamTransport buffers only; no Gmail client, live service, account, network URL, or persistent message state was touched"
}
],
"negative_checks": [
"filesystem-backed HTML body",
"URL-backed HTML body targeting loopback",
"message-level raw filesystem input from the advisory",
"message-level raw URL input from the advisory"
],
"cleanup": "No server or external fixture was started; generated MIME remained in process memory and exited with the test process",
"residual_risk": "Nodemailer remains a direct security-sensitive dependency; keep the exact patched pin and re-run npm audit during future upgrades",
"verdict": "PASS"
}