apostrophecms-form

Ecosystem: npm

Downloads: 2.01 K

Vulnerabilities from the last (months)
  • 0CriticalAffects 0 versions
  • 0HighAffects 0 versions
  • 0MediumAffects 0 versions
  • 2ModerateAffects 2 versions
  • 0LowAffects 0 versions
Severity distribution (all time)
2vulnerabilities
  • Critical0 (0.0%)
  • High0 (0.0%)
  • Medium0 (0.0%)
  • Moderate2 (100.0%)
  • Low0 (0.0%)

Monthly breakdown

  • 2 vulnerabilities
    • Critical: 0
    • High: 0
    • Medium: 0
    • Moderate: 2
    • Low: 0

Vulnerabilities (2)

Known vulnerabilities affecting apostrophecms-form, based on data from OSV.

Vulnerabilities affecting apostrophecms-form
IDSeveritySummaryAffected versionsPublishedSource
GHSA-44qr-rrjg-2cqqModerateApostropheCMS: CAPTCHA response token not URL-encoded**Summary** Form and login CAPTCHA verification interpolate the user-supplied widget token unencoded into the server-side verification URL/body, allowing a crafted token to inject query parameters into the reCAPTCHA/hCaptcha verify request. **Details** - `packages/form/lib/recaptcha.js:39` — `recaptchaUri = 'https://www.google.com/recaptcha/api/siteverify?secret=${recaptchaSecret}&response=${input.recaptcha}'` - `packages/login-recaptcha/index.js:44` — same pattern for login - `packages/login-hcaptcha/index.js:47` — `body: 'response=${token}&secret=${secret}'` **PoC** ``` input.recaptcha = '
  • < 1.5.5
GitHub (opens in a new tab)
GHSA-89mh-mm8c-mv7fModerateApostropheCMS: Unauthenticated unbounded multipart upload → disk-exhaustion DoS**Summary** The form submission endpoint runs `multer({ dest: os.tmpdir() }).any()` before authentication, API-key, CSRF-equivalent, or form-existence logic, with no size/count/rate limits. Unauthenticated users can stream unbounded bodies to disk per request; cleanup occurs only after the full body is received. **Details** `packages/form/index.js` `apiRoutes.post.submit` (L274–296): `[ multer({ dest: os.tmpdir() }).any(), self.normalizeFiles, async function (req) { try { submitForm } finally { unlink files } } ]`. No `limits`, no rate limiting, no pre-validation. "CSRF" is a fixed-value doub
  • < 1.5.5
GitHub (opens in a new tab)
  • GHSA-44qr-rrjg-2cqqModerate
    ApostropheCMS: CAPTCHA response token not URL-encoded
    • < 1.5.5

    **Summary** Form and login CAPTCHA verification interpolate the user-supplied widget token unencoded into the server-side verification URL/body, allowing a crafted token to inject query parameters into the reCAPTCHA/hCaptcha verify request. **Details** - `packages/form/lib/recaptcha.js:39` — `recaptchaUri = 'https://www.google.com/recaptcha/api/siteverify?secret=${recaptchaSecret}&response=${input.recaptcha}'` - `packages/login-recaptcha/index.js:44` — same pattern for login - `packages/login-hcaptcha/index.js:47` — `body: 'response=${token}&secret=${secret}'` **PoC** ``` input.recaptcha = '

    CVE: CVE-2026-113667

  • GHSA-89mh-mm8c-mv7fModerate
    ApostropheCMS: Unauthenticated unbounded multipart upload → disk-exhaustion DoS
    • < 1.5.5

    **Summary** The form submission endpoint runs `multer({ dest: os.tmpdir() }).any()` before authentication, API-key, CSRF-equivalent, or form-existence logic, with no size/count/rate limits. Unauthenticated users can stream unbounded bodies to disk per request; cleanup occurs only after the full body is received. **Details** `packages/form/index.js` `apiRoutes.post.submit` (L274–296): `[ multer({ dest: os.tmpdir() }).any(), self.normalizeFiles, async function (req) { try { submitForm } finally { unlink files } } ]`. No `limits`, no rate limiting, no pre-validation. "CSRF" is a fixed-value doub

    CVE: CVE-2026-113656

Showing 1-2 of 2 vulnerabilities