yeetfile
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (anthropic/claude-4.6-sonnet-20260217) reviewed the full PKGBUILD and judged it LOW (confidence 82%): The PKGBUILD sources the main project and two submodules (StreamSaver.js and yeetfile-js) all from well-known git forges (GitHub and sr.ht) pinned to a specific tag for the main repo. The submodules use SKIP checksums, which is normal for git submodule sources in AUR. The 'npm install --no-save typescript@5.5.4' installs a pinned, specific version of TypeScript from the official npm registry — this is a build-time tool dependency, not an arbitrary remote script execution. The 'npx tsc' invocation uses the locally installed typescript package (just installed via npm), not a remote package fetch; npx will use the local node_modules/.bin/tsc. The Go build uses 'go mod download' with 'go mod verify', which provides integrity checking. The overall pattern is a legitimate build process for a self-hosted encrypted file sharing tool. The main concern is that npm fetches typescript@5.5.4 from the npm registry at build time without a lockfile checksum in the PKGBUILD, but this is a well-known, widely-used package at a specific version, making supply-chain risk low rather than medium.
2 higher static findings superseded - not the current verdict (shown for transparency)
npm_install_external
Runs `npm/yarn/pnpm install <package>` for a package not in source=(), pulling unpinned, unreviewed code at build time. Severity downgraded: the package declares/looks like a Node.js consumer, where build-time installs are expected.
-
PKGBUILD:49
npm install --no-save typescript@5.5.4
remote_code_tool
`npx`/`bunx`/`pnpm dlx`/`deno run <url>` downloads AND runs a remote package at build time — the moral equivalent of piping a download into a shell. Severity downgraded: Node.js consumer context.
-
PKGBUILD:69
npx tsc --removeComments
PKGBUILD
2 offending line(s) highlighted# Maintainer: Vitalii Kuzhdin <vitaliikuzhdin@gmail.com>
pkgbase="yeetfile"
pkgname=(
"${pkgbase}-common"
"${pkgbase}"
"${pkgbase}-server"
)
pkgver=0.2.0
pkgrel=1
pkgdesc="A self-hosted service for encrypted file sharing and storage"
arch=(
'aarch64'
'armv7h'
'i686'
'x86_64'
)
url="https://yeetfile.com"
_url="https://github.com/benbusby/${pkgbase}"
license=(
'AGPL-3.0-only'
)
makedepends=(
'git'
'go>=1.20'
# 'typescript'
'npm'
)
_pkgsrc="${_url##*/}"
source=(
"${_pkgsrc}::git+${_url}.git#tag=v${pkgver}"
"benbusby-StreamSaver.js::git+https://github.com/benbusby/StreamSaver.js.git"
"yeetfile-js::git+https://git.sr.ht/~benbusby/yeetfile-js"
)
sha256sums=('bbc0f9b364f35b5f4d0f538a467a8fa84d9cd13be85ac99e8d2dc997e3163f76'
'SKIP'
'SKIP')
prepare() {
export GOMODCACHE="${srcdir}/go-mod-cache"
cd "${srcdir}/${_pkgsrc}"
git submodule init
git config submodule.backend/static/stream_saver.url "${srcdir}/benbusby-StreamSaver.js"
git config submodule.backend/static/js.url "${srcdir}/yeetfile-js"
git -c protocol.file.allow=always submodule update
# https://github.com/benbusby/yeetfile/commit/d3af0cbd1c85b630a38a5a09f1da93889b25efa8
npm install --no-save typescript@5.5.4
go mod download -modcacherw -x
go mod verify
mkdir -p "build"
}
build() {
export CGO_CPPFLAGS="${CPPFLAGS}"
export CGO_CFLAGS="${CFLAGS}"
export CGO_CXXFLAGS="${CXXFLAGS}"
export CGO_LDFLAGS="${LDFLAGS}"
export GOCACHE="${srcdir}/go-cache"
export GOMODCACHE="${srcdir}/go-mod-cache"
export GOFLAGS="-buildmode=pie -trimpath -ldflags=-linkmode=external -mod=readonly -modcacherw"
cd "${srcdir}/${_pkgsrc}"
go run utils/generate_typescript.go ./web/ts
# tsc --removeComments
npx tsc --removeComments
go build -v -tags "${pkgbase}" -o "build/${pkgbase}" ./cli
go build -v -tags "${pkgbase}-server" -o "build/${pkgbase}-server" ./backend
}
# check() {
# cd "${srcdir}/${_pkgsrc}"
# go test ./...
# }
package_yeetfile-common() {
pkgdesc+=" (common files)"
arch=(
'any'
)
cd "${srcdir}/${_pkgsrc}"
install -vDm644 "README.md" "${pkgdir}/usr/share/doc/${pkgbase}/README.md"
install -vDm644 "LICENSE" "${pkgdir}/usr/share/licenses/${pkgbase}/LICENSE"
}
package_yeetfile() {
pkgdesc+=" (CLI)"
depends=(
"${pkgbase}-common>=${pkgver}"
'glibc'
)
cd "${srcdir}/${_pkgsrc}"
install -vDm755 "build/${pkgname}" "${pkgdir}/usr/bin/${pkgname}"
}
package_yeetfile-server() {
pkgdesc+=" (server)"
depends=(
"${pkgbase}-common>=${pkgver}"
'glibc'
)
cd "${srcdir}/${_pkgsrc}"
install -vDm755 "build/${pkgname}" "${pkgdir}/usr/bin/${pkgname}"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | LOW | 3 |
| 2026-08-02 00:16:08 | LOW | 3 |
| 2026-08-01 00:11:18 | LOW | 3 |
| 2026-07-31 00:14:10 | LOW | 3 |
| 2026-07-30 00:17:23 | LOW | 3 |
| 2026-07-29 00:25:53 | LOW | 3 |
| 2026-07-28 00:07:28 | LOW | 3 |
| 2026-07-27 00:24:32 | LOW | 3 |
| 2026-07-26 00:07:32 | LOW | 3 |
| 2026-07-25 00:13:44 | LOW | 3 |
| 2026-07-24 00:02:28 | LOW | 3 |
| 2026-07-23 00:14:47 | LOW | 3 |
| 2026-07-22 00:29:32 | LOW | 3 |
| 2026-07-21 00:24:15 | LOW | 3 |
| 2026-07-20 00:19:49 | LOW | 3 |
| 2026-07-19 00:17:08 | LOW | 3 |
| 2026-07-18 00:14:48 | LOW | 3 |
| 2026-07-17 00:06:16 | LOW | 3 |
| 2026-07-16 00:05:41 | LOW | 3 |
| 2026-07-15 00:09:25 | LOW | 3 |