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
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
packageUrl
Website link
Repository
Not available
Packager
EmbedLabs
packagerUrl
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 /build1415RUN 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 /app3637RUN 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); do77 curl -fsS "${BASE}/api/ready" >/dev/null 2>&1 && return 078 [ "$(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.
101102login() {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/null111docker 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.
122123log "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}"128129curl -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_app143wait_for_app144[ "$(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); do89 if curl -fsS "${BASE}/api/ready" >/dev/null 2>&1; then return 0; fi90 sleep 291 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.
123124login_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.
152153log "/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.
160161log "/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.
170171log "/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.
180181log "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 default188upload_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 +a3637 DATABASE_URL="$(printf '%s' "$CLOUDRON_POSTGRESQL_URL" | sed 's#^postgres://#postgresql://#')"38 export DATABASE_URL39
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"9293exec /usr/local/bin/supervisord -c /etc/supervisord.conf94
metadata
high
Insecure HTTP link found: http://localhost:8001/api/ready
metadata
high
Insecure HTTP link found: http://localhost:8001`.
