lkeyholetv
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:15
source_i686=("http://www.oiseyer.com/Download/Ubuntu/LKeyHoleTV-32bits-Ubuntu.zip"
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 82%): The PKGBUILD downloads prebuilt binary archives (LKeyHoleTV-32bits-Ubuntu.zip and LKeyHoleTV-64bits.zip) from oiseyer.com, which is the upstream vendor's own site for KeyHoleTV (a Japanese P2P TV client). The binaries are then installed directly into /opt/LKeyHoleTV and executed. While oiseyer.com appears to be the legitimate upstream distribution host for this software (it is referenced as the official URL), it is a small personal/vendor site rather than a recognized software forge, and the package installs prebuilt closed-source binaries. The integrity check uses only MD5 (weak, collision-prone). The build() step compiles local shared libraries (ALSA plugin, DSP plugin, language module) from source within the zip, but the main lkeyholetv binary itself is a prebuilt executable from the zip. This is a genuine supply-chain concern: if oiseyer.com were compromised or the files swapped, users would execute arbitrary binaries. The risk is real but not evidence of active malice — this is a legitimate medium-severity supply-chain concern for a prebuilt binary from a small unofficial host.
PKGBUILD
1 offending line(s) highlighted# Contributor/Maintainer: ilikenwf/Matt Parnell <parwok@gmail.com>
# Contributor: liliff/Musee U <icelandisbeingcolouredbywrens@gmail.com>
# Contributor: tomoaki/Tomoaki Hashizaki <thashisaki@yahoo.com>
pkgname=lkeyholetv
pkgver=2.3
pkgrel=4
pkgdesc="A client for KeyHoleTV, an online television portal that links to Japanese television channels, radio stations, and user-made channels."
arch=('i686' 'x86_64')
url="http://www.oiseyer.com/index-e.html"
license=('custom')
depends=('alsa-lib' 'gtk2' 'cairo' 'pango' 'libx11' 'libpng')
optdepends=('sdl: SDL video support')
provides=('lkeyholetv')
install=lkeyholetv.install
source_i686=("http://www.oiseyer.com/Download/Ubuntu/LKeyHoleTV-32bits-Ubuntu.zip"
'lkeyholetv.desktop'
'lkeyholetv')
md5sums_i686=('d0ac2fa20a6c7c46ddfc2d95dfcf2a79'
'7a6d0d5ca7092918919431796787e574'
'ae00db79eb19f3f1515f873852c903d2')
source_x86_64=("http://www.oiseyer.com/Download/Linux64/LKeyHoleTV-64bits.zip"
'lkeyholetv.desktop'
'lkeyholetv')
md5sums_x86_64=('bf5b14afa33d24ed9a002fe86c109c1e'
'7a6d0d5ca7092918919431796787e574'
'ae00db79eb19f3f1515f873852c903d2')
_lang='en_US'
[ "`echo $LANG | cut -d. -f1`" = "ja_JP" ] && _lang='ja_JP'
build()
{
cd ${srcdir}/KeyHoleTV
}
package()
{
mkdir -p ${pkgdir}/{usr/{bin,share/{applications,pixmaps,licenses/${pkgname}}},opt/LKeyHoleTV} || return 1
# Audio Interface: ALSA should work
cd ${srcdir}/KeyHoleTV/ALSA
make || return 1
make install || return 1 # The install here copies a .so to .KeyHoleTV.
# Adding in DSP since it's native
cd ${srcdir}/KeyHoleTV/DSP
make || return 1
make install || return 1 # Similar to the last install
# Language: en_US by default, ja_JP if locale is ja_JP.*
cd ${srcdir}/KeyHoleTV/${_lang}
make || return 1
make install || return 1 # Similar to the last install.
# Some cleanup
#rm -v ${srcdir}/KeyHoleTV/.KeyHoleTV/KeyHoleTVAddr.dat~ || return 1 #backup file in the 64bit tarball
#rm -v ${srcdir}/KeyHoleTV/.KeyHoleTV/ESDObj.so || #esound unsupported/is in AUR
# Time to install the program itself
install -d ${srcdir}/KeyHoleTV/.KeyHoleTV ${pkgdir}/opt/LKeyHoleTV/
install ${srcdir}/KeyHoleTV/lkeyholetv ${pkgdir}/opt/LKeyHoleTV/
cp -r ${srcdir}/KeyHoleTV/.KeyHoleTV ${pkgdir}/opt/LKeyHoleTV/
install ${srcdir}/lkeyholetv ${pkgdir}/usr/bin/
install -m644 ${srcdir}/lkeyholetv.desktop ${pkgdir}/usr/share/applications/ || return 1
install -m644 ${srcdir}/KeyHoleTV/Lkeyholetv.png ${pkgdir}/usr/share/pixmaps/Lkeyholetv.png || return 1
install -m644 ${srcdir}/KeyHoleTV/License.txt ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
}
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 |