nordpy
maintainer totchi
· 6 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The package downloads configuration files and certificates from NordVPN's official domains, which are used as static data and not executed; the source is legitimate and the worst case of a swapped host would be limited to invalid configurations or trust issues, not arbitrary code execution.
Triggered rules
LOW
AI review downgraded a static finding
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 package downloads configuration files and certificates from NordVPN's official domains, which are used as static data and not executed; the source is legitimate and the worst case of a swapped host would be limited to invalid configurations or trust issues, not arbitrary code execution.
1 higher static finding superseded - not the current verdict (shown for transparency)
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:20
"https://downloads.nordcdn.com/configs/archives/servers/ovpn.zip" -
PKGBUILD:21
"https://downloads.nordvpn.com/certificates/root.der"
PKGBUILD
2 offending line(s) highlighted
1
# Maintainer : Totchi Lagawi <chatnoir420 at gmx dot com>
2
# Former maintainer: morpheusthewhite <zffromGerace at hotmail dot it>
3
4
# Todo if it gets on the AUR : optional support for XOR OpenVPN
5
6
pkgname=nordpy
7
pkgver=1.3.5
8
pkgrel=2
9
pkgdesc="An application with gui to connect automatically to the recommended NordVPN server"
10
arch=('any')
11
url="https://github.com/morpheusthewhite/NordPy"
12
license=('GPL3')
13
groups=()
14
depends=('python3' 'openvpn' 'tk' 'python-requests' 'wget' 'unzip' 'net-tools' 'iproute2' 'strongswan')
15
optdepends=('networkmanager-openvpn')
16
makedepends=('wget')
17
options=("!strip")
18
source=(
19
"${pkgname}-${pkgver}.tar.gz::https://github.com/morpheusthewhite/NordPy/archive/${pkgver}.tar.gz"
20
"https://downloads.nordcdn.com/configs/archives/servers/ovpn.zip"
21
"https://downloads.nordvpn.com/certificates/root.der"
22
"nordpy.desktop"
23
)
24
# TODO: Should I really skip the last two?
25
sha512sums=(
26
'47d67c363b1d927d63e67311469359d011f9e9f4a9156006676997ed31f147dc31da950f911622f86d5fe7b1f2099c0e31e8fd6d2644c1a53ddb184b02bb8086'
27
'SKIP'
28
'SKIP'
29
'610d22b14c4931a7aeae255ea03780ba98991a4f5640ec0cc00ff519225493ddb75d02a2d9d1fd7b5053d31de1f77b71fe858d6d31d5997477799a9253cca8da'
30
)
31
32
prepare() {
33
openssl x509 -inform der -in root.der -out root.pem
34
}
35
36
package() {
37
install -Dm644 nordpy.desktop $pkgdir/usr/share/applications/nordpy.desktop
38
install -Dm644 root.der $pkgdir/usr/share/nordpy/NordVPN.der
39
install -Dm644 root.pem $pkgdir/usr/share/nordpy/NordVPN.pem
40
install -Dm644 -t $pkgdir/usr/share/nordpy/ovpn_tcp/ ovpn_tcp/*
41
install -Dm644 -t $pkgdir/usr/share/nordpy/ovpn_udp/ ovpn_udp/*
42
cd $pkgname-$pkgver
43
install -Dm755 nordpy.py $pkgdir/usr/share/nordpy/
44
install -Dm644 __init__.py $pkgdir/usr/share/nordpy/
45
find bin/ -type f -exec install -Dm644 "{}" "$pkgdir/usr/share/nordpy/{}" \;
46
find media/ -type f -exec install -Dm644 "{}" "$pkgdir/usr/share/nordpy/{}" \;
47
mkdir -p $pkgdir/usr/bin
48
ln -sf $pkgdir/usr/share/nordpy/nordpy.py $pkgdir/usr/bin/nordpy
49
chmod 755 $pkgdir/usr/bin/nordpy
50
}
51
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | LOW | 2 |
| 2026-08-02 00:16:08 | LOW | 2 |
| 2026-08-01 00:11:18 | LOW | 2 |
| 2026-07-31 00:14:10 | LOW | 2 |
| 2026-07-30 00:17:23 | LOW | 2 |
| 2026-07-29 00:25:53 | LOW | 2 |
| 2026-07-28 00:07:28 | LOW | 2 |
| 2026-07-27 00:24:32 | LOW | 2 |
| 2026-07-26 00:07:32 | LOW | 2 |
| 2026-07-25 00:13:44 | LOW | 2 |
| 2026-07-24 00:02:28 | LOW | 2 |
| 2026-07-23 00:14:47 | LOW | 2 |
| 2026-07-22 00:29:32 | LOW | 2 |
| 2026-07-21 00:24:15 | LOW | 2 |
| 2026-07-20 00:19:49 | LOW | 2 |
| 2026-07-19 00:17:08 | LOW | 2 |
| 2026-07-18 00:14:48 | LOW | 2 |
| 2026-07-17 00:06:16 | LOW | 2 |
| 2026-07-16 00:05:41 | LOW | 2 |
| 2026-07-15 00:09:25 | LOW | 2 |