Skip to content

fix(deps): bump nodemailer to 9.1.1 in backend/functions - #175

Merged
acamarata merged 1 commit into
mainfrom
fix/nodemailer-advisories
Sep 13, 2026
Merged

acamarata merged 1 commit into
mainfrom
fix/nodemailer-advisories

Conversation

@acamarata

Copy link
Copy Markdown
Collaborator

Three open Dependabot high alerts against backend/functions, all on nodemailer,
all fixed by 9.1.1:

Advisory Issue
GHSA-2x7j-588g-ccc2 resolveContent() on a MailMessage bypasses disableFileAccess/disableUrlAccess when called with the legacy signature
addressparser Quadratic O(n²) time complexity — remote DoS via a crafted address list
IDN/Punycode Domain allow-list bypass leading to delivery to an attacker-controlled domain

Why the existing range didn't protect us

package.json already declared ^9.0.5, which permits 9.1.1. But
package-lock.json pinned 9.0.5, and CI installs with npm ci — which installs the
lock exactly and ignores what the range would allow. So the permissive range fixed
nothing on its own.

This is the same shape as the pnpm.overrides problem fixed in #174: a declaration
that reads correctly while the lockfile — the artifact the installer and the scanners
actually consume — still carries the vulnerable version.

Raising the declared floor to ^9.1.1 as well, so a future lock regeneration cannot
quietly resolve back to a vulnerable 9.0.x.

Tooling note

backend/functions is npm-managed and its CI job runs npm ci. Left as npm rather
than converted — that is a separate decision, not something to smuggle into a security
bump.

Verification

npm ci             exit 0
npm run typecheck  clean (tsc --noEmit)
npm test           95 pass, 0 fail

Remaining open highs after this

Only the two image-size advisories, which are already documented IgnoredVulns in
apps/mobile/osv-scanner.toml with the justification that no fixed version has been
published upstream and the package is build-time only, not in the shipped bundle.

Three open Dependabot high alerts against backend/functions, all on
nodemailer and all fixed by 9.1.1:

  GHSA-2x7j-588g-ccc2  resolveContent() on a MailMessage bypasses
                       disableFileAccess/disableUrlAccess via the legacy
                       signature
  addressparser        quadratic O(n^2) time, remote DoS via a crafted
                       address list
  IDN/Punycode         domain allow-list bypass, delivery to an
                       attacker-controlled domain

The declared range was already ^9.0.5, which permits 9.1.1, but
package-lock.json pinned 9.0.5 and CI installs with npm ci — so the range
alone fixed nothing. Raising the floor to ^9.1.1 as well so it cannot
silently regress to a vulnerable patch.

backend/functions is npm-managed (CI runs npm ci); left as npm rather than
converted.

Verified: npm ci exits 0, npm run typecheck clean, npm test 95 pass 0 fail.
@vercel

vercel Bot commented Sep 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
ntask-web Ignored Ignored Sep 13, 2026 10:36am UTC

Request Review

@acamarata
acamarata merged commit 254c220 into main Sep 13, 2026
15 checks passed
@acamarata
acamarata deleted the fix/nodemailer-advisories branch September 13, 2026 10:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant