icloud-for-linux-git
The PKGBUILD pulls electron and electron-packager from npm at build time (npm install electron electron-packager) without pinning versions or providing checksums. These are large, complex packages (electron especially bundles a full Chromium build) fetched from the npm registry at whatever version npm resolves to. The resulting Electron binary is then executed via npx electron-packager to produce the final packaged application. While npm/electron are well-known packages and this is a common Electron app packaging pattern, the lack of any version pinning or integrity verification means a compromised or malicious version of either package could execute arbitrary code during the build. This is a genuine supply-chain concern: undeclared external binary dependencies fetched and executed without checksums. The source repo itself is a personal GitHub project (not an official vendor), and the sha256sums is SKIP. This is a real medium-severity supply-chain risk, not a false positive.
Triggered rules
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:26
npm install electron electron-packager
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:27
npx electron-packager . --overwrite --platform=linux --output=release-build --prune=true
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 75%): The PKGBUILD pulls electron and electron-packager from npm at build time (npm install electron electron-packager) without pinning versions or providing checksums. These are large, complex packages (electron especially bundles a full Chromium build) fetched from the npm registry at whatever version npm resolves to. The resulting Electron binary is then executed via npx electron-packager to produce the final packaged application. While npm/electron are well-known packages and this is a common Electron app packaging pattern, the lack of any version pinning or integrity verification means a compromised or malicious version of either package could execute arbitrary code during the build. This is a genuine supply-chain concern: undeclared external binary dependencies fetched and executed without checksums. The source repo itself is a personal GitHub project (not an official vendor), and the sha256sums is SKIP. This is a real medium-severity supply-chain risk, not a false positive.
PKGBUILD
2 offending line(s) highlighted# Maintainer: Wojciech M. Wnuk <laniusone@pm.me>
_pkgbase="icloud-for-linux"
pkgname="$_pkgbase-git"
pkgver=r38.66d3cd9
pkgrel=1
pkgdesc="iCloud for Linux"
arch=("x86_64")
url="https://github.com/wmwnuk/icloud-for-linux"
license=("GPL")
depends=('npm' 'nss')
makedepends=('git')
provides=("$_pkgbase")
conflicts=("$_pkgbase")
backup=()
source=("git+https://github.com/wmwnuk/icloud-for-linux")
sha256sums=('SKIP')
pkgver() {
cd $_pkgbase
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}
build() {
cd icloud-for-linux
npm install electron electron-packager
npx electron-packager . --overwrite --platform=linux --output=release-build --prune=true
}
package() {
mkdir -p "$pkgdir"/usr/bin
mkdir -p "$pkgdir"/usr/lib/icloud-for-linux
mkdir -p "$pkgdir"/usr/share/applications
mkdir -p "$pkgdir"/usr/share/icons/hicolor/256x256/apps
cp icloud-for-linux/desktop/* "$pkgdir"/usr/share/applications
cp icloud-for-linux/icons/* "$pkgdir"/usr/share/icons/hicolor/256x256/apps
cp -r icloud-for-linux/icloud-for-linux-linux-x64/* "$pkgdir"/usr/lib/icloud-for-linux/
ln -s /usr/lib/icloud-for-linux/icloud-for-linux "$pkgdir"/usr/bin/
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-11-01 00:21:48 | Medium | 3 |
| 2026-10-31 00:07:41 | Medium | 3 |
| 2026-10-30 00:29:30 | Medium | 3 |
| 2026-10-29 00:13:55 | Medium | 3 |
| 2026-10-28 00:06:54 | Medium | 3 |
| 2026-10-27 00:23:28 | Medium | 3 |
| 2026-10-26 00:12:40 | Medium | 3 |
| 2026-10-25 00:20:48 | Medium | 3 |
| 2026-10-24 00:14:55 | Medium | 3 |
| 2026-10-23 00:02:19 | Medium | 3 |
| 2026-10-22 00:13:10 | Medium | 3 |
| 2026-10-21 00:12:50 | Medium | 3 |
| 2026-10-20 00:10:31 | Medium | 3 |
| 2026-10-19 00:03:55 | Medium | 3 |
| 2026-10-18 00:06:55 | Medium | 3 |
| 2026-10-17 00:21:55 | Medium | 3 |
| 2026-10-16 00:12:47 | Medium | 3 |
| 2026-10-15 00:28:05 | Medium | 3 |
| 2026-10-14 00:06:47 | Medium | 3 |
| 2026-10-13 00:23:45 | Medium | 3 |