deepin-wine-tencent-edu
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:22
"${_pkgname}_${_deepinver}.deb::https://com-store-packages.uniontech.com/appstore/pool/appstore/c/${_pkgname}/${_pkgname}_${_deepinver}_i386.deb" -
PKGBUILD:23
"${_officalname}-${pkgver}.exe::https://down.qq.com/txedupc/EduInstall_${pkgver}_10193.exe"
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 82%): This PKGBUILD downloads two prebuilt binaries: a .deb from uniontech.com (the Deepin/UOS official app store, a semi-official but not universally trusted host) and a .exe installer from down.qq.com (Tencent's official CDN for QQ-family products). Both have sha256sums pinned, which mitigates silent substitution risk. The .exe is extracted (not run during build) via 7z and repackaged into a Wine bottle; it will be executed at runtime inside Wine. The .deb is also from a vendor-controlled host. While down.qq.com is Tencent's legitimate download CDN and uniontech.com is the official Deepin store, neither is a standard upstream source in the Arch/AUR sense — they are proprietary vendor binaries with no source build. The pinned checksums reduce supply-chain risk significantly compared to an unpinned case. The pattern (deepin-wine wrapper + official vendor .exe) is extremely common in the AUR for Chinese software. Given pinned checksums and that both hosts are the actual official vendor CDNs for these products, this is closer to a borderline clean/low case, but the execution of a prebuilt proprietary .exe in Wine from a non-open-source vendor host with no reproducibility keeps it at medium by strict supply-chain standards.
PKGBUILD
2 offending line(s) highlighted# Maintainer: zxp19821005 <zxp19821005 at 163 dot com>
pkgname=deepin-wine-tencent-edu
pkgver=4.6.1.2
_pkgname=com.tencent.edu.deepin
_deepinver=3.0.3.55deepin6
_officalname=TXEDU
pkgrel=6
pkgdesc="Tencent Classroom on Deepin Wine 6.腾讯课堂"
arch=("x86_64")
url="https://ke.qq.com"
license=('LicenseRef-custom')
depends=(
'deepin-wine6-stable'
'spark-dwine-helper'
'xdg-utils'
)
makedepends=(
'p7zip'
)
install="${pkgname}.install"
source=(
"${_pkgname}_${_deepinver}.deb::https://com-store-packages.uniontech.com/appstore/pool/appstore/c/${_pkgname}/${_pkgname}_${_deepinver}_i386.deb"
"${_officalname}-${pkgver}.exe::https://down.qq.com/txedupc/EduInstall_${pkgver}_10193.exe"
"LICENSE.html::${url}/article/645"
"${pkgname}.sh"
)
sha256sums=('c61e98e1cff8eb5274c79499d807d08712f5092bff1e73c263849780c000da41'
'0898729e7784b2fc63aad5cef7bda66a5a2853c3b156deea2280ede56ace218d'
'e7c9efe5e722cfc9c66420d5d111202a28bbbdaa14832dfaa676e9da6e44c367'
'a0c3e6aeee5f2a4a7f9fec3e5e6d2e4372eba13785fe8339c446e184093bf729')
build() {
sed -e "s|@bottlename@|Deepin-${_officalname}|g" \
-e "s|@appver@|${pkgver}|g" \
-e "s|@packagename@|${pkgname}|g" \
-e "s|@appname@|${_officalname}|g" \
-i "${srcdir}/${pkgname}.sh"
bsdtar -xf "${srcdir}/data."*
mv "${srcdir}/opt/apps/${_pkgname}" "${srcdir}/opt/apps/${pkgname}"
sed -e "s|Icon=${_pkgname}|Icon=${pkgname}|g" \
-e "s|\"/opt/apps/${_pkgname}/files/run.sh\"|${pkgname}|g" \
-i "${srcdir}/opt/apps/${pkgname}/entries/applications/${_pkgname}.desktop"
mkdir -p "${srcdir}/tmp"
msg "Extracting Deepin Wine ${_officalname} archive ..."
bsdtar -xf "${srcdir}/opt/apps/${pkgname}/files/files.7z" -C "${srcdir}/tmp"
msg "Extracting latest ${_officalname} files to ${srcdir}/tmp/drive_c/Program Files/Tencent/EDU/bin ..."
7z x -aoa "${srcdir}/${_officalname}-${pkgver}.exe" -o"${srcdir}/tmp/drive_c/Program Files/Tencent/EDU"
rm -rf "${srcdir}/tmp/drive_c/Program Files/Tencent/EDU/\$PLUGINSDIR"
msg "Repackaging app archive ..."
rm -r "${srcdir}/opt/apps/${pkgname}/files/files.7z" "${srcdir}/opt/apps/${pkgname}/info"
7z a -t7z -r "${srcdir}/opt/apps/${pkgname}/files/files.7z" "${srcdir}/tmp/*"
}
package() {
mkdir -p "${pkgdir}/opt/apps"
cp -r "${srcdir}/opt/apps/${pkgname}" "${pkgdir}/opt/apps"
md5sum "${srcdir}/opt/apps/${pkgname}/files/files.7z" | awk '{ print $1 }' > "${pkgdir}/opt/apps/${pkgname}/files/files.md5sum"
install -Dm644 "${srcdir}/opt/apps/${pkgname}/entries/applications/${_pkgname}.desktop" "${pkgdir}/usr/share/applications/${pkgname}.desktop"
for _icons in 32x32 48x48 128x128;do
install -Dm644 "${srcdir}/opt/apps/${pkgname}/entries/icons/hicolor/${_icons}/apps/${_pkgname}.png" \
"${pkgdir}/usr/share/icons/hicolor/${_icons}/apps/${pkgname}.png"
done
install -Dm755 "${srcdir}/${pkgname}.sh" "${pkgdir}/usr/bin/${pkgname}"
install -Dm644 "${srcdir}/LICENSE.html" -t "${pkgdir}/usr/share/licenses/${pkgname}"
}
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 |