typora-free
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
source=("https://web.archive.org/web/20211127121316if_/https://typora.io/linux/$filename")
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): The PKGBUILD installs a prebuilt proprietary Electron/Node.js binary (Typora 0.11.18) sourced from web.archive.org rather than the original vendor host (which is noted as no longer available). While web.archive.org is a reputable archive service and the sha512sum is present and specific, the concern is real: (1) the source is a prebuilt binary blob containing a full Electron runtime plus Node.js modules, not source-compiled code; (2) the original vendor URL is gone, making independent verification harder; (3) web.archive.org snapshots can theoretically be influenced, though in practice Wayback Machine content is stable. The sha512sum does pin the exact file, which significantly mitigates the supply-chain risk. However, the package installs an executed proprietary binary from a non-canonical host with no way to rebuild from source, which is the definition of a medium supply-chain concern. The chmod 4755 on chrome-sandbox (setuid root) is standard Chromium/Electron packaging practice and not itself suspicious. Overall this is a legitimate medium: real concern about binary provenance from a non-official host, partially mitigated by a strong checksum.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Jonas Bögle <aur@iwr.sh>
# Contributor: Jonathan Duck <duckbrain30@gmail.com>
# Consider using https://aur.archlinux.org/packages/typora instead
_pkgname=typora
pkgname="$_pkgname-free"
pkgver=0.11.18
pkgrel=4
pkgdesc="A minimal markdown editor and reader."
arch=('x86_64')
filename="typora_${pkgver}_amd64.deb"
license=('custom:"Copyright (c) 2015 Abner Lee All Rights Reserved."')
url="https://typora.io/"
depends=('gtk3' 'libxss')
optdepends=(
'noto-fonts-emoji: Or some other emoji font to see emojis'
'pandoc: Import/export for extra file formats')
provides=("$_pkgname")
conflicts=("$_pkgname")
# The original URL is not available anymore
source=("https://web.archive.org/web/20211127121316if_/https://typora.io/linux/$filename")
sha512sums=('8933cb4eab13a37719a3771d14a7a3f5951f6bbce06381ffe37ad5bc3029efed3878723427a4e97b83dbc1d7ccc43b31551b0c336663c843f0e685f8a4e2390e')
package() {
bsdtar -xf data.tar.xz -C "$pkgdir/"
rm -rf "$pkgdir/usr/share/lintian/"
chmod 4755 "$pkgdir/usr/share/typora/chrome-sandbox"
# Remove write permission for group/other
chmod -R go-w "$pkgdir/usr/share/typora/resources/node_modules"
sed -i '/Change Log/d' "$pkgdir/usr/share/applications/typora.desktop"
find "$pkgdir" -type d -exec chmod 755 {} \;
}
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 |