websitino-bin
Triggered rules
source_untrusted_domain
One or more source=() URLs point to a host outside the trusted allowlist (github.com, gitlab.com, codeberg.org, pypi.org, …).
-
PKGBUILD:18
curl -fsSL 'https://trikko.github.io/websitino/linux/websitino' -o "$tmp" || return 1
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 82%): This PKGBUILD downloads a prebuilt binary from a GitHub Pages host (trikko.github.io) rather than from a tagged GitHub release asset. While the sha256sum provides integrity verification for the specific binary fetched, GitHub Pages content can be updated at any time by the repository owner without changing the URL, meaning the checksum is the only guard against substitution. More concerning: the `latestver()` function downloads the same binary, marks it executable, and runs it (`"$tmp" --version`) purely to extract a version string — this is arbitrary code execution of an unverified binary during what appears to be a version-check helper. Additionally, the `package()` function fetches the LICENSE file at install time via a second `curl` call with no integrity check, which is a minor additional concern. The binary itself is not built from source and originates from a personal GitHub Pages domain rather than a versioned release artifact. These factors together constitute a genuine supply-chain concern: a prebuilt binary from an unofficial/personal host is installed directly, and the version-check helper executes it without prior checksum verification.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Yakov Till <yakov.till@gmail.com>
pkgname=websitino-bin
pkgver=0.2.9
pkgrel=1
pkgdesc="A lightweight static file server for local development"
arch=('x86_64')
url="https://github.com/trikko/websitino"
license=('MIT')
provides=('websitino')
conflicts=('websitino')
options=('!strip' '!debug')
latestver() {
local tmp
tmp=$(mktemp) || return 1
trap 'rm -f "$tmp"' RETURN
curl -fsSL 'https://trikko.github.io/websitino/linux/websitino' -o "$tmp" || return 1
chmod +x "$tmp" || return 1
"$tmp" --version | sed -nE 's/.*\(v([0-9]+\.[0-9]+\.[0-9]+)\).*/\1/p'
}
source=("websitino-${pkgver}::https://trikko.github.io/websitino/linux/websitino")
sha256sums=('514616b1414b7eaa94ff5275f3a62b9921b5382e145d8bbc457bbd3dc0649d7c')
prepare() {
chmod +x "${srcdir}/websitino-${pkgver}"
}
package() {
# Create directories
install -dm755 "${pkgdir}/usr/bin"
install -dm755 "${pkgdir}/usr/share/licenses/${pkgname}"
# Install binary
install -Dm755 "${srcdir}/websitino-${pkgver}" "${pkgdir}/usr/bin/websitino"
# Install license
curl -s "https://raw.githubusercontent.com/trikko/websitino/main/LICENSE" > "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | MEDIUM | 2 |
| 2026-08-02 00:16:08 | MEDIUM | 2 |
| 2026-08-01 00:11:18 | MEDIUM | 2 |
| 2026-07-31 00:14:10 | MEDIUM | 2 |
| 2026-07-30 00:17:23 | MEDIUM | 2 |
| 2026-07-29 00:25:53 | MEDIUM | 2 |
| 2026-07-28 00:07:28 | MEDIUM | 2 |
| 2026-07-27 00:24:32 | MEDIUM | 2 |
| 2026-07-26 00:07:32 | MEDIUM | 2 |
| 2026-07-25 00:13:44 | MEDIUM | 2 |
| 2026-07-24 00:02:28 | MEDIUM | 2 |
| 2026-07-23 00:14:47 | MEDIUM | 2 |
| 2026-07-22 00:29:32 | MEDIUM | 2 |
| 2026-07-21 00:24:15 | MEDIUM | 2 |
| 2026-07-20 00:19:49 | MEDIUM | 2 |
| 2026-07-19 00:17:08 | MEDIUM | 2 |
| 2026-07-18 00:14:48 | MEDIUM | 2 |
| 2026-07-17 00:06:16 | MEDIUM | 2 |
| 2026-07-16 00:05:41 | MEDIUM | 2 |
| 2026-07-15 00:09:25 | MEDIUM | 2 |