An open index of dependabot pull requests across open source projects.

form-data uses unsafe random function in form-data for choosing boundary

RSS Feed CRITICAL
GHSA-fjxv-7rqg-78g4 CVE-2025-7783
Description:

Summary

form-data uses Math.random() to select a boundary value for multipart form-encoded data. This can lead to a security issue if an attacker:

  1. can observe other values produced by Math.random in the target application, and
  2. can control one field of a request made using form-data

Because the values of Math.random() are pseudo-random and predictable (see: https://blog.securityevaluators.com/hacking-the-javascript-lottery-80cc437e3b7f), an attacker who can observe a few sequential values can determine the state of the PRNG and predict future values, includes those used to generate form-data's boundary value. The allows the attacker to craft a value that contains a boundary value, allowing them to inject additional parameters into the request.

This is largely the same vulnerability as was recently found in undici by parrot409 -- I'm not affiliated with that researcher but want to give credit where credit is due! My PoC is largely based on their work.

Details

The culprit is this line here: https://github.com/form-data/form-data/blob/426ba9ac440f95d1998dac9a5cd8d738043b048f/lib/form_data.js#L347

An attacker who is able to predict the output of Math.random() can predict this boundary value, and craft a payload that contains the boundary value, followed by another, fully attacker-controlled field. This is roughly equivalent to any sort of improper escaping vulnerability, with the caveat that the attacker must find a way to observe other Math.random() values generated by the application to solve for the state of the PRNG. However, Math.random() is used in all sorts of places that might be visible to an attacker (including by form-data itself, if the attacker can arrange for the vulnerable application to make a request to an attacker-controlled server using form-data, such as a user-controlled webhook -- the attacker could observe the boundary values from those requests to observe the Math.random() outputs). A common example would be a x-request-id header added by the server. These sorts of headers are often used for distributed tracing, to correlate errors across the frontend and backend. Math.random() is a fine place to get these sorts of IDs (in fact, opentelemetry uses Math.random for this purpose)

PoC

PoC here: https://github.com/benweissmann/CVE-2025-7783-poc

Instructions are in that repo. It's based on the PoC from https://hackerone.com/reports/2913312 but simplified somewhat; the vulnerable application has a more direct side-channel from which to observe Math.random() values (a separate endpoint that happens to include a randomly-generated request ID).

Impact

For an application to be vulnerable, it must:

  • Use form-data to send data including user-controlled data to some other system. The attacker must be able to do something malicious by adding extra parameters (that were not intended to be user-controlled) to this request. Depending on the target system's handling of repeated parameters, the attacker might be able to overwrite values in addition to appending values (some multipart form handlers deal with repeats by overwriting values instead of representing them as an array)
  • Reveal values of Math.random(). It's easiest if the attacker can observe multiple sequential values, but more complex math could recover the PRNG state to some degree of confidence with non-sequential values.

If an application is vulnerable, this allows an attacker to make arbitrary requests to internal systems.

Affected Packages
Ecosystem Package Vulnerable Versions Patched Version
npm form-data >= 4.0.0, < 4.0.4
>= 3.0.0, < 3.0.4
< 2.5.4
4.0.4
Related Dependabot Pull Requests
chore(deps): bump the minor-versions group across 5 directories with 58 updates
Closed 4 months ago
bloom-housing/bloom #6342
npm:sass npm:@types/react +29 more
bloom-housing
Bump form-data and box-node-sdk
Closed 5 months ago
kylepinecroft/traverse-box-items #23
npm:form-data npm:box-node-sdk
kylepinecroft
chore(deps): bump the minor-versions group across 5 directories with 55 updates
Open 5 months ago
bloom-housing/bloom #6198
npm:sass npm:axios +28 more
bloom-housing
build(deps): bump lexical from 0.34.0 to 0.42.0 in /frontend
Open 6 months ago
fluxturn/fluxturn #86
npm:lexical
fluxturn
npm(deps): bump @lexical/mark from 0.35.0 to 0.42.0
Open 6 months ago
datalayer/vscode-datalayer #342
npm:@lexical/mark
datalayer
npm(deps): bump @lexical/selection from 0.35.0 to 0.42.0
Open 6 months ago
datalayer/vscode-datalayer #340
npm:@lexical/selection
datalayer
chore(deps): bump the minor-versions group across 4 directories with 56 updates
Open 6 months ago
bloom-housing/bloom #6142
npm:sass npm:axios +27 more
bloom-housing
Bump the deps group with 18 updates
Closed 6 months ago
AkshajP/block-editor #11
npm:lucide-react npm:eslint +16 more
AkshajP
chore(deps): bump @lexical/list from 0.41.0 to 0.42.0
Closed 6 months ago
oshikiri/planty-wiki #51
npm:@lexical/list
oshikiri
chore(deps): bump @lexical/react from 0.41.0 to 0.42.0
Closed 6 months ago
oshikiri/planty-wiki #50
npm:@lexical/react
oshikiri
chore(deps): bump the minor-versions group across 4 directories with 51 updates
Open 6 months ago
bloom-housing/bloom #6121
npm:sass npm:axios +24 more
bloom-housing
chore(deps): bump the weekly-all group across 1 directory with 26 updates
Closed 6 months ago
remdo-project/remdo #265
npm:vitest npm:react-router-dom +24 more
remdo-project
chore(deps): bump @lexical/list from 0.38.2 to 0.42.0 in /web
Open 6 months ago
harmoni-pr-review-benchmark-org/dify__harmoni-engineer__PR9__20260325 #5
npm:@lexical/list
harmoni-pr-review-benchmark-org
chore(deps): bump @lexical/utils from 0.38.2 to 0.42.0 in /web
Open 6 months ago
harmoni-pr-review-benchmark-org/dify__harmoni-engineer__PR7__20260325 #4
npm:@lexical/utils
harmoni-pr-review-benchmark-org
chore: bump @lexical/react from 0.27.2 to 0.42.0
Open 6 months ago
wireapp/wire-webapp #20829
npm:@lexical/react
wireapp
chore: bump lexical from 0.27.2 to 0.42.0 in /apps/webapp
Open 6 months ago
wireapp/wire-webapp #20820
npm:lexical
wireapp
Wiz: Upgrade multiple dependencies (resolves 26 findings)
Closed 6 months ago
test-wiz-sec/casdoor #3
test-wiz-sec
chore(deps): bump lexical from 0.17.0 to 0.42.0
Closed 6 months ago
orieltito/portal-noticias #15
npm:lexical
orieltito
chore(deps): Bump lexical from 0.35.0 to 0.42.0
Closed 6 months ago
OpenClaudeAgent/BlueTasks #14
npm:lexical
OpenClaudeAgent
chore(deps): Bump @lexical/list from 0.35.0 to 0.42.0
Closed 6 months ago
OpenClaudeAgent/BlueTasks #6
npm:@lexical/list
OpenClaudeAgent
chore(deps): bump oven-sh/setup-bun from 2.0.1 to 2.1.3
Closed 7 months ago
gannonh/kata #60
actions:oven-sh/setup-bun
gannonh
chore(deps): bump the minor-versions group across 4 directories with 51 updates
Open 7 months ago
bloom-housing/bloom #6031
npm:sass npm:axios +24 more
bloom-housing
Bump oven-sh/setup-bun from 2.1.0 to 2.1.3
Closed 7 months ago
kyverno/policy-reporter-docs #95
actions:oven-sh/setup-bun
kyverno
chore(deps): bump the minor-versions group across 4 directories with 52 updates
Open 7 months ago
bloom-housing/bloom #5982
npm:sass npm:axios +24 more
bloom-housing
chore(deps): bump the minor-versions group across 4 directories with 51 updates
Closed 7 months ago
bloom-housing/bloom #5976
npm:sass npm:axios +24 more
bloom-housing
chore(deps): bump oven-sh/setup-bun from 1.2.2 to 2.1.2
Open 7 months ago
jtn0123/MegaBonk #144
actions:oven-sh/setup-bun
jtn0123
chore(deps): bump the prod-deps-minor-patch group across 1 directory with 11 updates
Open 7 months ago
opencupid/opencupid #560
npm:axios npm:rollup +9 more
opencupid
chore(deps): bump the minor-versions group across 4 directories with 51 updates
Closed 7 months ago
bloom-housing/bloom #5930
npm:sass npm:axios +24 more
bloom-housing
build(deps): bump oven-sh/setup-bun from 2.0.1 to 2.1.2 in the actions group
Closed 7 months ago
Lex-1401/ZERO #30
actions:oven-sh/setup-bun
Lex-1401
chore(deps): bump the minor-versions group across 4 directories with 49 updates
Open 8 months ago
bloom-housing/bloom #5901
npm:sass npm:axios +24 more
bloom-housing
Build(deps): Bump oven-sh/setup-bun from 2.0.2 to 2.1.2
Open 8 months ago
tkytel/mantela-editor #87
actions:oven-sh/setup-bun
tkytel
ci(deps): Bump oven-sh/setup-bun from 2.1.0 to 2.1.2
Open 8 months ago
flex-development/mlly #947
actions:oven-sh/setup-bun
flex-development
Bump oven-sh/setup-bun from 2.0.2 to 2.1.2
Closed 8 months ago
TrustNXT/c2pa-ts #493
actions:oven-sh/setup-bun
TrustNXT
chore(deps): bump the gh-actions-packages group across 11 directories with 5 updates
Open 8 months ago
DataDog/dd-trace-js #7361
actions:actions/checkout actions:actions/cache +3 more
DataDog
Bump the gha group across 1 directory with 2 updates
Open 8 months ago
joshuadavidthomas/dashtext #28
actions:astral-sh/setup-uv actions:oven-sh/setup-bun
joshuadavidthomas
deps(actions): bump the github-actions group with 2 updates
Closed 8 months ago
albertocavalcante/actions #1
actions:actions/checkout actions:oven-sh/setup-bun
albertocavalcante
chore(deps): bump the minor-versions group across 4 directories with 43 updates
Open 8 months ago
bloom-housing/bloom #5792
npm:sass npm:axios +20 more
bloom-housing
Build(deps): Bump oven-sh/setup-bun from 2.0.2 to 2.1.2
Closed 8 months ago
CapituloJaverianoACM/ACM-Web-Page-UI #173
actions:oven-sh/setup-bun
CapituloJaverianoACM
chore(deps): Bump oven-sh/setup-bun from 2.1.0 to 2.1.2
Closed 8 months ago
regseb/jfather #8
actions:oven-sh/setup-bun
regseb
build(deps): bump the github-actions group with 6 updates
Closed 8 months ago
rustledger/rustfava #1
actions:github/codeql-action actions:actions/upload-artifact +4 more
rustledger
chore(deps): bump @deriv-com/translations from 1.3.9 to 1.4.0
Open 8 months ago
deriv-com/p2p #691
npm:@deriv-com/translations
deriv-com
deps(actions): bump the github-actions group across 1 directory with 4 updates
Closed 8 months ago
Unified-Projects/uni-status #15
actions:docker/metadata-action actions:docker/login-action +1 more
Unified-Projects
deps(actions): bump the github-actions group with 5 updates
Open 8 months ago
Unified-Projects/uni-status #6
actions:actions/checkout actions:actions/setup-node +3 more
Unified-Projects
Bump the actions group across 1 directory with 2 updates
Open 8 months ago
actions-marketplace-validations/poad_github-pull-request-auto-merge-enable-action #26
actions:github/codeql-action actions:oven-sh/setup-bun
actions-marketplace-validations
build(deps): bump oven-sh/setup-bun from 2.0.2 to 2.1.2
Open 9 months ago
The-Best-Codes/best-bible #108
actions:oven-sh/setup-bun
The-Best-Codes
chore(deps): bump the github-actions group across 1 directory with 2 updates
Closed 9 months ago
43081j/bench-js #8
actions:actions/setup-node actions:oven-sh/setup-bun
43081j
Bump oven-sh/setup-bun from 2.1.0 to 2.1.2
Closed 9 months ago
kyverno/policy-reporter-docs #81
actions:oven-sh/setup-bun
kyverno
chore(deps): bump oven-sh/setup-bun from 2.0.2 to 2.1.2
Open 9 months ago
pantheon-org/opencode-warcraft-notifications-plugin #17
actions:oven-sh/setup-bun
pantheon-org
deps: bump the dependency-updates group across 1 directory with 2 updates
Closed 9 months ago
npm/api-documentation #26
npm:@redocly/cli npm:@npmcli/template-oss
npm
build(deps): bump oven-sh/setup-bun from 2.1.0 to 2.1.2 in the ci group
Open 9 months ago
OpenUp-LabTakizawa/caravan-kidstec #1749
actions:oven-sh/setup-bun
OpenUp-LabTakizawa
Advisory Details
Published: July 21, 2025 about 1 year ago
Updated: September 28, 2026 3 days ago
CVSS Score: 9.4 CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N
EPSS: 1.77% 77th percentile
Source: Github
Classification: GENERAL
UUID: GSA_kwCzR0hTQS1manh2LTdycWctNzhnNM4ABKWC
PR Statistics
PR Status
Open 215 (47.9%)
Merged 54 (12.0%)
Closed 180 (40.1%)
Update Types
Major 318 (16.2%)
Minor 1022 (52.2%)
Patch 586 (29.9%)