From 194d96d69be14ac8a18fb08f8ef7aa0818cdda33 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 1 Aug 2026 11:18:03 +0000 Subject: [PATCH] fix(security): address timing attack vulnerability in webhook auth Replaces simple string comparisons (`!==`) with a `timingSafeStringEqual` utility that leverages `node:crypto`'s `timingSafeEqual`. This utility handles differing lengths without immediately returning, mitigating timing attacks on the `WEBHOOK_SECRET` and `DAILY_DIGEST_SECRET_KEY` tokens. Applies to `api/webhooks/post`, `api/webhooks/google-sheets`, and `api/newsletter/daily-digest`. Tests for the utility have been added. Co-authored-by: Sparkier <5690524+Sparkier@users.noreply.github.com> --- bun.lockb | Bin 227489 -> 207645 bytes src/lib/server/auth.test.ts | 26 ++++++++++++++++ src/lib/server/auth.ts | 28 ++++++++++++++++++ .../api/newsletter/daily-digest/+server.ts | 3 +- .../api/webhooks/google-sheets/+server.ts | 3 +- src/routes/api/webhooks/post/+server.ts | 3 +- 6 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 src/lib/server/auth.test.ts create mode 100644 src/lib/server/auth.ts diff --git a/bun.lockb b/bun.lockb index e63e1290d5dae7d7f863764f04c18cac29da89a3..0b684a163c23a4f1355921de2dd59320aedc277d 100755 GIT binary patch delta 64459 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 HHtqiaJA+Gj delta 74194 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

mdxP8U)s~yT5~sY3Fkzy;<;*_cj1zQHT~Q- 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 { + it('should return true for identical strings', () => { + expect(timingSafeStringEqual('secret_token', 'secret_token')).toBe(true); + }); + + it('should return false for different strings of the same length', () => { + expect(timingSafeStringEqual('secret_token', 'wrong__token')).toBe(false); + }); + + it('should return false for different strings of different lengths', () => { + expect(timingSafeStringEqual('secret', 'very_long_wrong_token')).toBe(false); + }); + + it('should return false if actual string is null', () => { + // Ensure it doesn't throw when null is passed + expect(timingSafeStringEqual('secret_token', null)).toBe(false); + }); + + it('should return false for substring matches', () => { + expect(timingSafeStringEqual('secret', 'sec')).toBe(false); + expect(timingSafeStringEqual('secret', 'secrett')).toBe(false); + }); +}); diff --git a/src/lib/server/auth.ts b/src/lib/server/auth.ts new file mode 100644 index 0000000..d1ebac4 --- /dev/null +++ b/src/lib/server/auth.ts @@ -0,0 +1,28 @@ +import { timingSafeEqual } from 'node:crypto'; + +/** + * Securely compares two strings to prevent timing attacks. + * Uses `node:crypto.timingSafeEqual` under the hood. + * + * @param expected The expected string (e.g., the secret). + * @param actual The actual string provided (e.g., the header value). + * @returns true if the strings match perfectly, false otherwise. + */ +export function timingSafeStringEqual(expected: string, actual: string | null): boolean { + if (actual === null) { + return false; + } + + const expectedBuffer = Buffer.from(expected); + const actualBuffer = Buffer.from(actual); + + if (expectedBuffer.length !== actualBuffer.length) { + // To prevent timing attacks based on length, we still do a comparison + // even if lengths differ, comparing the expected against itself. + // We use a throw-away operation. + timingSafeEqual(expectedBuffer, expectedBuffer); + return false; + } + + return timingSafeEqual(expectedBuffer, actualBuffer); +} diff --git a/src/routes/api/newsletter/daily-digest/+server.ts b/src/routes/api/newsletter/daily-digest/+server.ts index 4ad303d..7ef8597 100644 --- a/src/routes/api/newsletter/daily-digest/+server.ts +++ b/src/routes/api/newsletter/daily-digest/+server.ts @@ -10,12 +10,13 @@ import { json, error } from '@sveltejs/kit'; import { Resend } from 'resend'; import { escapeHtml } from '$lib/utils'; import type { RequestHandler } from './$types'; +import { timingSafeStringEqual } from '$lib/server/auth'; const resend = new Resend(RESEND_API_KEY); export const POST: RequestHandler = async ({ locals: { supabase }, request }) => { const authHeader = request.headers.get('Authorization'); - if (authHeader !== `Bearer ${DAILY_DIGEST_SECRET_KEY}`) { + if (!timingSafeStringEqual(`Bearer ${DAILY_DIGEST_SECRET_KEY}`, authHeader)) { return json({ message: 'Unauthorized' }, { status: 401 }); } diff --git a/src/routes/api/webhooks/google-sheets/+server.ts b/src/routes/api/webhooks/google-sheets/+server.ts index feb93a2..7805cb1 100644 --- a/src/routes/api/webhooks/google-sheets/+server.ts +++ b/src/routes/api/webhooks/google-sheets/+server.ts @@ -3,6 +3,7 @@ import { WEBHOOK_SECRET, SUPABASE_SERVICE_ROLE_KEY } from '$env/static/private'; import { PUBLIC_SUPABASE_URL } from '$env/static/public'; import { createClient } from '@supabase/supabase-js'; import { getDefaultExpirationDate } from '$lib/utils'; +import { timingSafeStringEqual } from '$lib/server/auth'; // Use the service role key to bypass RLS policies. // The anon key is subject to RLS and will silently block inserts @@ -12,7 +13,7 @@ const supabaseAdmin = createClient(PUBLIC_SUPABASE_URL, SUPABASE_SERVICE_ROLE_KE export const POST = async ({ request }) => { const authHeader = request.headers.get('Authorization'); - if (!authHeader || authHeader !== `Bearer ${WEBHOOK_SECRET}`) { + if (!timingSafeStringEqual(`Bearer ${WEBHOOK_SECRET}`, authHeader)) { return new Response('Unauthorized', { status: 401 }); } diff --git a/src/routes/api/webhooks/post/+server.ts b/src/routes/api/webhooks/post/+server.ts index cc9c700..90fe35c 100644 --- a/src/routes/api/webhooks/post/+server.ts +++ b/src/routes/api/webhooks/post/+server.ts @@ -1,13 +1,14 @@ import { ADMIN_EMAIL, FROM_EMAIL, RESEND_API_KEY, WEBHOOK_SECRET } from '$env/static/private'; import { json } from '@sveltejs/kit'; import { Resend } from 'resend'; +import { timingSafeStringEqual } from '$lib/server/auth'; const resend = new Resend(RESEND_API_KEY); export async function POST({ request }) { const authHeader = request.headers.get('Authorization'); - if (!authHeader || authHeader !== `Bearer ${WEBHOOK_SECRET}`) { + if (!timingSafeStringEqual(`Bearer ${WEBHOOK_SECRET}`, authHeader)) { return new Response('Unauthorized', { status: 401 }); }