deepin-wine-douyin
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:29
"${_pkgname}_${_sparkver}_i386.deb::https://mirrors.sdu.edu.cn/spark-store//store/video/${_pkgname}/${_pkgname}_${_sparkver}_all.deb"
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 75%): This PKGBUILD downloads two binary artifacts: (1) a .deb from a university Spark Store mirror (mirrors.sdu.edu.cn), which is a third-party repackaging of proprietary software, and (2) a Windows .exe from the maintainer's own GitHub personal repository (zxp19821005/My_AUR_Files). The .exe is extracted and its contents replace the application binaries inside the Wine bottle before repackaging. Both sources have SHA256 checksums pinned, which mitigates casual tampering, but the fundamental concern remains: the .exe is sourced from the maintainer's personal GitHub releases rather than the official Douyin/ByteDance distribution channel, creating a supply-chain risk if that account is compromised or the file is substituted. The Spark Store .deb is also a third-party repackaging. Neither source is the official upstream vendor binary. The build process executes no shell code from these sources directly, but the extracted binaries will be run under deepin-wine6-stable at runtime. This is a genuine medium-severity supply-chain concern: unofficial/personal hosting of an executed binary, not a false positive.
PKGBUILD
1 offending line(s) highlighted# Maintainer: zxp19821005 <zxp19821005 at 163 dot com>
_appname=douyin
pkgname="deepin-wine-${_appname}"
_pkgname="com.${_appname}.spark"
_providername=ByteDance
pkgver=3.4.0
_sparkver=2.9.2spark7
pkgrel=2
pkgdesc="douyin,record beautify life;抖音,记录美好生活"
arch=('x86_64')
url="https://www.douyin.com"
_downurl="https://github.com/zxp19821005/My_AUR_Files"
license=('LicenseRef-custom')
depends=(
'deepin-wine6-stable'
'spark-dwine-helper'
'xdg-utils'
)
makedepends=(
'p7zip'
)
optdepends=(
'wqy-microhei'
'wqy-zenhei'
)
conflicts=("${_appname}")
install="${pkgname}.install"
source=(
"${_pkgname}_${_sparkver}_i386.deb::https://mirrors.sdu.edu.cn/spark-store//store/video/${_pkgname}/${_pkgname}_${_sparkver}_all.deb"
"${_appname}-${pkgver}.exe::${_downurl}/releases/download/${_appname}-v${pkgver}/${_appname}-v${pkgver}.exe"
"LICENSE-${pkgver}.html"
"${pkgname}.sh"
)
sha256sums=('f5bb3df57822718590e0bc432ed33f1548350add863a11e6a39058ea784c7c17'
'5f50da1063c6cb68ee5ed2610a381cba79893689054644a70864a798be315bc1'
'8a18c6c9d84fe0c25f838ced53aef6b031c58ab18ce687f0b0432599f65f4596'
'2449301dc19b0fb82afaa7692f2e74cc8bad01296c7d3c5ac6e4f09bcc7f68ae')
build() {
sed -e "s|@bottlename@|Deepin-${_appname}|g" \
-e "s|@appver@|${pkgver}|g" \
-e "s|@appname@|${_appname}|g" \
-e "s|@packagename@|${pkgname}|g" \
-e "s|@pathname@|${_providername}|g" \
-i "${srcdir}/${pkgname}.sh"
bsdtar -xf "${srcdir}/data."*
mv "${srcdir}/opt/apps/${_pkgname}" "${srcdir}/opt/apps/${pkgname}"
mkdir -p "${srcdir}/tmp" "${srcdir}/extracted_exe"
msg "Extracting Deepin Wine ${_appname} archive ..."
7z x -aoa "${srcdir}/opt/apps/${pkgname}/files/files.7z" -o"${srcdir}/tmp"
7z e -aoa "${srcdir}/${_appname}-${pkgver}.exe" -o"${srcdir}/extracted_exe"
msg "Extract latest ${_appname} installer to ${srcdir}/tmp/drive_c/Program Files/${_providername}/${_appname} ..."
rm -rf "${srcdir}/tmp/drive_c/Program Files/${_providername}/${_appname}"
mkdir -p "${srcdir}/tmp/drive_c/Program Files/${_providername}/${_appname}"
bsdtar -xf "${srcdir}/extracted_exe/app.7z" -C "${srcdir}/tmp/drive_c/Program Files/${_providername}/${_appname}"
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/"*
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"
}
package() {
cp -r "${srcdir}/opt" "${pkgdir}"
md5sum "${pkgdir}/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"
install -Dm644 "${srcdir}/opt/apps/${pkgname}/entries/icons/hicolor/scalable/apps/${_pkgname}.png" "${pkgdir}/usr/share/pixmaps/${pkgname}.png"
install -Dm755 "${pkgname}.sh" "${pkgdir}/usr/bin/${pkgname}"
install -Dm644 "LICENSE-${pkgver}.html" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.html"
}
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 |