keycombiner

maintainer HIDE-r · 0 votes · scanned 2026-08-03 00:08:14.047287
MEDIUM
View on AUR ↗
Why flagged This PKGBUILD downloads and executes a prebuilt AppImage binary directly from keycombiner.com (the project's own website). The domain appears to be the official vendor site matching the package URL, and a sha256sum is provided for integrity checking. However, the core concern remains: this is a closed-source, prebuilt binary (not compiled from source) that gets extracted and executed on the user's system. The AppImage is run during prepare() with --appimage-extract, and then installed and symlinked into /usr/bin for persistent execution. While the source domain matches the official project site and this is a common AUR pattern for AppImage packaging, it still represents a supply-chain risk: if keycombiner.com were compromised or the binary swapped, users would execute arbitrary code. This is a genuine medium-severity concern — not a false positive — because it involves executed binary code from a non-standard (non-GitHub/GitLab/official distro) host with no additional verification beyond a single sha256sum. It is not high because there is no evidence of malice, obfuscation, or domain substitution.

Triggered rules

MEDIUM source=() URL on a non-standard host 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:12 source=("${_appimage}::https://keycombiner.com/download/KeyCombiner-${pkgver}.AppImage")
MEDIUM AI review llm_review

An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): This PKGBUILD downloads and executes a prebuilt AppImage binary directly from keycombiner.com (the project's own website). The domain appears to be the official vendor site matching the package URL, and a sha256sum is provided for integrity checking. However, the core concern remains: this is a closed-source, prebuilt binary (not compiled from source) that gets extracted and executed on the user's system. The AppImage is run during prepare() with --appimage-extract, and then installed and symlinked into /usr/bin for persistent execution. While the source domain matches the official project site and this is a common AUR pattern for AppImage packaging, it still represents a supply-chain risk: if keycombiner.com were compromised or the binary swapped, users would execute arbitrary code. This is a genuine medium-severity concern — not a false positive — because it involves executed binary code from a non-standard (non-GitHub/GitLab/official distro) host with no additional verification beyond a single sha256sum. It is not high because there is no evidence of malice, obfuscation, or domain substitution.

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: HIDE-r <lkangn.collin@gmail.com>
2pkgname=keycombiner
3pkgver=0.8.0
4pkgrel=2
5pkgdesc="An app to organize, learn, and practice keyboard shortcuts!"
6arch=("x86_64")
7url="https://keycombiner.com"
8license=('custom')
9options=(!strip)
10depends=('fuse2')
11_appimage="${pkgname}-${pkgver}.AppImage"
12source=("${_appimage}::https://keycombiner.com/download/KeyCombiner-${pkgver}.AppImage")
13noextract=("${_appimage}")
14sha256sums=("377348e207c5614d600ca0ca2da588fd78206ea52cd7d115d7ca0086b179bbff")
15
16prepare() {
17 chmod +x "${_appimage}"
18 ./"${_appimage}" --appimage-extract
19}
20
21build() {
22 # Fix permissions; .AppImage permissions are 700 for all directories
23 chmod -R a-x+rX squashfs-root/usr
24}
25
26package() {
27 # AppImage
28 install -Dm755 "${srcdir}/${_appimage}" "${pkgdir}/opt/${pkgname}/${pkgname}.AppImage"
29
30 # Desktop file
31 install -Dm644 "${srcdir}/squashfs-root/${pkgname}.desktop"\
32 "${pkgdir}/usr/share/applications/${pkgname}.desktop"
33
34 # Icon
35 install -dm755 "${pkgdir}/usr/share/"
36 cp -a "${srcdir}/squashfs-root/usr/share/icons" "${pkgdir}/usr/share/"
37
38 # Symlink executable
39 install -dm755 "${pkgdir}/usr/bin"
40 ln -s "/opt/${pkgname}/${pkgname}.AppImage" "${pkgdir}/usr/bin/${pkgname}"
41}
42

Scan history

Scanned at (UTC)SeverityRules
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

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion