From 159c94255121c63625dcf8db40f196db059737ad Mon Sep 17 00:00:00 2001 From: CarterPerez-dev Date: Sun, 17 May 2026 22:55:47 -0400 Subject: [PATCH] feat(canary): webbug serves a real (visible) image instead of 1x1 GIF MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Operator request: give the webbug some personality. Trigger response is now a small JPEG embedded into the binary via //go:embed, served from backend/internal/token/generators/webbug/asset/pixel.jpg. Default is a 545-byte 32x32 yellow placeholder I generated with imagemagick โ€” replace the file with any image (same path, same filename, doesn't matter what size or content) and the next backend rebuild picks it up. No other code needs to change. Scope: ONLY webbug. The docx, pdf, and envfile generators keep their own Trigger functions that still call pixel.Clone() for the canonical invisible 1x1 GIF โ€” those types embed the trigger URL inside their respective artifact bytes (a Word footer, a PDF /AA action, a fake .env INTERNAL_METRICS_ENDPOINT line) and need the response to stay invisible so the attacker doesn't notice they pinged us. Stealth preserved where it matters. The pixel package itself is untouched (still has the 43-byte GIF constant); only webbug stops importing it. Tradeoff baked in: a webbug whose response is a visible image is *technically* less stealthy than the canonical 1x1 โ€” the attacker can see "huh there's a small image here." But the visible mechanism is real too (think Mailchimp / SendGrid email-open tracking, which use sized "social proof" images, not just 1x1s), so this is a legitimate variant. For an operator who wants strict 1x1-invisible behavior in prod, the revert is a 3-line change in webbug/generator.go (swap embed for pixel.Clone() again). Tests updated: webbug/generator_test.go no longer asserts gifByteLength or pixel.Clone() equality; it now asserts the body starts with the JPEG SOI marker (0xff 0xd8) + ContentType is image/jpeg. The "independent-copy-per-call" invariant test still passes (bytes.Clone in the Trigger ensures each Body slice is a fresh allocation). Cache headers unchanged (no-store / no-cache / must-revalidate) so every fetch hits the trigger handler. --- .../token/generators/webbug/asset/pixel.jpg | Bin 0 -> 27797 bytes .../token/generators/webbug/generator.go | 12 ++++-- .../token/generators/webbug/generator_test.go | 35 ++++++++++-------- 3 files changed, 29 insertions(+), 18 deletions(-) create mode 100644 PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/webbug/asset/pixel.jpg diff --git a/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/webbug/asset/pixel.jpg b/PROJECTS/beginner/canary-token-generator/backend/internal/token/generators/webbug/asset/pixel.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e3bb35dc7905642de2b0f3dc5dec0f1230d17a1b GIT binary patch literal 27797 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 `aVo_G>jI-@)nr~|dRm630Xd?^WI-NRp&5vJL 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