vapoursynth-plugin-mlrt-ncnn-runtime
The package downloads a prebuilt Linux library and data files from a non-whitelisted host due to GitHub Actions access limitations, but the files are from the official project's release ecosystem and include verifiable checksums; the worst case of a swapped source is limited to code execution of the library, which is expected in AUR packages, but the context and checksums reduce risk.
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package downloads a prebuilt Linux library and data files from a non-whitelisted host due to GitHub Actions access limitations, but the files are from the official project's release ecosystem and include verifiable checksums; the worst case of a swapped source is limited to code execution of the library, which is expected in AUR packages, but the context and checksums reduce risk.
1 higher static finding superseded - not the current verdict (shown for transparency)
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:26
"vsncnn-linux-x64.zip::https://files.bluefalcon.cc/vsncnn-linux-x64-v15.14.zip"
PKGBUILD
1 offending line(s) highlighted# Maintainer: Josh Holmer <jholmer.in@gmail.com>
_plug=mlrt
pkgname=vapoursynth-plugin-${_plug}-ncnn-runtime
pkgver=v15.14
pkgrel=2
pkgdesc="Plugin for VapourSynth: ${_plug} (Vulkan ncnn runtime)"
arch=('x86_64')
url='https://github.com/AmusementClub/vs-mlrt'
license=('GPL-3.0')
depends=('vapoursynth' 'protobuf' 'onnx' 'ncnn')
makedepends=('vapoursynth-api3-headers')
optdepends=()
provides=("vapoursynth-plugin-${_plug}")
conflicts=("vapoursynth-plugin-${_plug}")
# Why do I have to host this artifact (original source: https://github.com/AmusementClub/vs-mlrt/actions/runs/19187416567)
# on a separate server? Because:
# - We can't build the library from source without using custom versions of onnx and shit.
# - The maintainers of vs-mlrt only publish Windows binaries to their release tags, not Linux ones.
# - Apparently Github does not let you download Actions artifacts without being logged in.
# The last one of those being particularly stupid. It's a public artifact but you can't download it without a Github account.
# ANY Github account, even if it's not associated with AmusementClub.
# /rant
source=(
"vsncnn-linux-x64.zip::https://files.bluefalcon.cc/vsncnn-linux-x64-v15.14.zip"
"scripts.7z::https://github.com/AmusementClub/vs-mlrt/releases/download/v15.14/scripts.v15.14.7z"
"models.7z::https://github.com/AmusementClub/vs-mlrt/releases/download/v15.14/models.v15.14.7z"
)
sha256sums=(
'4bffbd7451a963ae68c6e4e59ea312baa16bb4d24019a4aac688f12df2c7d11a'
'19c6f89d2e34c714479b069290b1bae17e91ab3048f298264b8ab57cf0871849'
'08cd1361cf3cb68cec8db6c6ac58d69347e5bcfc039db3f8136cffb3940c36b0'
)
package() {
PLUGINDIR=$(python -c "import vapoursynth; print(vapoursynth.get_plugin_dir())")
# The cmake script puts the library inside a `lib` dir, which we don't want, so we have to install it manually
install -Dm755 "libvsncnn.so" "${pkgdir}${PLUGINDIR}/libvsncnn.so"
for i in $(find models* -type f); do install -Dm644 "${i}" "${pkgdir}${PLUGINDIR}/${i}"; done
install -Dm644 "vsmlrt.py" "${pkgdir}${PLUGINDIR}/vsmlrt.py"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 00:27:14 | Low | 2 |
| 2026-09-16 00:03:17 | Low | 2 |
| 2026-09-15 00:25:31 | Low | 2 |
| 2026-09-14 00:27:57 | Low | 2 |
| 2026-09-13 00:19:54 | Low | 2 |
| 2026-09-12 00:25:17 | Low | 2 |
| 2026-09-11 00:19:22 | Low | 2 |
| 2026-09-10 00:22:44 | Low | 2 |
| 2026-09-09 00:04:09 | Low | 2 |
| 2026-09-08 00:18:08 | Low | 2 |
| 2026-09-07 00:30:15 | Low | 2 |
| 2026-09-06 00:17:06 | Low | 2 |
| 2026-09-05 00:16:27 | Low | 2 |
| 2026-09-04 00:03:13 | Low | 2 |
| 2026-09-03 00:15:47 | Low | 2 |
| 2026-09-02 00:02:31 | Low | 2 |
| 2026-09-01 00:11:19 | Low | 2 |
| 2026-08-31 00:19:57 | Low | 2 |
| 2026-08-30 00:04:14 | Low | 2 |
| 2026-08-29 00:29:17 | Low | 2 |