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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions