Skip to content

security: outdated axios 1.15.0 + joi 17.8.3 pins expose consumers to 4 known CVEs #218

Description

@knofte

Summary

The current pins in flutterwave-node-v3@1.3.2 package.json are:

"axios": "1.15.0",
"joi": "17.8.3"

Both pinned to a single exact version rather than a semver range, which means every project that installs this SDK inherits the vulnerabilities of those specific versions with no way to opt into a patched release without an npm overrides hack.

CVEs consumers currently inherit

axios 1.15.0 → three high-severity advisories

  • GHSA-4hjh-wcwx-xvwjshouldBypassProxy doesn't recognize IPv4-mapped IPv6 addresses, allowing NO_PROXY bypass
  • GHSA-4hjh-wcwx-xvwj — ReDoS via Cookie Name Injection
  • Allocation of Resources Without Limits or Throttling in Axios

Fixed in axios ≥ 1.12.2 (and later patches).

joi 17.8.3 → one moderate

  • joi has an uncaught RangeError on deeply nested input through recursive link() schemas — DoS vector for anyone using joi.link() on user input.

Fixed in joi ≥ 17.13.3.

Impact on consumers

We (SnappyHour) are a production consumer of flutterwave-node-v3 for our Kenya M-Pesa payment flow. We currently work around these by overriding transitive versions in our top-level package.json:

"overrides": {
  "@sendgrid/client": "8.1.6",
  "axios": "^1.12.2"
}

This works but has drawbacks:

  • Every downstream consumer has to know to do this
  • Overrides can silently break if the SDK ever starts relying on a specific axios API removed in a later version
  • Newer consumers not aware of the CVEs run vulnerable in production

Suggested fix

Loosen the pins to a semver range that permits patched versions:

"axios": "^1.15.0",
"joi": "^17.8.3"

Or, if there's a reason for the exact pin (I couldn't find one in the repo), bump the exact versions to the latest patched releases (axios@1.13.x LTS, joi@17.15.x).

Either change is non-breaking for existing consumers (semver-compatible upgrade) and unblocks CVE resolution for everyone.

Verification

mkdir /tmp/fw-audit && cd /tmp/fw-audit
npm init -y
npm install flutterwave-node-v3@1.3.2
npm audit

Should show the four CVEs above.

Happy to open a PR with the pin loosening if that would help. Thanks for maintaining the SDK 🙏


Filed 2026-07-07 on behalf of a production consumer.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions