Automated Analysis != Safety. This is a Developer Transparency Tool.
Inspector

Cloudron community app transparency reports

Inspect a Cloudron community app `CloudronVersions.json` feed. Repository analysis is derived from the package metadata in that feed, and the report stays intentionally conservative: it surfaces what the package appears to do, but it does not certify safety.

What this checks
CHECKS EXPLAINED
Checks Explained
Metadata links and missing fields
Reads the Cloudron feed metadata, checks whether important links are valid, and notes when required fields are missing.
Dockerfile command patterns
Scans Docker build steps for risky commands such as destructive deletes, world-writable permissions, or remote scripts piped into a shell.
Runtime shell network calls
Looks through startup shell scripts for commands like curl, wget, nc, or ssh that may contact remote systems during runtime.
Privilege escalation and credential leakage
Flags startup-script patterns that touch privileged system paths, invoke sudo, or combine secrets with outbound commands.
Feed vs repo version drift
Compares the version published in CloudronVersions.json with the version found in the package repository when that repository can be identified reliably.
  • Metadata links and missing fields
  • Dockerfile command patterns
  • Runtime shell network calls
  • Privilege escalation and credential leakage
  • Feed vs repo version drift
Refresh
Example inputs
https://communityapps.appx.uk/cloudron-notediscovery/CloudronVersions.json
https://raw.githubusercontent.com/BrutalBirdie/cloudron-tachyon-app/refs/heads/master/CloudronVersions.json
https://communityapps.appx.uk/cloudron-ocular/CloudronVersions.json
Generated Report

Bud TMP by EmbedLabs

Automated software, hardware and system testing

Score
43/100
43 reached57 still requires deeper inspection
Automated checks can score at most 70/100. The remaining 30 points require deep inspection.
This tool is for informational purposes only. Use at your own risk.
Safety Flags
3
Fail
2
Unsure
5
Pass
Master Info
Repository
Not available
Packager
EmbedLabs
minBox
10.0.0
Version
1.1.0
Tags
testingautomationsoftwarehardwaresystems
Detailed Checklist
packageUrl link is present and well formed when required (7/7)
pass
https://github.com/MbedLabs/bud
Website link is present and well formed (7/7)
pass
https://embedlabs.net
Metadata and README links avoid insecure HTTP (0/7)
fail
http://localhost:8001/api/ready http://localhost:8001`.
Metadata and README links avoid URL shorteners (7/7)
pass
No shortener links found.
Cloudron feed version matches the repository manifest (7/7)
pass
Feed and repo both report 1.1.0.
Repository content was fetched for static analysis (7/7)
pass
https://github.com/MbedLabs/bud @ e5d0204d7e25f652a747cb2cd64c5b93f13a192b
Dockerfile scan did not detect clearly suspicious commands (4/7)
unsure
Dockerfile:15 System package installation found. Review whether all packages are justified. Dockerfile:37 System package installation found. Review whether all packages are justified.
Runtime shell scripts avoid suspicious outbound network calls (4/7)
unsure
scripts/cloudron_image_smoke.sh:77 Network-capable command found in a runtime shell script. scripts/cloudron_image_smoke.sh:103 Network-capable command found in a runtime shell script. scripts/cloudron_image_smoke.sh:124 Network-capable command found in a runtime shell script. scripts/cloudron_image_smoke.sh:126 Network-capable command found in a runtime shell script. scripts/cloudron_image_smoke.sh:129 Network-capable command found in a runtime shell script. scripts/cloudron_image_smoke.sh:144 Network-capable command found in a runtime shell script. scripts/e2e_image_smoke.sh:89 Network-capable command found in a runtime shell script. scripts/e2e_image_smoke.sh:125 Network-capable command found in a runtime shell script. scripts/e2e_image_smoke.sh:154 Network-capable command found in a runtime shell script. scripts/e2e_image_smoke.sh:162 Network-capable command found in a runtime shell script. scripts/e2e_image_smoke.sh:172 Network-capable command found in a runtime shell script. scripts/e2e_image_smoke.sh:182 Network-capable command found in a runtime shell script. scripts/e2e_image_smoke.sh:189 Network-capable command found in a runtime shell script. scripts/e2e_image_smoke.sh:206 Network-capable command found in a runtime shell script. scripts/e2e_image_smoke.sh:211 Network-capable command found in a runtime shell script.
Runtime shell scripts avoid privilege escalation patterns (0/7)
fail
scripts/cloudron_image_smoke.sh:112 Privileged command or direct system-path modification detected in startup script. scripts/e2e_image_smoke.sh:98 Privileged command or direct system-path modification detected in startup script. docker/start.sh:93 Privileged command or direct system-path modification detected in startup script.
Runtime shell scripts avoid credential leakage patterns (0/7)
fail
docker/start.sh:37 Potential credential leakage pattern detected in a shell script.
Raw Findings
Flagged lines are highlighted directly in the code snippet.
23 findings
Dockerfile:15
low
System package installation found. Review whether all packages are justified.
13WORKDIR /build
14
15RUN apt-get update && apt-get install -y --no-install-recommends \
16 gcc \
17 libpq-dev \
Dockerfile:37
low
System package installation found. Review whether all packages are justified.
35WORKDIR /app
36
37RUN apt-get update && apt-get install -y --no-install-recommends \
38 ca-certificates \
39 curl \
scripts/cloudron_image_smoke.sh:77
medium
Network-capable command found in a runtime shell script.
75wait_for_app() {
76 for _ in $(seq 1 60); do
77 curl -fsS "${BASE}/api/ready" >/dev/null 2>&1 && return 0
78 [ "$(docker inspect -f '{{.State.Running}}' "$APP" 2>/dev/null || true)" = true ] \
79 || fail "normal image exited under Cloudron constraints"
scripts/cloudron_image_smoke.sh:103
medium
Network-capable command found in a runtime shell script.
101
102login() {
103 curl -fsS -X POST "${BASE}/api/auth/login" \
104 -H 'Content-Type: application/json' \
105 -d "{\"email\":\"${ADMIN_EMAIL}\",\"password\":\"${ADMIN_PASSWORD}\"}" \
scripts/cloudron_image_smoke.sh:112
high
Privileged command or direct system-path modification detected in startup script.
110docker network create "$NET" >/dev/null
111docker run -d --name "$PG" --network "$NET" \
112 -v "${PGVOL}:/var/lib/postgresql/data" \
113 -e "POSTGRES_USER=${DB_USER}" \
114 -e "POSTGRES_PASSWORD=${DB_PASSWORD}" \
scripts/cloudron_image_smoke.sh:124
medium
Network-capable command found in a runtime shell script.
122
123log "Checking first-run setup and runtime peer link"
124[ "$(curl -fsS "${BASE}/api/setup/status" | json_field setup_required)" = True ] \
125 || fail "fresh Cloudron instance did not require setup"
126curl -fsS "${BASE}/runtime-config.js" | grep -F "$PEER_URL" >/dev/null \
scripts/cloudron_image_smoke.sh:126
medium
Network-capable command found in a runtime shell script.
124[ "$(curl -fsS "${BASE}/api/setup/status" | json_field setup_required)" = True ] \
125 || fail "fresh Cloudron instance did not require setup"
126curl -fsS "${BASE}/runtime-config.js" | grep -F "$PEER_URL" >/dev/null \
127 || fail "runtime-config.js did not contain ${PEER_ENV}"
128
scripts/cloudron_image_smoke.sh:129
medium
Network-capable command found in a runtime shell script.
127 || fail "runtime-config.js did not contain ${PEER_ENV}"
128
129curl -fsS -X POST "${BASE}/api/setup" \
130 -H 'Content-Type: application/json' \
131 -d "{\"email\":\"${ADMIN_EMAIL}\",\"password\":\"${ADMIN_PASSWORD}\",\"full_name\":\"Cloudron Owner\"}" \
scripts/cloudron_image_smoke.sh:144
medium
Network-capable command found in a runtime shell script.
142start_app
143wait_for_app
144[ "$(curl -fsS "${BASE}/api/setup/status" | json_field setup_required)" = False ] \
145 || fail "setup reopened after container recreation"
146[ -n "$(login)" ] || fail "administrator login did not survive recreation"
scripts/e2e_image_smoke.sh:89
medium
Network-capable command found in a runtime shell script.
87 local what="$1"
88 for _ in $(seq 1 60); do
89 if curl -fsS "${BASE}/api/ready" >/dev/null 2>&1; then return 0; fi
90 sleep 2
91 done
scripts/e2e_image_smoke.sh:98
high
Privileged command or direct system-path modification detected in startup script.
96 # Reuses the named PGVOL so data survives a container recreate.
97 docker run -d --name "$PG" --network "$NET" \
98 -v "${PGVOL}:/var/lib/postgresql/data" \
99 -e "POSTGRES_USER=${DB_USER}" \
100 -e "POSTGRES_PASSWORD=${DB_PASSWORD}" \
scripts/e2e_image_smoke.sh:125
medium
Network-capable command found in a runtime shell script.
123
124login_token() {
125 curl -fsS -X POST "${BASE}/api/auth/login" \
126 -H 'Content-Type: application/json' \
127 -d "{\"email\":\"${ADMIN_EMAIL}\",\"password\":\"${ADMIN_PASSWORD}\"}" | json_field access_token
scripts/e2e_image_smoke.sh:154
medium
Network-capable command found in a runtime shell script.
152
153log "/api/health must be liveness-only (never claim database \"connected\")"
154health="$(curl -fsS "${BASE}/api/health")"
155echo " health = ${health}"
156printf '%s' "$health" | grep -q '"connected"' \
scripts/e2e_image_smoke.sh:162
medium
Network-capable command found in a runtime shell script.
160
161log "/api/ready must confirm the database"
162ready="$(curl -fsS "${BASE}/api/ready")"
163echo " ready = ${ready}"
164printf '%s' "$ready" | grep -q '"database":"connected"' \
scripts/e2e_image_smoke.sh:172
medium
Network-capable command found in a runtime shell script.
170
171log "/api/version must report the released version (${expected_version})"
172version="$(curl -fsS "${BASE}/api/version" | json_field version)"
173echo " /api/version = ${version}"
174[ "$version" = "$expected_version" ] \
scripts/e2e_image_smoke.sh:182
medium
Network-capable command found in a runtime shell script.
180
181log "Database-backed API call (list products)"
182curl -fsS "${BASE}/api/products" -H "Authorization: Bearer ${token}" >/dev/null \
183 || fail "authenticated products listing failed"
184
scripts/e2e_image_smoke.sh:189
medium
Network-capable command found in a runtime shell script.
187head -c 2097152 /dev/zero | tr '\0' 'A' > "$upload_file" # 2 MiB, well over nginx's 1 MB default
188upload_sha="$(sha256sum "$upload_file" | awk '{print $1}')"
189artifact_id="$(curl -fsS -X POST "${BASE}/api/uploads" \
190 -H "Authorization: Bearer ${token}" \
191 -F "file=@${upload_file};type=text/plain;filename=e2e.txt" | json_field id)"
scripts/e2e_image_smoke.sh:206
medium
Network-capable command found in a runtime shell script.
204token="$(login_token)"
205[ -n "$token" ] || fail "admin login failed after recreation (database did not persist)"
206curl -fsS "${BASE}/api/uploads/info/${artifact_id}" -H "Authorization: Bearer ${token}" >/dev/null \
207 || fail "artifact ${artifact_id} row did not persist across recreation"
208
scripts/e2e_image_smoke.sh:211
medium
Network-capable command found in a runtime shell script.
209log "Downloading the artifact and verifying its bytes + SHA-256"
210downloaded="$(mktemp)"
211curl -fsS "${BASE}/api/uploads/${artifact_id}" -H "Authorization: Bearer ${token}" -o "$downloaded" \
212 || fail "artifact ${artifact_id} bytes did not persist across recreation"
213download_sha="$(sha256sum "$downloaded" | awk '{print $1}')"
docker/start.sh:37
high
Potential credential leakage pattern detected in a shell script.
35 set +a
36
37 DATABASE_URL="$(printf '%s' "$CLOUDRON_POSTGRESQL_URL" | sed 's#^postgres://#postgresql://#')"
38 export DATABASE_URL
39
docker/start.sh:93
high
Privileged command or direct system-path modification detected in startup script.
91chown "$APP_UID:$APP_GID" "$RUN_DIR/runtime-config.js"
92
93exec /usr/local/bin/supervisord -c /etc/supervisord.conf
94
metadata
high
Insecure HTTP link found: http://localhost:8001/api/ready
metadata
high
Insecure HTTP link found: http://localhost:8001`.
0.0.9