Skip to content

Add patched version column to vulnerability summary with multi-range support#5

Merged
felickz merged 10 commits into
mainfrom
copilot/add-patched-versions-column
Feb 6, 2026
Merged

Add patched version column to vulnerability summary with multi-range support#5
felickz merged 10 commits into
mainfrom
copilot/add-patched-versions-column

Conversation

Copilot AI commented Feb 5, 2026

Copy link
Copy Markdown

Purpose

Vulnerability reports now display the remediation version inline, eliminating navigation to the advisory database. Supports advisories with multiple version ranges for the same package.

Related Issues

Feature request to show patched versions in dependency review summary.

Implementation

API Integration

  • Queries GitHub Advisory Database (GET /advisories/{ghsa_id}) for patch metadata
  • Deduplicates GHSA IDs via Set, fetches in parallel with Promise.all
  • Normalizes ecosystem names (lowercase) for matching across API response variants
  • Correctly extracts first_patched_version as string from API response (not object format)
  • Displays "N/A" when patch data unavailable or API fails
  • Includes comprehensive debug logging for troubleshooting in GitHub Actions debug mode

Version Range Matching

  • Stores all vulnerability entries with their version ranges (not just one per ecosystem)
  • Implements custom semver comparison logic to match package versions against ranges like >= 8.0.0, <= 8.0.20
  • Handles complex ranges with pre-release identifiers (e.g., >= 107.0.0-preview.1, < 112.0.0)
  • Matches packages by ecosystem, name, AND version range to select correct patch version
  • Supports advisories with multiple version ranges for same package (e.g., GHSA-gwq6-fmvp-qp68)

Schema & Display

  • Added first_patched_version field to vulnerability schema (optional, nullable)
  • New "Patched Version" column in summary table
  • Made addChangeVulnerabilitiesToSummary async to support API calls

Example Output

Before:

| Name      | Version | Vulnerability              | Severity |
|-----------|---------|----------------------------|----------|
| RestSharp | 111.4.1 | CRLF Injection in method  | moderate |

After:

| Name      | Version | Vulnerability              | Severity | Patched Version |
|-----------|---------|----------------------------|----------|-----------------|
| RestSharp | 111.4.1 | CRLF Injection in method  | moderate | 112.0.0         |

For multi-range scenarios (e.g., Microsoft.NetCore.App.Runtime.linux-arm):

  • Version 8.0.1 shows patch version 8.0.21
  • Version 9.0.1 shows patch version 9.0.10

Bug Fixes & Deployment

  • Fixed extractPatchVersionId() to handle actual API response format where first_patched_version is a string, not an object with identifier field
  • Maintains backward compatibility for object format if API changes in future
  • Rebuilt and packaged dist/ folder to deploy compiled JavaScript for GitHub Actions execution
  • Added comprehensive debug logging throughout patch version lookup process for easier troubleshooting

Files Modified

  • src/schemas.ts - vulnerability schema extension
  • src/summary.ts - API integration, version range matching logic, patch version extraction, debug logging, and table rendering
  • src/main.ts, scripts/create_summary.ts - async handling
  • __tests__/summary.test.ts - mocks with correct API format, async test cases, multi-range scenario test, and RestSharp GHSA-4rr6-2v9v-wcpc test case
  • dist/index.js, dist/index.js.map - rebuilt and packaged for GitHub Actions deployment
Original prompt

This section details on the original issue you should resolve

<issue_title>Feature Request: Show the fixed/patched versions of the packages as remediation suggestions</issue_title>
<issue_description>Is your feature request related to a problem? Please describe.
Showing the developers that a vulnerability exists in the change is great, but we should give them clear guidance on how to remediate.

Describe the solution you'd like
Add a column to the summary that shows the suggested version. Bonus points if it considers the patch version for the vulnerable range you fall within.

Describe alternatives you've considered
Assigning this work to the coding agent should be able to figure this out itself but the additional context for the developer without needing to click through into the advisory database would be helpful.

Additional context

Ex - add the Patched Version as shown in the Advisory

Image

Here:

Image

The API does not appear to return this info:

Separate lookup to the advisory db might be required:

Comments on the Issue (you are @copilot in this section)


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI and others added 5 commits February 5, 2026 18:42
Co-authored-by: felickz <1760475+felickz@users.noreply.github.com>
Co-authored-by: felickz <1760475+felickz@users.noreply.github.com>
Co-authored-by: felickz <1760475+felickz@users.noreply.github.com>
Co-authored-by: felickz <1760475+felickz@users.noreply.github.com>
Co-authored-by: felickz <1760475+felickz@users.noreply.github.com>
Copilot AI changed the title [WIP] Add fixed/patched versions to remediation suggestions Add patched version column to vulnerability summary Feb 5, 2026
Copilot AI requested a review from felickz February 5, 2026 19:15
@felickz

felickz commented Feb 5, 2026

Copy link
Copy Markdown
Collaborator

@copilot does this support advisories that have multiple packages with multiple version ranges? Ensure this is part of testing.

ex: GHSA-gwq6-fmvp-qp68

would it detect that the NuGet package Microsoft.NetCore.App.Runtime.linux-arm 8.0.1 was being added into the PR that it would recommend bumping to 8.0.21? Also if Microsoft.NetCore.App.Runtime.linux-arm 9.0.1 was being added into the PR that it would recommend bumping to 9.0.10?

Ex:

Package
 Microsoft.NetCore.App.Runtime.linux-arm (
[NuGet](https://github.com/advisories?query=ecosystem%3Anuget)
)
Affected versions
>= 9.0.0, <= 9.0.9
>= 8.0.0, <= 8.0.20

Patched versions
9.0.10
8.0.21

Full api reponse for this Advisories api for this GHSA: gh api /advisories/GHSA-gwq6-fmvp-qp68

{
"ghsa_id": "GHSA-gwq6-fmvp-qp68",
"cve_id": "CVE-2025-55248",
"url": "https://api.github.com/advisories/GHSA-gwq6-fmvp-qp68",
"html_url": "GHSA-gwq6-fmvp-qp68",
"summary": "Microsoft Security Advisory CVE-2025-55248: .NET Information Disclosure Vulnerability",
"description": "# Microsoft Security Advisory CVE-2025-55248 | .NET Information Disclosure Vulnerability\n\n## <a name="executive-summary">Executive summary\n\nMicrosoft is releasing this security advisory to provide information about a vulnerability in .NET 8.0 and .NET 9.0. This advisory also provides guidance on what developers can do to update their applications to remove this vulnerability.\n\nA MITM (man in the middle) attacker may prevent use of TLS between client and SMTP server, forcing client to send data over unencrypted connection.\n\n## Announcement\n\nAnnouncement for this issue can be found at https://github.com/dotnet/announcements/issues/372\n\n## <a name="mitigation-factors">Mitigation factors\n\nMicrosoft has not identified any mitigating factors for this vulnerability.\n\n## <a name="affected-software">Affected software\n\n* Any .NET 8.0 application running on .NET 8.0.20 or earlier.\n* Any .NET 9.0 application running on .NET 9.0.9 or earlier.\n\n## <a name="affected-packages">Affected Packages\nThe vulnerability affects any Microsoft .NET project if it uses any of affected packages versions listed below\n\n### <a name=".NET 9">.NET 9\nPackage name | Affected version | Patched version\n------------ | ---------------- | -------------------------\nMicrosoft.NetCore.App.Runtime.linux-arm | >= 9.0.0, < =9.0.9 | 9.0.10\nMicrosoft.NetCore.App.Runtime.linux-arm64 | >= 9.0.0, <= 9.0.9 | 9.0.10\nMicrosoft.NetCore.App.Runtime.linux-musl-arm | >= 9.0.0, <= 9.0.9 | 9.0.10\nMicrosoft.NetCore.App.Runtime.linux-musl-arm64 | >= 9.0.0, <= 9.0.9 | 9.0.10\nMicrosoft.NetCore.App.Runtime.linux-musl-x64 | >= 9.0.0, <= 9.0.9 | 9.0.10\nMicrosoft.NetCore.App.Runtime.linux-x64 | >= 9.0.0, <= 9.0.9 | 9.0.10\nMicrosoft.NetCore.App.Runtime.osx-arm64 | >= 9.0.0, <= 9.0.9 | 9.0.10\nMicrosoft.NetCore.App.Runtime.osx-x64 | >= 9.0.0, <= 9.0.9 | 9.0.10\nMicrosoft.NetCore.App.Runtime.win-arm | >= 9.0.0, <= 9.0.9 | 9.0.10\nMicrosoft.NetCore.App.Runtime.win-arm64 | >= 9.0.0, <= 9.0.9 | 9.0.10\nMicrosoft.NetCore.App.Runtime.win-x64 | >= 9.0.0, <= 9.0.9 | 9.0.10\nMicrosoft.NetCore.App.Runtime.win-x86 | >= 9.0.0, <= 9.0.9 | 9.0.10\n\n### <a name=".NET 8">.NET 8\nPackage name | Affected version | Patched version\n------------ | ---------------- | -------------------------\nMicrosoft.NetCore.App.Runtime.linux-arm | >= 8.0.0, <= 8.0.20 | 8.0.21\nMicrosoft.NetCore.App.Runtime.linux-arm64 | >= 8.0.0, <= 8.0.20 | 8.0.21\nMicrosoft.NetCore.App.Runtime.linux-musl-arm | >= 8.0.0, <= 8.0.20 | 8.0.21\nMicrosoft.NetCore.App.Runtime.linux-musl-arm64 | >= 8.0.0, <= 8.0.20 | 8.0.21\nMicrosoft.NetCore.App.Runtime.linux-musl-x64 | >= 8.0.0, <= 8.0.20 | 8.0.21\nMicrosoft.NetCore.App.Runtime.linux-x64 | >= 8.0.0, <= 8.0.20 | 8.0.21\nMicrosoft.NetCore.App.Runtime.osx-arm64 | >= 8.0.0, <= 8.0.20 | 8.0.21\nMicrosoft.NetCore.App.Runtime.osx-x64 | >= 8.0.0, <= 8.0.20 | 8.0.21\nMicrosoft.NetCore.App.Runtime.win-arm | >= 8.0.0, <= 8.0.20 | 8.0.21\nMicrosoft.NetCore.App.Runtime.win-arm64 | >= 8.0.0, <= 8.0.20 | 8.0.21\nMicrosoft.NetCore.App.Runtime.win-x64 | >= 8.0.0, <= 8.0.20 | 8.0.21\nMicrosoft.NetCore.App.Runtime.win-x86 | >= 8.0.0, <= 8.0.20 | 8.0.21\n\n## Advisory FAQ\n\n### <a name="how-affected">How do I know if I am affected?\n\nIf you have a runtime with a version listed, or an affected package listed in affected software or affected packages, you're exposed to the vulnerability.\n\n### <a name="how-fix">How do I fix the issue?\n\n1. To fix the issue please install the latest version of .NET 9.0 or .NET 8.0, as appropriate. If you have installed one or more .NET SDKs through Visual Studio, Visual Studio will prompt you to update Visual Studio, which will also update your .NET SDKs.\n2. If your application references the vulnerable package, update the package reference to the patched version.\n\n* You can list the versions you have installed by running the dotnet --info command. You will see output like the following;\n\n\n.NET SDK:\n Version: 9.0.100\n Commit: 59db016f11\n Workload version: 9.0.100-manifests.3068a692\n MSBuild version: 17.12.7+5b8665660\n\nRuntime Environment:\n OS Name: Mac OS X\n OS Version: 15.2\n OS Platform: Darwin\n RID: osx-arm64\n Base Path: /usr/local/share/dotnet/sdk/9.0.100/\n\n.NET workloads installed:\nThere are no installed workloads to display.\nConfigured to use loose manifests when installing new manifests.\n\nHost:\n Version: 9.0.0\n Architecture: arm64\n Commit: 9d5a6a9aa4\n\n.NET SDKs installed:\n 9.0.100 [/usr/local/share/dotnet/sdk]\n\n.NET runtimes installed:\n Microsoft.AspNetCore.App 9.0.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]\n Microsoft.NETCore.App 9.0.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]\n\nOther architectures found:\n x64 [/usr/local/share/dotnet]\n registered at [/etc/dotnet/install_location_x64]\n\nEnvironment variables:\n Not set\n\nglobal.json file:\n Not found\n\nLearn more:\n https://aka.ms/dotnet/info\n\nDownload .NET:\n https://aka.ms/dotnet/download\n\n\n* If you're using .NET 8.0, you should download and install .NET 8.0.21 Runtime or .NET 8.0.318 SDK (for Visual Studio 2022 v17.10 latest update) from https://dotnet.microsoft.com/download/dotnet-core/8.0.\n* If you're using .NET 9.0, you should download and install .NET 9.0.10 Runtime or .NET 9.0.111 SDK (for Visual Studio 2022 v17.12 latest update) from https://dotnet.microsoft.com/download/dotnet-core/9.0.\n\nOnce you have installed the updated runtime or SDK, restart your apps for the update to take effect.\n\nAdditionally, if you've deployed self-contained applications targeting any of the impacted versions, these applications are also vulnerable and must be recompiled and redeployed.\n\n## Other Information\n\n### Reporting Security Issues\n\nIf you have found a potential security issue in .NET 9.0 or .NET 8.0, please email details to secure@microsoft.com. Reports may qualify for the Microsoft .NET Core & .NET 5 Bounty. Details of the Microsoft .NET Bounty Program including terms and conditions are at https://aka.ms/corebounty.\n\n### Support\n\nYou can ask questions about this issue on GitHub in the .NET GitHub organization. The main repos are located at https://github.com/dotnet/runtime. The Announcements repo (https://github.com/dotnet/Announcements) will contain this bulletin as an issue and will include a link to a discussion issue. You can ask questions in the linked discussion issue.\n\n### Disclaimer\n\nThe information provided in this advisory is provided "as is" without warranty of any kind. Microsoft disclaims all warranties, either express or implied, including the warranties of merchantability and fitness for a particular purpose. In no event shall Microsoft Corporation or its suppliers be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages, even if Microsoft Corporation or its suppliers have been advised of the possibility of such damages. Some states do not allow the exclusion or limitation of liability for consequential or incidental damages so the foregoing limitation may not apply.\n\n### External Links\n\nCVE-2025-55248\n\n### Revisions\n\nV1.0 (October 14, 2025): Advisory published.",
"type": "reviewed",
"severity": "medium",
"repository_advisory_url": "https://api.github.com/repos/dotnet/runtime/security-advisories/GHSA-gwq6-fmvp-qp68",
"source_code_location": "https://github.com/dotnet/runtime",
"identifiers": [
{
"value": "GHSA-gwq6-fmvp-qp68",
"type": "GHSA"
},
{
"value": "CVE-2025-55248",
"type": "CVE"
}
],
"references": [
"https://github.com/dotnet/runtime/security/advisories/GHSA-gwq6-fmvp-qp68",
"https://github.com/dotnet/announcements/issues/372",
"https://github.com/dotnet/runtime/issues/120713",
"https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-55248",
"https://github.com/advisories/GHSA-gwq6-fmvp-qp68"
],
"published_at": "2025-10-15T17:39:03Z",
"updated_at": "2025-10-15T17:39:04Z",
"github_reviewed_at": "2025-10-15T17:39:03Z",
"nvd_published_at": null,
"withdrawn_at": null,
"vulnerabilities": [
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.linux-arm"
},
"vulnerable_version_range": ">= 9.0.0, <= 9.0.9",
"first_patched_version": "9.0.10",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.linux-arm64"
},
"vulnerable_version_range": ">= 9.0.0, <= 9.0.9",
"first_patched_version": "9.0.10",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.linux-musl-arm"
},
"vulnerable_version_range": ">= 9.0.0, <= 9.0.9",
"first_patched_version": "9.0.10",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.linux-musl-arm64"
},
"vulnerable_version_range": ">= 9.0.0, <= 9.0.9",
"first_patched_version": "9.0.10",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.linux-musl-x64"
},
"vulnerable_version_range": ">= 9.0.0, <= 9.0.9",
"first_patched_version": "9.0.10",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.linux-x64"
},
"vulnerable_version_range": ">= 9.0.0, <= 9.0.9",
"first_patched_version": "9.0.10",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.osx-arm64"
},
"vulnerable_version_range": ">= 9.0.0, <= 9.0.9",
"first_patched_version": "9.0.10",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.osx-x64"
},
"vulnerable_version_range": ">= 9.0.0, <= 9.0.9",
"first_patched_version": "9.0.10",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.win-arm"
},
"vulnerable_version_range": ">= 9.0.0, <= 9.0.9",
"first_patched_version": "9.0.10",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.win-arm64"
},
"vulnerable_version_range": ">= 9.0.0, <= 9.0.9",
"first_patched_version": "9.0.10",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.win-x64"
},
"vulnerable_version_range": ">= 9.0.0, <= 9.0.9",
"first_patched_version": "9.0.10",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.win-x86"
},
"vulnerable_version_range": ">= 9.0.0, <= 9.0.9",
"first_patched_version": "9.0.10",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.linux-arm"
},
"vulnerable_version_range": ">= 8.0.0, <= 8.0.20",
"first_patched_version": "8.0.21",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.linux-arm64"
},
"vulnerable_version_range": ">= 8.0.0, <= 8.0.20",
"first_patched_version": "8.0.21",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.linux-musl-arm"
},
"vulnerable_version_range": ">= 8.0.0, <= 8.0.20",
"first_patched_version": "8.0.21",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.linux-musl-arm64"
},
"vulnerable_version_range": ">= 8.0.0, <= 8.0.20",
"first_patched_version": "8.0.21",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.linux-musl-x64"
},
"vulnerable_version_range": ">= 8.0.0, <= 8.0.20",
"first_patched_version": "8.0.21",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.linux-x64"
},
"vulnerable_version_range": ">= 8.0.0, <= 8.0.20",
"first_patched_version": "8.0.21",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.osx-arm64"
},
"vulnerable_version_range": ">= 8.0.0, <= 8.0.20",
"first_patched_version": "8.0.21",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.osx-x64"
},
"vulnerable_version_range": ">= 8.0.0, <= 8.0.20",
"first_patched_version": "8.0.21",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.win-arm"
},
"vulnerable_version_range": ">= 8.0.0, <= 8.0.20",
"first_patched_version": "8.0.21",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.win-arm64"
},
"vulnerable_version_range": ">= 8.0.0, <= 8.0.20",
"first_patched_version": "8.0.21",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.win-x64"
},
"vulnerable_version_range": ">= 8.0.0, <= 8.0.20",
"first_patched_version": "8.0.21",
"vulnerable_functions": []
},
{
"package": {
"ecosystem": "nuget",
"name": "Microsoft.NetCore.App.Runtime.win-x86"
},
"vulnerable_version_range": ">= 8.0.0, <= 8.0.20",
"first_patched_version": "8.0.21",
"vulnerable_functions": []
}
],
"cvss_severities": {
"cvss_v3": {
"vector_string": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:N/A:N",
"score": 5.7
},
"cvss_v4": {
"vector_string": null,
"score": 0.0
}
},
"cwes": [
{
"cwe_id": "CWE-326",
"name": "Inadequate Encryption Strength"
}
],
"credits": [],
"cvss": {
"vector_string": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:N/A:N",
"score": 5.7
},
"epss": {
"percentage": 0.00034,
"percentile": 0.09816
}
}

Handle scenarios where the same package has multiple vulnerable version ranges
with different patched versions (e.g., GHSA-gwq6-fmvp-qp68 with .NET packages).

- Store all vulnerability entries with version ranges, not just one per ecosystem
- Implement version range matching to select correct patch version
- Match package by ecosystem, name, AND version range
- Add comprehensive test for multi-range scenario

Co-authored-by: felickz <1760475+felickz@users.noreply.github.com>

Copilot AI commented Feb 5, 2026

Copy link
Copy Markdown
Author

@copilot does this support advisories that have multiple packages with multiple version ranges? Ensure this is part of testing.

ex: https://github.com/advisories/GHSA-gwq6-fmvp-qp...

Yes, this now supports advisories with multiple packages and version ranges.

For GHSA-gwq6-fmvp-qp68:

  • Microsoft.NetCore.App.Runtime.linux-arm v8.0.1 will show patch version 8.0.21
  • Microsoft.NetCore.App.Runtime.linux-arm v9.0.1 will show patch version 9.0.10

The implementation:

  1. Stores all vulnerability entries with their version ranges (not just one per ecosystem)
  2. Matches packages by ecosystem, name, AND version range
  3. Uses version comparison logic to determine which range applies to each package version

Implemented in commit 10100aa with comprehensive test coverage for this scenario.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • api.securityscorecards.dev
    • Triggering command: /opt/hostedtoolcache/node/24.13.0/x64/bin/node /opt/hostedtoolcache/node/24.13.0/x64/bin/node /home/REDACTED/work/dependency-review-action/dependency-review-action/node_modules/jest-worker/build/workers/processChild.js (dns block)
  • https://api.github.com/repos/actions/dependency-review-action/dependency-graph/compare/refs%2Fheads%2Fmaster...refs%2Fheads%2Fmaster
    • Triggering command: /opt/hostedtoolcache/node/24.13.0/x64/bin/node /opt/hostedtoolcache/node/24.13.0/x64/bin/node /home/REDACTED/work/dependency-review-action/dependency-review-action/node_modules/jest-worker/build/workers/processChild.js (http block)

If you need me to access, download, or install something from one of these locations, you can either:

Copilot AI changed the title Add patched version column to vulnerability summary Add patched version column to vulnerability summary with multi-range support Feb 5, 2026
@felickz felickz closed this Feb 5, 2026
@felickz felickz reopened this Feb 5, 2026
@felickz

felickz commented Feb 6, 2026

Copy link
Copy Markdown
Collaborator

@copilot looks like a bug - testing on this repo it shows Patched Version = N/A instead of the patch version which is 112.0.0

this is where i am testing: dotnet-felickz/vulnerable-dependencies#16:
image

Advisory db: GHSA-4rr6-2v9v-wcpc
image

which should be in the api response for this advisory

"vulnerable_version_range":">= 107.0.0-preview.1, < 112.0.0","first_patched_version":"112.0.0"

Testing that PR via calling this branch:

      - name: 'Dependency Review'
        uses: forks-felickz/dependency-review-action@copilot/add-patched-versions-column

Full api details:
gh api repos/dotnet-felickz/vulnerable-dependencies/dependency-graph/compare/8a64dee5662c47f951993c799c16d2766d05c7c4...d49b00a8afa55ce6018e4b67ec0e56939bb23a11

[{"change_type":"added","manifest":".github/workflows/dependency-review.yml","ecosystem":"actions","name":"forks-felickz/dependency-review-action","version":"copilot/add-patched-versions-column","package_url":"pkg:githubactions/forks-felickz/dependency-review-action@copilot%2Fadd-patched-versions-column","license":null,"source_repository_url":null,"scope":"runtime","vulnerabilities":[]},{"change_type":"removed","manifest":".github/workflows/dependency-review.yml","ecosystem":"actions","name":"actions/dependency-review-action","version":"4.*.*","package_url":"pkg:githubactions/actions/dependency-review-action","license":null,"source_repository_url":"https://github.com/actions/dependency-review-action","scope":"runtime","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"System.Net.Http","version":"4.3.3","package_url":"pkg:nuget/System.Net.Http@4.3.3","license":"LicenseRef-github-OTHER","source_repository_url":"https://github.com/dotnet/corefx","scope":"development","vulnerabilities":[{"severity":"high","advisory_ghsa_id":"GHSA-7jgj-8wvc-jh57","advisory_summary":".NET Core Information Disclosure","advisory_url":"https://github.com/advisories/GHSA-7jgj-8wvc-jh57"}]},{"change_type":"added","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"System.Text.Json","version":"8.0.0","package_url":"pkg:nuget/System.Text.Json@8.0.0","license":"MIT","source_repository_url":"https://github.com/dotnet/runtime","scope":"development","vulnerabilities":[{"severity":"high","advisory_ghsa_id":"GHSA-hh2w-p6rv-4g7w","advisory_summary":"Microsoft Security Advisory CVE-2024-30105 | .NET Denial of Service Vulnerability","advisory_url":"https://github.com/advisories/GHSA-hh2w-p6rv-4g7w"},{"severity":"high","advisory_ghsa_id":"GHSA-8g4q-xg66-9fp4","advisory_summary":"Microsoft Security Advisory CVE-2024-43485 | .NET Denial of Service Vulnerability","advisory_url":"https://github.com/advisories/GHSA-8g4q-xg66-9fp4"}]},{"change_type":"added","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"RestSharp","version":"111.4.1","package_url":"pkg:nuget/RestSharp@111.4.1","license":"Apache-2.0","source_repository_url":"https://github.com/restsharp/RestSharp","scope":"runtime","vulnerabilities":[{"severity":"moderate","advisory_ghsa_id":"GHSA-4rr6-2v9v-wcpc","advisory_summary":"CRLF Injection in RestSharp's `RestRequest.AddHeader` method","advisory_url":"https://github.com/advisories/GHSA-4rr6-2v9v-wcpc"}]},{"change_type":"added","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"System.Text.Encodings.Web","version":"8.0.0","package_url":"pkg:nuget/System.Text.Encodings.Web@8.0.0","license":"MIT","source_repository_url":"https://github.com/dotnet/runtime","scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-scancode-ms-net-library AND LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"System.Net.Http","version":"4.3.0","package_url":"pkg:nuget/System.Net.Http","license":"LicenseRef-github-OTHER","source_repository_url":"https://github.com/dotnet/corefx","scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-scancode-ms-net-library AND LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableLibrary/VulnerableLibrary.csproj","ecosystem":"nuget","name":"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"System.Net.Http","version":"4.3.3","package_url":"pkg:nuget/System.Net.Http@4.3.3","license":"LicenseRef-github-OTHER","source_repository_url":"https://github.com/dotnet/corefx","scope":"development","vulnerabilities":[{"severity":"high","advisory_ghsa_id":"GHSA-7jgj-8wvc-jh57","advisory_summary":".NET Core Information Disclosure","advisory_url":"https://github.com/advisories/GHSA-7jgj-8wvc-jh57"}]},{"change_type":"added","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-scancode-ms-net-library AND LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"added","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.2","package_url":"pkg:nuget/runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl@4.3.2","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"System.Net.Http","version":"4.3.0","package_url":"pkg:nuget/System.Net.Http","license":"LicenseRef-github-OTHER","source_repository_url":"https://github.com/dotnet/corefx","scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-scancode-ms-net-library AND LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]},{"change_type":"removed","manifest":"VulnerableApi/VulnerableApi.csproj","ecosystem":"nuget","name":"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl","version":"4.3.0","package_url":"pkg:nuget/runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl","license":"LicenseRef-github-OTHER","source_repository_url":null,"scope":"development","vulnerabilities":[]}]

gh api /advisories/GHSA-4rr6-2v9v-wcpc

{"ghsa_id":"GHSA-4rr6-2v9v-wcpc","cve_id":"CVE-2024-45302","url":"https://api.github.com/advisories/GHSA-4rr6-2v9v-wcpc","html_url":"https://github.com/advisories/GHSA-4rr6-2v9v-wcpc","summary":"CRLF Injection in RestSharp's `RestRequest.AddHeader` method","description":"### Summary\nThe second argument to `RestRequest.AddHeader` (the header value) is vulnerable to CRLF injection. The same applies to `RestRequest.AddOrUpdateHeader` and `RestClient.AddDefaultHeader`.\n\n### Details\nThe way HTTP headers are added to a request is via the `HttpHeaders.TryAddWithoutValidation` method: <https://github.com/restsharp/RestSharp/blob/777bf194ec2d14271e7807cc704e73ec18fcaf7e/src/RestSharp/Request/HttpRequestMessageExtensions.cs#L32> This method does not check for CRLF characters in the header value.\n\nThis means that any headers from a `RestSharp.RequestHeaders` object are added to the request in such a way that they are vulnerable to CRLF-injection. In general, CRLF-injection into a HTTP header (when using HTTP/1.1) means that one can inject additional HTTP headers or smuggle whole HTTP requests.\n\n### PoC\nThe below example code creates a console app that takes one command line variable \"api key\" and then makes a request to some status page with the provided key inserted in the \"Authorization\" header:\n\n```c#\nusing RestSharp;\n\nclass Program\n{\n    static async Task Main(string[] args)\n    {\n        // Usage: dotnet run <api key>\n        var key = args[0];\n        var options = new RestClientOptions(\"http://insert.some.site.here\");\n        var client = new RestClient(options);\n        var request = new RestRequest(\"/status\", Method.Get).AddHeader(\"Authorization\", key);\n        var response = await client.ExecuteAsync(request);\n        Console.WriteLine($\"Status: {response.StatusCode}\");\n        Console.WriteLine($\"Response: {response.Content}\");\n    }\n}\n```\n\nThis application is now vulnerable to CRLF-injection, and can thus be abused to for example perform request splitting and thus server side request forgery (SSRF):\n\n```bash\nanonymous@ubuntu-sofia-672448:~$ dotnet RestSharp-cli.dll $'test\\r\\nUser-Agent: injected header!\\r\\n\\r\\nGET /smuggled HTTP/1.1\\r\\nHost: insert.some.site.here'\nStatus: OK\nResponse: <html></html>\n```\n\nThe application intends to send a single request of the form:\n```http\nGET /status HTTP/1.1\nHost: insert.some.site.here\nAuthorization: <api key>\nUser-Agent: RestSharp/111.4.1.0\nAccept: application/json, text/json, text/x-json, text/javascript, application/xml, text/xml\nAccept-Encoding: gzip, deflate, br\n```\nBut as the application is vulnerable to CRLF injection the above command will instead result in the following two requests being sent:\n```http\nGET /status HTTP/1.1\nHost: insert.some.site.here\nAuthorization: test\nUser-Agent: injected header!\n```\nand\n```http\nGET /smuggled HTTP/1.1\nHost: insert.some.site.here\nUser-Agent: RestSharp/111.4.1.0\nAccept: application/json, text/json, text/x-json, text/javascript, application/xml, text/xml\nAccept-Encoding: gzip, deflate, br\n```\n\nThis can be confirmed by checking the access logs on the server where these commands were run (with `insert.some.site.here` pointing to localhost):\n```bash\nanonymous@ubuntu-sofia-672448:~$ sudo tail /var/log/apache2/access.log\n127.0.0.1 - - [29/Aug/2024:11:41:11 +0000] \"GET /status HTTP/1.1\" 200 240 \"-\" \"injected header!\"\n127.0.0.1 - - [29/Aug/2024:11:41:11 +0000] \"GET /smuggled HTTP/1.1\" 404 436 \"-\" \"RestSharp/111.4.1.0\"\n```\n\n### Impact\nIf an application using the RestSharp library passes a user-controllable value through to a header, then that application becomes vulnerable to CRLF-injection. This is not necessarily a security issue for a command line application like the one above, but if such code were present in a web application then it becomes vulnerable to request splitting (as shown in the PoC) and thus Server Side Request Forgery.\n\nStrictly speaking this is a potential vulnerability in applications using RestSharp, not in RestSharp itself, but I would argue that at the very least there needs to be a warning about this behaviour in the RestSharp documentation.\n\n","type":"reviewed","severity":"medium","repository_advisory_url":"https://api.github.com/repos/restsharp/RestSharp/security-advisories/GHSA-4rr6-2v9v-wcpc","source_code_location":"https://github.com/restsharp/RestSharp","identifiers":[{"value":"GHSA-4rr6-2v9v-wcpc","type":"GHSA"},{"value":"CVE-2024-45302","type":"CVE"}],"references":["https://github.com/restsharp/RestSharp/security/advisories/GHSA-4rr6-2v9v-wcpc","https://github.com/restsharp/RestSharp/commit/0fba5e727d241b1867bd71efc912594075c2934b","https://github.com/restsharp/RestSharp/blob/777bf194ec2d14271e7807cc704e73ec18fcaf7e/src/RestSharp/Request/HttpRequestMessageExtensions.cs#L32","https://nvd.nist.gov/vuln/detail/CVE-2024-45302","https://github.com/advisories/GHSA-4rr6-2v9v-wcpc"],"published_at":"2024-08-29T19:30:51Z","updated_at":"2024-10-01T21:48:41Z","github_reviewed_at":"2024-08-29T19:30:51Z","nvd_published_at":"2024-08-29T22:15:05Z","withdrawn_at":null,"vulnerabilities":[{"package":{"ecosystem":"nuget","name":"RestSharp"},"vulnerable_version_range":">= 107.0.0-preview.1, < 112.0.0","first_patched_version":"112.0.0","vulnerable_functions":[]}],"cvss_severities":{"cvss_v3":{"vector_string":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:H","score":6.1},"cvss_v4":{"vector_string":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:N/VA:H/SC:N/SI:N/SA:N/E:P","score":5.7}},"cwes":[{"cwe_id":"CWE-74","name":"Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')"},{"cwe_id":"CWE-93","name":"Improper Neutralization of CRLF Sequences ('CRLF Injection')"},{"cwe_id":"CWE-113","name":"Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Request/Response Splitting')"}],"credits":[{"user":{"login":"sofiaml","id":43377234,"node_id":"MDQ6VXNlcjQzMzc3MjM0","avatar_url":"https://avatars.githubusercontent.com/u/43377234?v=4","gravatar_id":"","url":"https://api.github.com/users/sofiaml","html_url":"https://github.com/sofiaml","followers_url":"https://api.github.com/users/sofiaml/followers","following_url":"https://api.github.com/users/sofiaml/following{/other_user}","gists_url":"https://api.github.com/users/sofiaml/gists{/gist_id}","starred_url":"https://api.github.com/users/sofiaml/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sofiaml/subscriptions","organizations_url":"https://api.github.com/users/sofiaml/orgs","repos_url":"https://api.github.com/users/sofiaml/repos","events_url":"https://api.github.com/users/sofiaml/events{/privacy}","received_events_url":"https://api.github.com/users/sofiaml/received_events","type":"User","user_view_type":"public","site_admin":false},"type":"reporter"},{"user":{"login":"Static-Flow","id":16274749,"node_id":"MDQ6VXNlcjE2Mjc0NzQ5","avatar_url":"https://avatars.githubusercontent.com/u/16274749?v=4","gravatar_id":"","url":"https://api.github.com/users/Static-Flow","html_url":"https://github.com/Static-Flow","followers_url":"https://api.github.com/users/Static-Flow/followers","following_url":"https://api.github.com/users/Static-Flow/following{/other_user}","gists_url":"https://api.github.com/users/Static-Flow/gists{/gist_id}","starred_url":"https://api.github.com/users/Static-Flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Static-Flow/subscriptions","organizations_url":"https://api.github.com/users/Static-Flow/orgs","repos_url":"https://api.github.com/users/Static-Flow/repos","events_url":"https://api.github.com/users/Static-Flow/events{/privacy}","received_events_url":"https://api.github.com/users/Static-Flow/received_events","type":"User","user_view_type":"public","site_admin":false},"type":"reporter"}],"cvss":{"vector_string":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:H","score":6.1},"epss":{"percentage":0.00171,"percentile":0.3849}}```

The GitHub Advisory API returns first_patched_version as a simple string
(e.g., "112.0.0"), not an object with an identifier field. Updated
extractPatchVersionId to handle string format primarily while maintaining
backward compatibility with object format.

- Fixed extractPatchVersionId to check for string first
- Updated test mocks to match actual API response format
- Added specific test for RestSharp GHSA-4rr6-2v9v-wcpc case
- Verified with actual API responses from multiple advisories

Fixes issue where patched versions were showing as "N/A" instead of
the actual version number.

Co-authored-by: felickz <1760475+felickz@users.noreply.github.com>

Copilot AI commented Feb 6, 2026

Copy link
Copy Markdown
Author

@copilot looks like a bug - testing on this repo it shows Patched Version = N/A instead of the patch version which is 112.0.0

this is where i am testing: https://github.com/dotnet...

Fixed in commit c37b5ee. The bug was in extractPatchVersionId() - it expected an object format {identifier: "112.0.0"} but the GitHub Advisory API actually returns a simple string "112.0.0".

The function now:

  1. Checks for string format first (actual API response)
  2. Falls back to object format for backward compatibility
  3. Returns null for invalid inputs

Added a specific test case for the RestSharp GHSA-4rr6-2v9v-wcpc scenario. The patched version should now display correctly as 112.0.0 instead of N/A.

Copilot AI and others added 2 commits February 6, 2026 22:40
The previous fix to extractPatchVersionId wasn't deployed because the dist/
folder (compiled JavaScript) wasn't rebuilt. This commit rebuilds and packages
the action with npm run build && npm run package to include the fix.

Changes in dist/:
- Updated extractPatchVersionId to handle string format first
- Includes all async vulnerability summary logic with API calls
- Properly extracts patched versions from GitHub Advisory API

This should resolve the issue where patched versions showed as "N/A" in
actual GitHub Actions runs.

Co-authored-by: felickz <1760475+felickz@users.noreply.github.com>
Added detailed debug logging to help troubleshoot patch version issues:
- Log when fetching advisory data from API
- Log number of vulnerability entries found
- Log each patch info entry added with details
- Log when no patch version is found
- Log during lookup phase with package details
- Log when patch version is found vs not found
- Log available entries when no match is found

This will make it much easier to diagnose issues in GitHub Actions debug mode.

Co-authored-by: felickz <1760475+felickz@users.noreply.github.com>

Copilot AI commented Feb 6, 2026

Copy link
Copy Markdown
Author

@copilot
Its still not working ... run in debug mode: https://github.com/dotnet-felickz/vulnerable-dependencies/actions/runs/21768275971/job/62809815763

...

The issue was that the dist/ folder (compiled JavaScript) wasn't rebuilt after my previous fix. GitHub Actions runs the compiled code from dist/index.js, not the TypeScript source.

Fixed in commits d47dce3 and c9e939a:

  1. d47dce3: Rebuilt dist/ with npm run build && npm run package to include the extractPatchVersionId fix
  2. c9e939a: Added comprehensive debug logging throughout the patch version lookup process

The debug logs will now show:

  • Advisory API calls being made
  • Number of vulnerability entries found per advisory
  • Each patch version extracted with package/ecosystem/range details
  • Lookup attempts with match results
  • Available entries when no match is found

The patched version should now display correctly as 112.0.0 for RestSharp. Please re-run the workflow to verify.

@felickz felickz marked this pull request as ready for review February 6, 2026 23:10
@felickz felickz merged commit 2af9bac into main Feb 6, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature Request: Show the fixed/patched versions of the packages as remediation suggestions

2 participants