Skip to content

chore(deps): update github actions - #1246

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/github-actions
Open

chore(deps): update github actions#1246
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/github-actions

Conversation

@renovate

@renovate renovate Bot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Motivation

Automated dependency update by Renovate bot.

Description

This PR contains the following updates:

Package Type Update Change
actions/cache (changelog) action digest 2c8a9bd55cc834
actions/checkout (changelog) action digest 9c091bb3d3c42e
actions/setup-java (changelog) action digest ad2b381b6effb0
aws-actions/configure-aws-credentials (changelog) action digest e7f100ce6de054
docker/login-action (changelog) action digest 650006cdbcb813
docker/setup-buildx-action (changelog) action digest d7f5e7fbb05f3f
marocchino/sticky-pull-request-comment action patch v3.0.4v3.0.5
taiki-e/install-action (changelog) action digest 15449e3b6b84cf

Testing

This is an automated dependency update. No functional changes are expected.

Impact


Release Notes

marocchino/sticky-pull-request-comment (marocchino/sticky-pull-request-comment)

v3.0.5

Compare Source

Additional Information


  • If you want to rebase/retry this PR, check this box

This PR was generated automatically by Renovate.

@github-actions

github-actions Bot commented Jun 17, 2026

Copy link
Copy Markdown

🔍 Vulnerabilities of dockerhubaneo/armonik_control_metrics:0.41.0-renovategithubactions.107.sha.55e5d86d

📦 Image Reference dockerhubaneo/armonik_control_metrics:0.41.0-renovategithubactions.107.sha.55e5d86d
digestsha256:4a9dfcde3e6332189da7b0884c510b79d90c1d06826c84daf9038a7c9341a627
vulnerabilitiescritical: 0 high: 0 medium: 1 low: 0
platformlinux/amd64
size67 MB
packages63
critical: 0 high: 0 medium: 1 low: 0 SharpCompress 0.30.1 (nuget)

pkg:nuget/SharpCompress@0.30.1

# Dockerfile (159:159)
COPY --from=build /app/publish/metrics .

medium 5.9: CVE--2026--44788 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

Affected range<0.48.0
Fixed version0.48.0
CVSS Score5.9
CVSS VectorCVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:L
EPSS Score0.313%
EPSS Percentile24th percentile
Description

Summary

A path traversal vulnerability in IArchive.WriteToDirectory() allows a malicious archive to create directories outside the intended extraction root. For TAR archives, this can be escalated to arbitrary file writes by chaining with a symlink entry, giving a full write primitive on the target filesystem subject to the permissions of the running process.

Details

The vulnerable code is in the directory-entry branch of WriteToDirectoryInternal (sync, IArchiveExtensions.cs:48–61) and WriteToDirectoryAsyncInternal (async, IAsyncArchiveExtensions.cs:70–84):

var dirPath = Path.Combine(destinationDirectory, entry.Key);
Directory.CreateDirectory(Path.GetDirectoryName(dirPath + "/"));

No Path.GetFullPath() normalisation and no bounds check are applied before the Directory.CreateDirectory call. Two .NET Path.Combine behaviours make this exploitable:

  • Relative traversal: Path.Combine("/safe/extract", "../../evil") → the OS resolves .. segments on the raw path, placing the directory outside the extraction root.
  • Absolute path override: Path.Combine("/safe/extract", "/tmp/evil") → returns "/tmp/evil" — the base is discarded entirely for rooted paths.

File entries are not directly affected — they route through ExtractionMethods.WriteEntryToDirectory which applies the correct guard (GetFullPath + StartsWith, see ExtractionMethods.cs:54–65). The directory-entry branch is a separate fast-path that was added without that guard.

Affected archive formats: ZIP and TAR (non-solid). Solid archives and 7-Zip use the reader path which calls the secure method.

Escalation to arbitrary file writes (TAR only)

Path.GetFullPath on .NET does not resolve symlinks — it only normalises . and .. segments. This means the file-entry guard in ExtractionMethods.WriteEntryToDirectory can be bypassed via symlink chaining in TAR archives when the caller supplies a SymbolicLinkHandler:

archive.WriteToDirectory("/safe/extract", new ExtractionOptions
{
    ExtractFullPath = true,
    SymbolicLinkHandler = (linkPath, linkTarget) =>
        File.CreateSymbolicLink(linkPath, linkTarget)  // naive — no validation of linkTarget
});

Attack sequence in a single TAR archive:

  1. Symlink entrylink../evil_outside/
    The SymbolicLinkHandler creates /safe/extract/link pointing outside the extraction root.

  2. File entrylink/secret.txt
    ExtractionMethods.WriteEntryToDirectory computes:

    • destdir = Path.GetFullPath("/safe/extract/link")"/safe/extract/link" — textually inside root, check passes ✓
    • File.Open("/safe/extract/link/secret.txt") — OS follows symlink, file is written to /evil_outside/secret.txt

The library does not validate linkTarget before passing it to the caller's handler, and the XML docs do not warn that it may be a traversal path. The idiomatic handler implementation above is therefore silently exploitable.

ZIP does not support symlinks in SharpCompress (ZipEntry.LinkTarget always returns null), so this escalation is TAR-only.

Attack ZIP TAR
Directory traversal (escape extraction root) Yes Yes
Escalate to arbitrary file writes via symlink chain No Yes (if caller provides SymbolicLinkHandler)

Recommended fix — apply the same pattern from ExtractionMethods.WriteEntryToDirectory to both affected files:

var fullDestDir = Path.GetFullPath(destinationDirectory);
if (!fullDestDir.EndsWith(Path.DirectorySeparatorChar))
    fullDestDir += Path.DirectorySeparatorChar;

var dirPath = Path.GetFullPath(Path.Combine(fullDestDir, entry.Key));
if (!dirPath.StartsWith(fullDestDir, PathComparison))
    throw new ExtractionException(
        "Entry is trying to create a directory outside of the destination directory.");

Directory.CreateDirectory(dirPath);

Additionally, the library should validate LinkTarget before invoking the caller's SymbolicLinkHandler, or document clearly that callers must validate it themselves.

PoC

A self-contained .NET console app is available at:
https://github.com/svenclaesson/poc-sharpcompress-traversal

git clone https://github.com/svenclaesson/poc-sharpcompress-traversal
cd poc-sharpcompress-traversal
dotnet run

The PoC crafts a ZIP with three directory entries (../../escaped_relative/, /tmp/escaped_absolute/, safe_subdir/) using System.IO.Compression (stdlib), then extracts with SharpCompress. Output shows [ESCAPED] for the two malicious entries and [ok] for the legitimate one, on both sync and async APIs.

Tested against SharpCompress 0.47.4 (latest NuGet).

Impact

This is a path traversal / zip slip vulnerability (CWE-22). Any application that calls archive.WriteToDirectory() on an untrusted archive is affected — which covers the primary documented extraction API.

For ZIP archives the impact is limited to arbitrary directory creation, which can be used to stage privilege escalation (e.g. cron drop-ins, XDG config paths, service spool directories) or shadow expected paths to alter application behaviour.

For TAR archives, callers that implement a SymbolicLinkHandler — which is the only way to faithfully restore a TAR — are exposed to a full arbitrary file write primitive via the symlink chaining described above.

@renovate
renovate Bot force-pushed the renovate/github-actions branch from 1e3100e to f614ac6 Compare June 18, 2026 22:04
@renovate renovate Bot changed the title chore(deps): update github actions to b8cecb8 Update github actions Jun 19, 2026
@renovate
renovate Bot force-pushed the renovate/github-actions branch 4 times, most recently from 157a037 to b713dc6 Compare June 24, 2026 05:01
@renovate renovate Bot changed the title Update github actions chore(deps): update github actions Jun 25, 2026
@renovate
renovate Bot force-pushed the renovate/github-actions branch 8 times, most recently from 15e8467 to 41f68cb Compare June 30, 2026 18:58
@renovate
renovate Bot force-pushed the renovate/github-actions branch 8 times, most recently from 0dc379a to 9cae015 Compare July 8, 2026 19:37
@renovate
renovate Bot force-pushed the renovate/github-actions branch 3 times, most recently from ebbc51c to c9b7a31 Compare July 12, 2026 11:56
@renovate
renovate Bot force-pushed the renovate/github-actions branch 3 times, most recently from df6344e to eb7edb4 Compare July 20, 2026 22:46
@renovate
renovate Bot force-pushed the renovate/github-actions branch 10 times, most recently from 615b0d4 to a4597a7 Compare July 28, 2026 16:08
@renovate
renovate Bot force-pushed the renovate/github-actions branch 8 times, most recently from 016e85e to 194fe59 Compare August 4, 2026 22:32
@renovate
renovate Bot force-pushed the renovate/github-actions branch 5 times, most recently from 6a5e998 to 8df7000 Compare August 13, 2026 18:09
@renovate
renovate Bot force-pushed the renovate/github-actions branch 2 times, most recently from 94ff56d to ea8f86f Compare August 15, 2026 22:11
@renovate
renovate Bot force-pushed the renovate/github-actions branch from ea8f86f to 55e5d86 Compare August 17, 2026 12:43
@sonarqubecloud

Copy link
Copy Markdown

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.

0 participants