Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .jules/sentinel.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Sentinel Security Journal

## 2025-04-17 - Insecure Temporary Files and Direct Downloads in Installation Scripts

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟑 Minor

Minor: date inconsistency.

The journal entry is dated 2025-04-17, but this PR was created on 2026-04-17. Consider updating the heading to reflect the actual remediation date.

πŸ€– Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.jules/sentinel.md at line 3, Update the journal heading "## 2025-04-17 -
Insecure Temporary Files and Direct Downloads in Installation Scripts" to the
correct remediation date (change 2025-04-17 to 2026-04-17) so the entry matches
the PR creation date; ensure the rest of the heading text remains unchanged.


**Vulnerability:** Predictable temporary files and direct downloads to the
current working directory in `tools/os_installers/apt.sh`.

**Learning:** Installation scripts often download artifacts. Using predictable
paths like `/tmp/yq` allows local attackers to overwrite or predict the file,
leading to potential privilege escalation (especially since the script uses
`sudo`). Additionally, downloading archives directly to the current working
directory is an insecure practice as it risks overwriting existing files or
leaving artifacts behind.

**Prevention:** Always use securely generated temporary directories via
`mktemp -d` within a subshell, and use a `trap 'rm -rf "$TMP_DIR"' EXIT` for
safe cleanup, rather than predictable paths or the current directory.
32 changes: 21 additions & 11 deletions tools/os_installers/apt.sh
Original file line number Diff line number Diff line change
Expand Up @@ -205,11 +205,14 @@ fi
echo "Installing Go..."
if ! command -v go &> /dev/null; then
GO_VERSION="1.23.4"
wget "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go${GO_VERSION}.linux-amd64.tar.gz"
rm "go${GO_VERSION}.linux-amd64.tar.gz"
echo "NOTE: Add 'export PATH=\$PATH:/usr/local/go/bin' to your shell profile"
(
TMP_DIR=$(mktemp -d)
trap 'rm -rf "$TMP_DIR"' EXIT
wget "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" -O "$TMP_DIR/go.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "$TMP_DIR/go.tar.gz"
echo "NOTE: Add 'export PATH=\$PATH:/usr/local/go/bin' to your shell profile"
)
fi

# Install Terraform
Expand All @@ -231,18 +234,25 @@ fi
echo "Installing yq..."
if ! command -v yq &> /dev/null; then
YQ_VERSION="v4.44.6"
wget "https://github.com/mikefarah/yq/releases/download/${YQ_VERSION}/yq_linux_amd64" -O /tmp/yq
sudo mv /tmp/yq /usr/local/bin/yq
sudo chmod +x /usr/local/bin/yq
(
TMP_DIR=$(mktemp -d)
trap 'rm -rf "$TMP_DIR"' EXIT
wget "https://github.com/mikefarah/yq/releases/download/${YQ_VERSION}/yq_linux_amd64" -O "$TMP_DIR/yq"
sudo mv "$TMP_DIR/yq" /usr/local/bin/yq
sudo chmod +x /usr/local/bin/yq
)
fi

# Install lsd (LSDeluxe)
echo "Installing lsd..."
if ! command -v lsd &> /dev/null; then
LSD_VERSION="1.1.5"
wget "https://github.com/lsd-rs/lsd/releases/download/v${LSD_VERSION}/lsd_${LSD_VERSION}_amd64.deb"
sudo dpkg -i "lsd_${LSD_VERSION}_amd64.deb"
rm "lsd_${LSD_VERSION}_amd64.deb"
(
TMP_DIR=$(mktemp -d)
trap 'rm -rf "$TMP_DIR"' EXIT
wget "https://github.com/lsd-rs/lsd/releases/download/v${LSD_VERSION}/lsd_${LSD_VERSION}_amd64.deb" -O "$TMP_DIR/lsd.deb"
sudo dpkg -i "$TMP_DIR/lsd.deb"
)
fi

# Install Tesseract OCR
Expand Down
Loading