[Aikido] Fix 15 security issues in axios, undici - #261
Open
aikido-autofix[bot] wants to merge 1 commit into
Open
[Aikido] Fix 15 security issues in axios, undici#261aikido-autofix[bot] wants to merge 1 commit into
aikido-autofix[bot] wants to merge 1 commit into
Conversation
|
🚨 gitStream Monthly Automation Limit Reached 🚨 Your organization has exceeded the number of pull requests allowed for automation with gitStream. To continue automating your PR workflows and unlock additional features, please contact LinearB. |
✅ Security Analysis ResultsGreat news! No security issues found in this pull request. Analysis Summary:
💡 Trigger a new security scan by commenting Security analysis powered by Claude Sonnet 4.6 via pr-auditor | Questions? Contact #dx-team or check out this page |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
Jira ticket: https://typeform.atlassian.net/browse/<TICKET_ID>
Upgrade axios and undici to fix SSRF/proxy bypass, prototype pollution header injection, credential leakage on cross-origin redirects, and unsafe error serialization vulnerabilities.
Changes
🤖 Remediation details
Fix security vulnerabilities in
axiosandundicitransitive dependenciesShort summary
This PR remediates multiple high- and medium-severity vulnerabilities in two transitive dependencies —
axiosandundici— withinshared-actions/send-deployment-event. The fixes are applied via aresolutionsentry and a lockfile refresh inshared-actions/send-deployment-event/package.json, with the resolved versions updated inshared-actions/send-deployment-event/yarn.lock.axios
axiosis pulled in transitively byanalytics-node@6.2.0(declared as^0.27.2), which resolved to the vulnerable0.27.2. The required fix floor is1.18.0, butanalytics-node@6.2.0is the only published version of that package and it still pinsaxios@^0.27.2, making a parent bump impossible. Aresolutionsentry of"axios": "^1.18.0"was added topackage.jsonas a last resort to override the transitive constraint, causing Yarn to resolveaxiosto1.19.0in the lockfile.undici
undiciis pulled in transitively by@actions/http-client@4.0.0(declared as^6.23.0), which had resolved to the vulnerable6.24.1. The parent's existing range^6.23.0already permits patched versions, so no manifest change was needed — ayarn upgrade 'undici@^6.23.0'lockfile refresh was sufficient to advance the resolved version to6.28.0, which satisfies the≥6.26.0fix requirement.Version changes
axios0.27.21.19.0resolutionsoverride (parentanalytics-node@6.2.0has no fix path)undici6.24.16.28.0@actions/http-client@4.0.0range^6.23.0already permitted patched version)Testing
Docs
Security Impact — CVE vulnerabilities fixed by this PR
✅ 15 CVEs resolved by this upgrade
This PR will resolve the following CVEs:
X-API-Keyand AWS tokens to unintended hosts, allowing attackers to steal sensitive authentication data. This information disclosure vulnerability affects shared environments where secret headers are set by default.Object.prototypeproperties to inject maliciousAuthorizationheaders and manipulate query strings when applications pass placeholder objects likeauth: {}orparamsSerializer: {}. This enables credential exfiltration and request tampering when another component has already polluted the prototype chain.allowAbsoluteUrlsnot being set tofalseby default inbuildFullPath(), allowing attackers to bypass URL restrictions and process unintended URLs.//(e.g.,https:internal.example) were silently normalized instead of rejected, allowing attackers to bypass URL allowlists or WAF checks and reach unintended hosts. The fix now throws an error for invalid scheme URLs before normalization.formDataToJSONfunction allows attackers to manipulate object properties. Additionally, a ReDoS vulnerability incombineURLscan cause denial of service through malicious input.Breaking Changes & Upgrade Impact
✅ No breaking changes from the axios upgrade (0.27.2 => 1.18.0) affect this codebase.
The codebase uses axios indirectly through the
analytics-nodelibrary (v6.2.0), which creates an axios instance and makes POST requests with complete URLs. The code does not:Use
baseURLconfiguration with relative URLs (so the v1.8.0 URL combination change doesn't apply)Use deprecated features like
CancelToken,axios.Cancel,axios.isCancel,axios.all(), oraxios.spread()Implement custom interceptors, transformers, or adapters that might be affected by internal API changes
Rely on any specific error handling behavior that changed in v1.0.0
The
axios-retrylibrary (v3.2.0) used byanalytics-nodeis compatible with axios 1.x. The upgrade should be safe to proceed.All breaking changes by upgrading undici from version 6.24.1 to 6.28.0 (CHANGELOG)
parseSetCookieno longer applies percent-decoding to cookie values, changing behavior for cookies containing encoded sequences like%0D%0Aand%00SameSitevalues (Strict,Lax,None) rather than accepting them as substrings, rejecting previously accepted values likeSameSite=NoneOfYourBusinessContent-Lengthis inconsistent withContent-Range, where previously inconsistent responses may have been acceptedsetCookie()now applies stricter validation that may reject previously accepted unsanitized domain and unparsed valuestypeproperties on duck-typed blob-like HTTP/1.1 request bodies are now coerced and validated, potentially rejecting previously accepted valuesFor contributions to the
Typeform/.githubrepoNote: Please do not use this repository for new internal shared workflows and actions. Use https://github.com/Typeform/.github-private instead!
Please check that your contribution applies to one of these cases below. If this is not the case, please contribute to https://github.com/Typeform/.github-private instead.