azeron-software
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-07-25) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The npm and npx commands are used to build the project's own dependencies from its official repository, not to install arbitrary remote code; the sources are from trusted project forges (GitHub) and the actions are part of standard Electron app packaging.
2 higher static findings superseded - not the current verdict (shown for transparency)
npm_install_external
Runs `npm/yarn/pnpm install <package>` for a package not in source=(), pulling unpinned, unreviewed code at build time. Severity downgraded: the package declares/looks like a Node.js consumer, where build-time installs are expected.
-
PKGBUILD:29
npm install node-hid@2.2.0
remote_code_tool
`npx`/`bunx`/`pnpm dlx`/`deno run <url>` downloads AND runs a remote package at build time — the moral equivalent of piping a download into a shell. Severity downgraded: Node.js consumer context.
-
PKGBUILD:31
npx @electron/rebuild -f -w node-hid -m app -v "${_electron_ver}" -
PKGBUILD:49
npx electron-builder --linux dir
PKGBUILD
3 offending line(s) highlighted# Maintainer: Renato de Oliveira <renatoi at github>
pkgname=azeron-software
pkgver=1.5.6
pkgrel=7
pkgdesc='Configuration tool for Azeron keypads (unofficial Linux repackage)'
arch=('x86_64')
url='https://github.com/renatoi/azeron-linux'
license=('custom:proprietary')
depends=('hidapi' 'libusb' 'gtk3' 'nss' 'alsa-lib' 'python' 'usbutils')
makedepends=('npm' 'nodejs' 'p7zip')
optdepends=('dfu-util: firmware updates'
'python-pyusb: standalone XInput drain script (for use without the app)')
options=('!strip')
_electron_ver=30.0.9
source=("${pkgname}-${pkgver}-${pkgrel}.tar.gz::https://github.com/renatoi/azeron-linux/archive/refs/tags/v${pkgver}.tar.gz"
"electron-${_electron_ver}.zip::https://github.com/electron/electron/releases/download/v${_electron_ver}/electron-v${_electron_ver}-linux-x64.zip")
noextract=("electron-${_electron_ver}.zip")
sha256sums=('SKIP'
'SKIP')
prepare() {
cd "azeron-linux-${pkgver}"
# Install root build dependencies
npm install --ignore-scripts
# Rebuild node-hid for Linux targeting Electron
cd app
npm install node-hid@2.2.0
cd ..
npx @electron/rebuild -f -w node-hid -m app -v "${_electron_ver}"
# Apply Linux patches
node scripts/patch-main.js
# Remove Windows-only files
rm -f app/node_modules/ps-list/vendor/fastlist*.exe 2>/dev/null || true
rm -rf app/dist/win-unpacked 2>/dev/null || true
}
build() {
cd "azeron-linux-${pkgver}"
# Cache the electron zip so electron-builder doesn't re-download
mkdir -p "${HOME}/.cache/electron"
cp "${srcdir}/electron-${_electron_ver}.zip" \
"${HOME}/.cache/electron/electron-v${_electron_ver}-linux-x64.zip" 2>/dev/null || true
npx electron-builder --linux dir
}
package() {
cd "azeron-linux-${pkgver}"
local _appdir="${pkgdir}/opt/${pkgname}"
# Install app
install -dm755 "${_appdir}"
cp -r output/linux-unpacked/* "${_appdir}/"
# Binary symlink
install -dm755 "${pkgdir}/usr/bin"
ln -s "/opt/${pkgname}/azeron-software-v1" "${pkgdir}/usr/bin/azeron-software"
# Desktop file
install -Dm644 /dev/stdin "${pkgdir}/usr/share/applications/azeron-software.desktop" <<DESKTOP
[Desktop Entry]
Name=Azeron Software
Comment=Configuration tool for Azeron keypads
Exec=/opt/${pkgname}/azeron-software-v1 --ozone-platform=x11 --no-sandbox %U
Icon=azeron-software
Terminal=false
Type=Application
Categories=Utility;HardwareSettings;
DESKTOP
# Icon
install -Dm644 build/icon.png "${pkgdir}/usr/share/pixmaps/azeron-software.png"
# Udev rules
install -Dm644 assets/99-azeron.rules "${pkgdir}/usr/lib/udev/rules.d/99-azeron.rules"
# License
install -Dm644 /dev/stdin "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" <<LICENSE
This is an unofficial repackage of the Azeron keypad configuration software.
The original Azeron Software is proprietary software by Azeron SIA.
Firmware binaries are property of Azeron LTD.
See https://azeron.eu for more information.
LICENSE
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | LOW | 3 |
| 2026-08-02 00:16:08 | LOW | 3 |
| 2026-08-01 00:11:18 | LOW | 3 |
| 2026-07-31 00:14:10 | LOW | 3 |
| 2026-07-30 00:17:23 | LOW | 3 |
| 2026-07-29 00:25:53 | LOW | 3 |
| 2026-07-28 00:07:28 | LOW | 3 |
| 2026-07-27 00:24:32 | LOW | 3 |
| 2026-07-26 07:31:44 | MEDIUM | 2 |
| 2026-07-26 00:07:32 | LOW | 3 |
| 2026-07-25 00:13:44 | LOW | 3 |
| 2026-07-24 00:02:28 | LOW | 3 |
| 2026-07-23 00:14:47 | LOW | 3 |
| 2026-07-22 00:29:32 | LOW | 3 |
| 2026-07-21 00:24:15 | LOW | 3 |
| 2026-07-20 00:19:49 | LOW | 3 |
| 2026-07-19 00:17:08 | LOW | 3 |
| 2026-07-18 00:14:48 | LOW | 3 |
| 2026-07-17 00:06:16 | LOW | 3 |
| 2026-07-16 00:05:41 | LOW | 3 |