Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Address npm audit vulnerabilities (nodemailer, multer, express deps)

未关闭
#1,118 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 7 天内回复

@gangster 已经在做这个了。

开始于 2026年10月15日。

  • #1119 来自 @gangster —— 未关闭

评估

难度
4/5
预计耗时
3-5 天
新手友好度
35/100
Issue 类型
重构
描述清晰度
基本清楚
活跃度
活跃
技术栈
express, javascript, mysql, nodejs, sqlite

调研方向

Start with app/package.json and run npm audit to see which advisories remain. The payload names app/uploader.js (multer limits) and app/emailer.js with app/endpoints/manage_event.js (nodemailer use) as the code that changes, and the sqlite3 and hugo-installer install paths are separate. Done means the audit count drops, the test suite passes, and image upload and the confirmation email work locally. Major-version bumps (nodemailer, sqlite3, faker) need changelog review, so expect to ask maintainers before merging.

由索引模型根据 Issue 内容生成。

描述

npm audit reports 34 vulnerabilities (4 critical, 24 high, 4 moderate, 2 low).
Most are in dev, build, or install-time dependencies, but a few affect the production backend.

Production exposure

  • nodemailer ~7.0.11: the event confirmation email (app/endpoints/manage_event.js) sends to a user-supplied name and address, which is the input targeted by the addressparser DoS and recipient-domain bypass advisories.
    Fixed in 10.x (major).
  • multer ~2.1.1: the public image upload endpoint is exposed to several DoS advisories via crafted field names.
    app/uploader.js limits file count and size, but not fields, parts, or fieldNameSize.
    Fixed in 2.4.0.
  • qs / body-parser / express: query string DoS, reachable on every request.
    Fixed by npm audit fix.
  • proxy-addr (critical): low impact here since we set trust proxy to true and don't read req.ip.
    Fixed by npm audit fix.
  • mysql2 ~3.14.0: requires a malicious or impersonated database server.
    Fixed in 3.24.6.
  • lodash ~4.17.21: we only use pickBy, so not affected, but cheap to bump to 4.18.1.

Install, dev, and build only

  • tar / node-gyp / cacache (critical) via sqlite3@5, used at install time only; production uses MySQL.
    Fixed in sqlite3 6.x (major).
  • decompress / semver (critical) via hugo-installer, which extracts the Hugo release archive during postinstall.
    npm audit fix updates decompress; ignore the --force suggestion, which downgrades hugo-installer.
  • @faker-js/faker in tools/; helpers.fake isn't used.
    Fixed in 10.x (major).
  • @vue/server-renderer: cal/ is client-side only.
  • shell-quote, braces, micromatch, brace-expansion, nanoid, source-map-js, http-cache-semantics, ip-address: dev and build tooling only.

Proposed fix

  1. Run npm audit fix (non-breaking).
  2. Bump ranges in app/package.json: multer ~2.4.0, mysql2 ~3.24.6, lodash ~4.18.1.
  3. Upgrade nodemailer to 10.x and check app/emailer.js against the changelog.
  4. Upgrade sqlite3 to 6.x and @faker-js/faker to 10.x.
  5. Add fields, parts, and fieldNameSize limits to the multer config in app/uploader.js.
  6. Run the test suite and verify image upload and the confirmation email locally.
主要语言
JavaScript
星标
30
派生
26
平均合并
6 天 24 分钟
30 天内合并 PR
6

环境准备

  • 提供 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 没有贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

shift-org/shift-docs 的其他 Issue

查看 shift-org/shift-docs 的全部 Issue

相似的 Issue

更多 JavaScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。