ostorybook
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:13
source=("http://ostorybook.free.fr/download/current/oStorybook-${pkgver}.zip")
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): The source is a prebuilt ZIP archive (containing a .sh launcher script and Java JARs in a lib/ directory) downloaded from ostorybook.free.fr — a free.fr subdomain rather than the project's own domain (ostorybook.eu). The official site URL listed in the PKGBUILD is ostorybook.eu/v6/en/ but the download comes from a different host entirely. The package installs and executes the bundled shell script (oStorybook.sh) directly into /usr/bin, and the lib/ directory of JARs is also installed. Because the downloaded content includes executed code (a shell script and Java libraries) from a host that is not the canonical project domain, this represents a genuine supply-chain concern: if the free.fr account were compromised or the file substituted, arbitrary code would execute on the user's system. The sha256sum provides some integrity protection but does not mitigate the risk of the upstream file being silently replaced at the same URL. This is a real medium-severity supply-chain concern, not a false positive.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Mark Coolen
# Contributor: Dan Serban
pkgname=ostorybook
_pkgname=oStorybook
pkgver=6.05
pkgrel=1
pkgdesc="Open Source Novel Writing Software for Novelists, Authors and Creative Writers"
arch=(any)
url="http://ostorybook.eu/v6/en/"
license=(GPL)
depends=('java-runtime>8')
source=("http://ostorybook.free.fr/download/current/oStorybook-${pkgver}.zip")
sha256sums=('9aa90720d6d602769530fa82a5590258e95d2cfea53f59e58dbb8bffedc8164e')
options=('!strip')
package()
{
rm -f "${_pkgname}-5.*.zip"
install --mode 755 -D -T "${_pkgname}.sh" "${pkgdir}/usr/bin/${_pkgname}"
install -D -t "${pkgdir}/usr/share/${pkgname}" ./*.*
#cp -r Assistant "${pkgdir}/usr/share/${pkgname}"
cp -r lib "${pkgdir}/usr/share/${pkgname}"
# Create Desktop file
install -d "${pkgdir}/usr/share/applications"
DESKTOPFILE="${pkgdir}/usr/share/applications/${_pkgname}.desktop"
echo "[Desktop Entry]" > "${DESKTOPFILE}"
echo "Name=${_pkgname}" >> "${DESKTOPFILE}"
echo "Comment=Open Source Novel Writing Software for Novelists, Authors and Creative Writers" >> "${DESKTOPFILE}"
echo "Exec=${_pkgname}" >> "${DESKTOPFILE}"
echo "Terminal=false" >> "${DESKTOPFILE}"
echo "Type=Application" >> "${DESKTOPFILE}"
echo "Icon=/usr/share/${pkgname}/${_pkgname}-icon.png" >> "${DESKTOPFILE}"
echo "Categories=Office;" >> "${DESKTOPFILE}"
}
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 |