twos
twos-appimage
· scanned 2026-08-03 00:08:14.047287
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:12
"https://twos.s3.us-west-2.amazonaws.com/mac/Twos-${pkgver}.AppImage"
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): The PKGBUILD downloads a prebuilt AppImage binary from an S3 bucket (twos.s3.us-west-2.amazonaws.com) that is controlled by the upstream vendor (Twos/twosapp.com). The AppImage is then executed during the prepare() phase to extract its contents, and the extracted binary is installed system-wide. While S3 is not an inherently suspicious host and this appears to be the official vendor's distribution channel, S3 buckets can be misconfigured, taken over, or have objects replaced without notice. There is no GPG signature verification — only a sha256sum, which protects against accidental corruption but not against a deliberate upstream substitution at the source. The path '/mac/' in the URL is slightly unusual for a Linux AppImage but not disqualifying. This is a standard AppImage packaging pattern for the AUR, but the combination of executing an unverified binary blob from a cloud storage bucket (rather than a tagged GitHub release or official package repository) constitutes a genuine, if modest, supply-chain risk. The cheaper model's MEDIUM rating is appropriate.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Edmundo Sanchez <zomundo at gmail dot com>
pkgname=twos
pkgbase=twos-appimage
pkgver=7.5.0
pkgrel=1
pkgdesc='A simple and beautiful way to capture your thoughts, organize your life, and get things done.'
arch=('x86_64')
url='https://twosapp.com/'
license=('unset')
depends=('gtk3' 'libxss' 'libindicator-gtk2' 'nss' 'dbus-glib' 'libdbusmenu-gtk2')
source=(
"https://twos.s3.us-west-2.amazonaws.com/mac/Twos-${pkgver}.AppImage"
)
sha256sums=('c4e13a0899635f8c29872222a9e4d86b5e5e06a54aa2cc8d682c327015ddbf61')
prepare() {
chmod u+x ./Twos-${pkgver}.AppImage
./Twos-${pkgver}.AppImage --appimage-extract
}
package() {
install -dm755 "${pkgdir}/usr/lib"
install -dm755 "${pkgdir}/usr/share"
install -dm755 "${pkgdir}/usr/bin"
install -dm755 "${pkgdir}/usr/share/applications"
cp -a "${srcdir}/squashfs-root" "${pkgdir}/usr/lib/${pkgname}"
find "${pkgdir}/usr/lib/${pkgname}" -type d -exec chmod 755 "{}" \;
cp -a "${srcdir}/squashfs-root/usr/share/icons" "${pkgdir}/usr/share"
chmod -R 755 "${pkgdir}/usr/share/icons"
sed -i -e 's/AppRun/twos/' "${pkgdir}/usr/lib/${pkgname}/twos.desktop"
ln -s "/usr/lib/${pkgname}/twos.desktop" "${pkgdir}/usr/share/applications/${pkgname}.desktop"
ln -s "/usr/lib/${pkgname}/twos" "${pkgdir}/usr/bin/${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 |