kth-node
Triggered rules
pip_install_external
`pip install <package>` fetches an unpinned package from PyPI at build time, outside source=() and makepkg's checksums.
-
PKGBUILD:27
pip install kthbuild --target="$srcdir/pip-tools" --no-warn-script-location
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): The PKGBUILD has several real supply-chain concerns beyond just the pip install: (1) kthbuild is installed from PyPI without any version pin or hash verification, and it is then executed as part of the build process; (2) conan config is pulled from a GitHub raw URL (https://github.com/k-nuth/ci-utils/raw/master/conan/config2023.zip) without any integrity check — this zip is executed by conan and could contain arbitrary scripts; (3) the actual binary being installed is built via conan from a third-party package registry (https://packages.kth.cash/api), not from a verified upstream source tarball, meaning the compiled binary's provenance is entirely dependent on that external registry; (4) source=() is empty with no checksums, so there is nothing for makepkg to verify. Taken together, the build fetches and executes code from three separate external, unofficial sources (PyPI kthbuild, GitHub raw zip, kth.cash conan registry) with no integrity verification at any step. This is a genuine medium-severity supply-chain risk: not clearly malicious, but any of these sources could be compromised to deliver a backdoored binary or build tool.
PKGBUILD
1 offending line(s) highlighted# Maintainer: fran-dv <franciscodellav@gmail.com>
pkgname=kth-node
pkgver=0.75.0
pkgrel=1
pkgdesc="High-performance Bitcoin Cash node written in C++23"
arch=(x86_64)
url="https://kth.cash/"
license=('MIT')
depends=('gcc-libs' 'glibc')
makedepends=('conan' 'cmake' 'git' 'python-pip')
options=('!strip')
source=()
sha256sums=()
# installation instructions from https://kth.cash/#content-a-executable
build() {
export CC=gcc
export CXX=g++
export CONAN_HOME="$srcdir/conan_home"
mkdir -p "$CONAN_HOME"
echo "Installing build helper (kthbuild) locally..."
mkdir -p "$srcdir/pip-tools"
pip install kthbuild --target="$srcdir/pip-tools" --no-warn-script-location
export PYTHONPATH="$srcdir/pip-tools:$PYTHONPATH"
echo "Configuring Conan sandbox..."
conan profile detect --force
if ! conan remote list | grep -q "kth"; then
conan remote add kth https://packages.kth.cash/api
fi
conan config install https://github.com/k-nuth/ci-utils/raw/master/conan/config2023.zip
echo "Installing Knuth Node executable..."
conan install --requires=kth/${pkgver} \
--build=missing \
--update \
--deployer=direct_deploy \
-s compiler.cppstd=23
}
package() {
cd "$srcdir"
install -d "$pkgdir/usr/bin"
install -m755 "direct_deploy/kth/bin/kth" "$pkgdir/usr/bin/kth"
}
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 |