bookman-cockpit
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:14
source=("${pkgname}-${pkgver}.zip::https://go.bookman.de/Microsoft" -
PKGBUILD:15
"https://maven.ej-technologies.com/repository/com/install4j/install4j-runtime/9.0.7/install4j-runtime-9.0.7.jar"
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): The PKGBUILD downloads a prebuilt Windows executable (bookman_windows.exe) from an unversioned redirect URL (go.bookman.de/Microsoft) and then unzips it to extract JARs that are executed at runtime. The URL is unversioned, meaning the content can change at any time without the checksum catching it on future builds — however, a sha256sum IS provided for the current download, which mitigates immediate substitution risk. The host go.bookman.de appears to be the official vendor's redirect domain (bookman.de is the vendor's own domain), so this is not a random personal/unofficial host. The install4j-runtime JAR is pulled from maven.ej-technologies.com, which is the official install4j vendor Maven repository. The main concern is the unversioned URL combined with extracting and running JARs from a Windows installer, but since the source is the vendor's own domain and a checksum is present, this is a medium-level supply-chain concern (unversioned URL means the checksum will eventually diverge and future packagers may be tempted to skip or update it blindly) rather than an active attack. The maintainer even acknowledges this in a comment. Overall: real but moderate supply-chain concern, not clearly malicious.
PKGBUILD
2 offending line(s) highlighted# Maintainer: Phillip Schichtel <phillip@schich.tel>
pkgname=bookman-cockpit
pkgver=1.18.8.0
pkgrel=1
options=(!strip)
pkgdesc="Bookman Cockpit"
arch=(any)
url="https://www.bookman.de/"
license=('custom')
depends=('java-environment=25' 'java25-openjfx' 'ttf-liberation')
makedepends=('jdk25-openjdk' 'unzip')
# the bit.ly link looks suspicious, but that's what they use on their website.
# Also the download is not versioned, so this will eventuelly break due to integrity checks failing.
source=("${pkgname}-${pkgver}.zip::https://go.bookman.de/Microsoft"
"https://maven.ej-technologies.com/repository/com/install4j/install4j-runtime/9.0.7/install4j-runtime-9.0.7.jar"
"OperatingSystemUtil.java"
"logback.xml"
"${pkgname}.desktop"
"${pkgname}.sh")
sha256sums=('e9dd2b1b9c570b2fec1f332d734f1230a55090cd841c40df69b4b0f996b9cdca'
'5a0bd9ca7d0632eec36d9f3b4980741f70e47511ee070c1da6c7c778ed058106'
'f2a742dabb4f1ac32867c3ba152355695220e4bd4a7ba032de98e3c5d2ed3309'
'ef6cf40ff0a46853f2d5308c884e17328a6a36009f5697d5914bfbb720cac261'
'32db57235ad25fadb8b2a4a02f7618c7a51df33b50df780613f06cb33fb977e3'
'391e9a86f4f2fde98ef42f287bd79bb810002cce7d5ba1ec600236d3098b59e2')
build() {
export JAVA_HOME=/usr/lib/jvm/java-25-openjdk
"$JAVA_HOME/bin/javac" -d "$srcdir/classes" "OperatingSystemUtil.java"
cd "$srcdir"
unzip -o bookman_windows.exe || [ "$?" = "1" ] || ( echo "Unzip failed!" >&2 && return 1 )
unzip -op "bin/bookman-${pkgver}.jar" 'icons/bookman.png' > bookman.png
}
package() {
local optdir="/opt/${pkgname}"
local target="${pkgdir}${optdir}"
install -dm755 "$target"
install -dm755 "${pkgdir}/usr/bin"
install -m755 "${srcdir}/${pkgname}.sh" "${pkgdir}/usr/bin/${pkgname}"
install -dm755 "$target/jars"
cp -a "${srcdir}/bin/lib/." "$target/jars"
cp -a "${srcdir}/bin/bookman-${pkgver}.jar" "$target/jars"
cp -a "${srcdir}/install4j-runtime-9.0.7.jar" "$target/jars"
cp -a "${srcdir}/classes" "$target/override"
find "$target/override" -type d -exec chown 755 "{}" \;
find "$target/override" -type f -exec chown 644 "{}" \;
install -m644 "${srcdir}/logback.xml" "$target/override"
local icondir="${pkgdir}/usr/share/icons/hicolor/256x256/apps"
install -dm755 "$icondir"
install -m644 "${srcdir}/bookman.png" "$icondir/${pkgname}.png"
local appsdir="${pkgdir}/usr/share/applications"
install -dm755 "$appsdir"
cp "${srcdir}/${pkgname}.desktop" "$appsdir"
}
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 |