Commit graph

10 commits

Author SHA1 Message Date
William Martin
9bd8f09774 Use safepaths for run download 2024-12-04 22:12:58 +01:00
Andy Feller
cdfc12caf5 Expand logic and tests to handle edge cases
This commit expands filepathDescendsFrom(string, string) to handle edge cases such as mixing absolute and relative paths or artifact name edge cases.

Additionally, tests for filepathDescendsFrom() and downloadrun() have been expanded to verify additional use cases.
2024-11-22 15:26:11 -05:00
Andy Feller
e7c5706336 Refactor download testing, simpler file descends
This incorporates the work done by @williammartin to improve reasoning about `gh run download` behavior through testing while verifying a simpler solution to checking if a path is contained within a directory.
2024-11-21 17:07:27 -05:00
Andy Feller
8da27d2c8a Second attempt to address exploit
This builds off suggestion to reuse logic used already within `gh run download` for detecting path traversals.

This largely works but runs into an issue where detection logic doesn't handle non-separated traversal.
2024-11-19 17:55:18 -05:00
Sam Coe
39805fa9b1
Properly handle closing files that have been writen to (#7199) 2023-03-23 01:17:47 +00:00
Mislav Marohnić
a315e6865c run download: fix extracting to root path
Our rudimentary check for whether a file path is entirely contained
under a directory had a false negative when the parent directory is "/".
2022-02-18 20:27:40 +01:00
Mislav Marohnić
f8c7fd1d28 Fix extracting workflow artifact to a relative path
To prevent zipslip, we verify that each extracted file would fall
strictly under the prefix of the path to extract to. However, this
yielded a false positive when extracting to `.`, which is the default
for downloading a single archive.
2021-04-13 19:15:14 +02:00
Mislav Marohnić
0e94de1ce6 Address run download feedback
- With no arguments in TTY mode, prompt which artifacts to download
- Change `--pattern` argument to be just `--name` and only do exact
  matching
- For multi-archive downloads, prefix the destination path with the name
  of the artifact
- Add tests exercising HTTP functionality
- Avoid "zipslip" path injection when extracting ZIP files
- Add tests for ZIP extraction
2021-04-07 19:56:28 +02:00
Mislav Marohnić
b41681cbb7 Restore Go < 1.16 compatibility 2021-04-02 20:54:56 +02:00
Mislav Marohnić
c54e3c9ca8 Add run download command for downloading workflow artifacts 2021-04-02 20:42:18 +02:00