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
Bloom PLM by EmbedLabs
Requirements, controlled documents and traceability
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
plmrequirementsdocumentsverificationtraceabilityproject
Detailed Checklist
packageUrl link is present and well formed when required (7/7)
pass
https://github.com/MbedLabs/bloom
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:8000/api/ready
http://localhost:8000`.
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/bloom @ 166a8353dd3a433bf9e1a49d2c6353acf566e708
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:92 Network-capable command found in a runtime shell script.
scripts/e2e_image_smoke.sh:100 Network-capable command found in a runtime shell script.
scripts/e2e_image_smoke.sh:134 Network-capable command found in a runtime shell script.
scripts/e2e_image_smoke.sh:163 Network-capable command found in a runtime shell script.
scripts/e2e_image_smoke.sh:171 Network-capable command found in a runtime shell script.
scripts/e2e_image_smoke.sh:181 Network-capable command found in a runtime shell script.
scripts/e2e_image_smoke.sh:191 Network-capable command found in a runtime shell script.
scripts/e2e_image_smoke.sh:229 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:109 Privileged command or direct system-path modification detected in startup script.
docker/start.sh:95 Privileged command or direct system-path modification detected in startup script.
Runtime shell scripts avoid credential leakage patterns (0/7)
fail
scripts/e2e_image_smoke.sh:43 Potential credential leakage pattern detected in a shell script.
docker/start.sh:38 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:43
high
Potential credential leakage pattern detected in a shell script.
41DB_PASSWORD="e2e-strong-db-password-not-a-default"42DB_NAME="e2e_bloom"43DATABASE_URL="postgresql+asyncpg://${DB_USER}:${DB_PASSWORD}@${PG}:5432/${DB_NAME}"4445ADMIN_EMAIL="e2e-admin@e2e.example.com"
scripts/e2e_image_smoke.sh:92
medium
Network-capable command found in a runtime shell script.
9091login() {92 curl -fsS -X POST "${BASE}/api/auth/login" \93 -H 'Content-Type: application/json' \94 -d "{\"email\":\"${ADMIN_EMAIL}\",\"password\":\"${ADMIN_PASSWORD}\"}" | json_field access_token
scripts/e2e_image_smoke.sh:100
medium
Network-capable command found in a runtime shell script.
98 local what="$1"99 for _ in $(seq 1 60); do100 if curl -fsS "${BASE}/api/ready" >/dev/null 2>&1; then return 0; fi101 sleep 2102 done
scripts/e2e_image_smoke.sh:109
high
Privileged command or direct system-path modification detected in startup script.
107 # Reuses the named PGVOL so data survives a container recreate.108 docker run -d --name "$PG" --network "$NET" \109 -v "${PGVOL}:/var/lib/postgresql/data" \110 -e "POSTGRES_USER=${DB_USER}" \111 -e "POSTGRES_PASSWORD=${DB_PASSWORD}" \
scripts/e2e_image_smoke.sh:134
medium
Network-capable command found in a runtime shell script.
132133import_reqif() {134 curl -fsS -X POST "${BASE}/api/projects/${project_id}/import/reqif" \135 -H "Authorization: Bearer ${1}" \136 -F "file=@${PADDED};type=application/xml;filename=e2e.reqif"
scripts/e2e_image_smoke.sh:163
medium
Network-capable command found in a runtime shell script.
161162log "/api/health must be liveness-only (never claim database \"connected\")"163health="$(curl -fsS "${BASE}/api/health")"164echo " health = ${health}"165printf '%s' "$health" | grep -q '"connected"' \
scripts/e2e_image_smoke.sh:171
medium
Network-capable command found in a runtime shell script.
169170log "/api/ready must confirm the database"171ready="$(curl -fsS "${BASE}/api/ready")"172echo " ready = ${ready}"173printf '%s' "$ready" | grep -q '"database":"connected"' \
scripts/e2e_image_smoke.sh:181
medium
Network-capable command found in a runtime shell script.
179180log "/api/version must report the released version (${expected_version})"181version="$(curl -fsS "${BASE}/api/version" | json_field version)"182echo " /api/version = ${version}"183[ "$version" = "$expected_version" ] \
scripts/e2e_image_smoke.sh:191
medium
Network-capable command found in a runtime shell script.
189190log "Creating a project (database write)"191project_id="$(curl -fsS -X POST "${BASE}/api/projects" \192 -H "Authorization: Bearer ${token}" \193 -H 'Content-Type: application/json' \
scripts/e2e_image_smoke.sh:229
medium
Network-capable command found in a runtime shell script.
227token="$(login)"228[ -n "$token" ] || fail "admin login failed after recreation (database did not persist)"229project_json="$(curl -fsS "${BASE}/api/projects/${project_id}" -H "Authorization: Bearer ${token}")"230echo " project = ${project_json}"231req_count="$(printf '%s' "$project_json" | json_field requirement_count)"
docker/start.sh:38
high
Potential credential leakage pattern detected in a shell script.
36 set +a3738 DATABASE_URL="$(printf '%s' "$CLOUDRON_POSTGRESQL_URL" | sed 's#^postgres://#postgresql://#')"39 export DATABASE_URL40 export BLOOM_DOTENV_DISABLED=1
docker/start.sh:95
high
Privileged command or direct system-path modification detected in startup script.
93chown "$APP_UID:$APP_GID" "$RUN_DIR/runtime-config.js"9495exec /usr/local/bin/supervisord -c /etc/supervisord.conf96
metadata
high
Insecure HTTP link found: http://localhost:8000/api/ready
metadata
high
Insecure HTTP link found: http://localhost:8000`.
