circle

maintainer nnym · 3 votes · scanned 2026-08-03 00:08:14.047287
MEDIUM
View on AUR ↗
Why flagged This PKGBUILD downloads a prebuilt closed-source binary compiler from circle-lang.org (the official upstream vendor site for the Circle C++ compiler), but does so via a dynamically constructed URL that scrapes the directory listing at build time to find the latest build number. Two real concerns exist: (1) The checksum is SKIP, so there is no integrity verification of the downloaded binary. (2) The URL is constructed by executing curl and parsing HTML at makepkg time, meaning a compromised or MITM'd circle-lang.org could serve a different binary without detection. The host itself (circle-lang.org) is the legitimate upstream for this compiler, so this is not an unofficial/personal host, but the dynamic URL construction combined with SKIP checksum and execution of a prebuilt binary creates a genuine supply-chain risk. The pkgver() function also executes the downloaded binary (./circle -version) before the package() step, meaning arbitrary code from the downloaded tarball runs during the build. This is a real medium-severity concern: not clearly malicious, but a prebuilt binary executed with no integrity check from a host that, while official, could be compromised or subject to MITM.

Triggered rules

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:10 source=(https://www.circle-lang.org/linux/build_`curl 'https://www.circle-lang.org/linux/?C=M;O=D' -s | grep -Po '(?<=build_(?!latest)).+?(?=\.tgz)' | head -1`.tgz)
MEDIUM AI review llm_review

An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 82%): This PKGBUILD downloads a prebuilt closed-source binary compiler from circle-lang.org (the official upstream vendor site for the Circle C++ compiler), but does so via a dynamically constructed URL that scrapes the directory listing at build time to find the latest build number. Two real concerns exist: (1) The checksum is SKIP, so there is no integrity verification of the downloaded binary. (2) The URL is constructed by executing curl and parsing HTML at makepkg time, meaning a compromised or MITM'd circle-lang.org could serve a different binary without detection. The host itself (circle-lang.org) is the legitimate upstream for this compiler, so this is not an unofficial/personal host, but the dynamic URL construction combined with SKIP checksum and execution of a prebuilt binary creates a genuine supply-chain risk. The pkgver() function also executes the downloaded binary (./circle -version) before the package() step, meaning arbitrary code from the downloaded tarball runs during the build. This is a real medium-severity concern: not clearly malicious, but a prebuilt binary executed with no integrity check from a host that, while official, could be compromised or subject to MITM.

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: <tjmnkrajyej at gmail dot com>
2pkgname=circle
3pkgver=1.0.0_200
4pkgrel=1
5pkgdesc='a C++ compiler with many novel language features'
6arch=(x86_64)
7url=https://circle-lang.org
8license=(custom)
9depends=('gcc>=10.2')
10source=(https://www.circle-lang.org/linux/build_`curl 'https://www.circle-lang.org/linux/?C=M;O=D' -s | grep -Po '(?<=build_(?!latest)).+?(?=\.tgz)' | head -1`.tgz)
11sha256sums=(SKIP)
12
13prepare() {
14 mkdir -p libedit
15 ln -sf /usr/lib/libedit.so libedit/libedit.so.2
16}
17
18pkgver() {
19 LD_LIBRARY_PATH=libedit ./circle -version | head -1 | grep -Po '(?<=version ).+' | sed 's/-/_/g'
20}
21
22package() {
23 ln -sf /usr/lib/libedit.so
24 install -D libedit.so "$pkgdir/usr/lib/libedit.so.2"
25 install -Dm 755 circle "$pkgdir/usr/bin/circle"
26 install -Dm 664 license.txt "$pkgdir/usr/share/licenses/$pkgname/license.txt"
27}
28

Scan history

Scanned at (UTC)SeverityRules
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

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion