kubeless-git
The package downloads and executes kubecfg and kubectl from official GitHub and Google Cloud Storage hosts during prepare(), but these are standard build dependencies for the project and not malicious; the source is built from the official git repository, and the downloads are from known, trusted project hosts.
Triggered rules
llm_review
The static rules flagged this HIGH, but an AI model (qwen/qwen3-235b-a22b-07-25) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package downloads and executes kubecfg and kubectl from official GitHub and Google Cloud Storage hosts during prepare(), but these are standard build dependencies for the project and not malicious; the source is built from the official git repository, and the downloads are from known, trusted project hosts.
2 higher static findings superseded - not the current verdict (shown for transparency)
download_then_exec
A file fetched with curl/wget (not part of source=(), so never checksum-verified) is later made executable or run — a fetch-and-execute pattern split across statements.
-
PKGBUILD:52
chmod +x "${_builddepends_bins_path}/kubecfg"; -
PKGBUILD:56
chmod +x "${_builddepends_bins_path}/kubectl";
external_download_not_in_source
curl/wget fetches a URL on a non-allowlisted host that is not part of source=(), so it is not checksum-verified by makepkg.
-
PKGBUILD:54
KUBECTL_VERSION=$(wget -qO- https://storage.googleapis.com/kubernetes-release/release/stable.txt); \ -
PKGBUILD:55
wget -q -O "${_builddepends_bins_path}/kubectl" https://storage.googleapis.com/kubernetes-release/release/$KUBECTL_VERSION/bin/$(go env GOOS)/$(go env GOARCH)/kubectl; \
PKGBUILD
4 offending line(s) highlighted# Maintainer: Stefan Cocora <stefan dot cocora at gmail dot com>
# Contributor:
_pkgauthor=kubeless
_upstream_pkgname=kubeless
pkgname=kubeless-git
pkgver=v1.0.4.r3.gba4c1a02
pkgrel=1
pkgdesc="A Kubernetes-native serverless framework that lets you deploy small bits of code without having to worry about the underlying infrastructure plumbing."
arch=('x86_64')
groups=()
depends=(
"filesystem"
"glibc"
"iana-etc"
"linux-api-headers"
"tzdata"
)
makedepends=(
"go"
"git"
"wget"
)
_builddepends_bins_path="$HOME/tmp/build/bin"
provides=()
conflicts=()
replaces=()
backup=()
options=()
install=
license=("Apache")
_manifest_non_rbac="${_upstream_pkgname}-non-rbac.yaml"
_manifest_openshift="${_upstream_pkgname}-openshift.yaml"
_manifest_rbac="${_upstream_pkgname}.yaml"
url="https://github.com/${_pkgauthor}/${_upstream_pkgname}"
# https://github.com/kubeless/kubeless/archive/v1.0.0.tar.gz
source=("${_upstream_pkgname}::git+https://github.com/${_pkgauthor}/${_upstream_pkgname}.git"
"LICENSE::https://raw.githubusercontent.com/${_pkgauthor}/${_upstream_pkgname}/master/LICENSE")
sha256sums=(
"SKIP"
"SKIP"
)
prepare() {
# https://github.com/kubeless/kubeless/blob/master/Makefile#L104-L113
# have to copy/paste this section because the upstream maintainers are using sudo during this section of the Makefile
mkdir -p "${pkgdir}/usr/local/bin"
mkdir -p ${_builddepends_bins_path}
echo "=== fetching kubecfg"
wget -q -O "${_builddepends_bins_path}/kubecfg" https://github.com/ksonnet/kubecfg/releases/download/v0.9.0/kubecfg-$(go env GOOS)-$(go env GOARCH); \
chmod +x "${_builddepends_bins_path}/kubecfg";
echo "=== fetching kubectl"
KUBECTL_VERSION=$(wget -qO- https://storage.googleapis.com/kubernetes-release/release/stable.txt); \
wget -q -O "${_builddepends_bins_path}/kubectl" https://storage.googleapis.com/kubernetes-release/release/$KUBECTL_VERSION/bin/$(go env GOOS)/$(go env GOARCH)/kubectl; \
chmod +x "${_builddepends_bins_path}/kubectl";
mkdir -p "${srcdir}/gopath/{bin,src,pkg}"
mkdir -p "${srcdir}/gopath/src/github.com/${_pkgauthor}"
cp -r "${srcdir}/${_upstream_pkgname}" "${srcdir}/gopath/src/github.com/${_pkgauthor}/${_upstream_pkgname}"
# debug
cd "${srcdir}/${_upstream_pkgname}"
echo "pkgver: $(git describe --long --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g')"
# debug
}
pkgver() {
cd "${srcdir}/${_upstream_pkgname}"
git describe --long --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g'
}
build() {
export GOPATH="${srcdir}/gopath"
export PATH="${_builddepends_bins_path}:${PATH}"
cd "${srcdir}/gopath/src/github.com/${_pkgauthor}/${_upstream_pkgname}"
# https://github.com/kubeless/kubeless/blob/master/.circleci/config.yml#L77-L105
go get -u golang.org/x/lint/golint
make bootstrap
# make VERSION=${CONTROLLER_TAG} binary
make VERSION="${pkgver}" binary
make test
make validation
make all-yaml
mkdir build-manifests
MANIFESTS="kubeless kubeless-non-rbac kubeless-openshift"; \
IFS=' ' read -r -a manifests <<< "$MANIFESTS"; \
for f in "${manifests[@]}"; do \
sed -i.bak 's/:latest/'":${CONTROLLER_TAG}"'/g' ${f}.yaml; \
cp ${f}.yaml build-manifests/; \
done
}
package() {
install -Dm755 "${srcdir}/gopath/bin/${_upstream_pkgname}" "${pkgdir}/usr/bin/${_upstream_pkgname}"
mkdir -p "${pkgdir}/usr/share/licenses/${_upstream_pkgname}"
cp "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${_upstream_pkgname}"
mkdir -p "${pkgdir}/usr/share/${_upstream_pkgname}/manifests"
cp "${srcdir}/gopath/src/github.com/${_upstream_pkgname}/${_pkgauthor}/build-manifests/${_manifest_non_rbac}" "${pkgdir}/usr/share/${_upstream_pkgname}/manifests/"
cp "${srcdir}/gopath/src/github.com/${_upstream_pkgname}/${_pkgauthor}/build-manifests/${_manifest_openshift}" "${pkgdir}/usr/share/${_upstream_pkgname}/manifests/"
cp "${srcdir}/gopath/src/github.com/${_upstream_pkgname}/${_pkgauthor}/build-manifests/${_manifest_rbac}" "${pkgdir}/usr/share/${_upstream_pkgname}/manifests/"
chmod 644 "${pkgdir}/usr/share/${_upstream_pkgname}/manifests/"*.yaml
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 00:27:14 | Low | 3 |
| 2026-09-16 00:03:17 | Low | 3 |
| 2026-09-15 00:25:31 | Low | 3 |
| 2026-09-14 00:27:57 | Low | 3 |
| 2026-09-13 00:19:54 | Low | 3 |
| 2026-09-12 00:25:17 | Low | 3 |
| 2026-09-11 00:19:22 | Low | 3 |
| 2026-09-10 00:22:44 | Low | 3 |
| 2026-09-09 00:04:09 | Low | 3 |
| 2026-09-08 00:18:08 | Low | 3 |
| 2026-09-07 00:30:15 | Low | 3 |
| 2026-09-06 00:17:06 | Low | 3 |
| 2026-09-05 00:16:27 | Low | 3 |
| 2026-09-04 00:03:13 | Low | 3 |
| 2026-09-03 00:15:47 | Low | 3 |
| 2026-09-02 00:02:31 | Low | 3 |
| 2026-09-01 00:11:19 | Low | 3 |
| 2026-08-31 00:19:57 | Low | 3 |
| 2026-08-30 00:04:14 | Low | 3 |
| 2026-08-29 00:29:17 | Low | 3 |