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

Langfuse

Open-source LLM observability, tracing, evals and prompt management

Score
60/100
60 reached40 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
1
Fail
1
Unsure
8
Pass
Master Info
packageUrl
Not available
Repository
Not available
Packager
OrcVole
minBox
9.1.0
Version
0.9.0
Tags
notesproject
Detailed Checklist
packageUrl link is present and well formed when required (7/7)
pass
No `packageUrl` declared. This is valid for packages targeting minBoxVersion below 10.
Website link is present and well formed (7/7)
pass
https://langfuse.com
Metadata and README links avoid insecure HTTP (7/7)
pass
No HTTP links found.
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 0.9.0.
Repository content was fetched for static analysis (7/7)
pass
https://github.com/OrcVole/langfuse-cloudron @ aac9b4ae7662565dba3eeba9bdea3c6d073c885b
Dockerfile scan did not detect clearly suspicious commands (7/7)
pass
No Dockerfile red flags found.
Runtime shell scripts avoid suspicious outbound network calls (4/7)
unsure
test/backup-restore.sh:48 Network-capable command found in a runtime shell script. test/backup-restore.sh:65 Network-capable command found in a runtime shell script. test/backup-restore.sh:71 Network-capable command found in a runtime shell script. test/backup-restore.sh:110 Network-capable command found in a runtime shell script. test/gate2.sh:18 Network-capable command found in a runtime shell script. test/gate2.sh:22 Network-capable command found in a runtime shell script. test/gate2.sh:28 Network-capable command found in a runtime shell script. test/gate2.sh:46 Network-capable command found in a runtime shell script. test/gate2.sh:71 Network-capable command found in a runtime shell script. test/gate2.sh:76 Network-capable command found in a runtime shell script. test/ingest.sh:33 Network-capable command found in a runtime shell script. test/ingest.sh:36 Network-capable command found in a runtime shell script. test/ingest.sh:40 Network-capable command found in a runtime shell script. test/ingest.sh:47 Network-capable command found in a runtime shell script. test/ingest.sh:52 Network-capable command found in a runtime shell script. test/secret-scan.sh:227 Network-capable command found in a runtime shell script. test/secret-scan.sh:228 Network-capable command found in a runtime shell script. test/secret-scan.sh:229 Network-capable command found in a runtime shell script. test/secret-scan.sh:232 Network-capable command found in a runtime shell script. test/secret-scan.sh:243 Network-capable command found in a runtime shell script. test/secret-scan.sh:248 Network-capable command found in a runtime shell script. test/smoke.sh:58 Network-capable command found in a runtime shell script. test/smoke.sh:94 Network-capable command found in a runtime shell script. conf/cleanup-legacy-stores.sh:26 Network-capable command found in a runtime shell script. conf/restore-clickhouse.sh:92 Network-capable command found in a runtime shell script. conf/run-web.sh:27 Network-capable command found in a runtime shell script. conf/run-web.sh:28 Network-capable command found in a runtime shell script. conf/run-worker.sh:21 Network-capable command found in a runtime shell script. conf/run-worker.sh:22 Network-capable command found in a runtime shell script.
Runtime shell scripts avoid privilege escalation patterns (0/7)
fail
start.sh:24 Privileged command or direct system-path modification detected in startup script. start.sh:25 Privileged command or direct system-path modification detected in startup script. start.sh:239 Privileged command or direct system-path modification detected in startup script. test/backup-restore.sh:35 Privileged command or direct system-path modification detected in startup script. test/backup-restore.sh:79 Privileged command or direct system-path modification detected in startup script. test/ingest.sh:23 Privileged command or direct system-path modification detected in startup script. test/ingest.sh:54 Privileged command or direct system-path modification detected in startup script. test/ingest.sh:60 Privileged command or direct system-path modification detected in startup script. test/ingest.sh:61 Privileged command or direct system-path modification detected in startup script. test/migration.sh:49 Privileged command or direct system-path modification detected in startup script. test/migration.sh:50 Privileged command or direct system-path modification detected in startup script. test/secret-scan.sh:156 Privileged command or direct system-path modification detected in startup script. test/secret-scan.sh:227 Privileged command or direct system-path modification detected in startup script. test/secret-scan.sh:228 Privileged command or direct system-path modification detected in startup script. test/secret-scan.sh:229 Privileged command or direct system-path modification detected in startup script. test/secret-scan.sh:232 Privileged command or direct system-path modification detected in startup script. test/secret-scan.sh:257 Privileged command or direct system-path modification detected in startup script. test/smoke.sh:64 Privileged command or direct system-path modification detected in startup script. conf/backup-clickhouse.sh:25 Privileged command or direct system-path modification detected in startup script. conf/backup-clickhouse.sh:26 Privileged command or direct system-path modification detected in startup script. conf/backup-clickhouse.sh:30 Privileged command or direct system-path modification detected in startup script. conf/cleanup-legacy-stores.sh:18 Privileged command or direct system-path modification detected in startup script. conf/migrate-stores.sh:150 Privileged command or direct system-path modification detected in startup script. conf/migrate-stores.sh:152 Privileged command or direct system-path modification detected in startup script. conf/restore-clickhouse.sh:22 Privileged command or direct system-path modification detected in startup script. conf/restore-clickhouse.sh:23 Privileged command or direct system-path modification detected in startup script. conf/restore-clickhouse.sh:85 Privileged command or direct system-path modification detected in startup script.
Runtime shell scripts avoid credential leakage patterns (7/7)
pass
No credential leakage patterns found in scanned shell scripts.
Raw Findings
Flagged lines are highlighted directly in the code snippet.
56 findings
start.sh:24
high
Privileged command or direct system-path modification detected in startup script.
22# paths, so they are migrated (ADR 0008) and only then deleted, once the app is proven healthy.
23# ------------------------------------------------------------------------------------------------
24CH_STORE=/var/lib/clickhouse
25MINIO_STORE=/var/lib/minio
26# CRITICAL ORDERING: nothing may create anything INSIDE either persistentDir before the boot legs in
start.sh:25
high
Privileged command or direct system-path modification detected in startup script.
23# ------------------------------------------------------------------------------------------------
24CH_STORE=/var/lib/clickhouse
25MINIO_STORE=/var/lib/minio
26# CRITICAL ORDERING: nothing may create anything INSIDE either persistentDir before the boot legs in
27# section 2b have run. Both the migration guard and the leg-3 rebuild decide what to do by asking
start.sh:239
high
Privileged command or direct system-path modification detected in startup script.
237"${CODE}/conf/cleanup-legacy-stores.sh" &
238
239exec supervisord -c /etc/supervisor/supervisord.conf
240
test/backup-restore.sh:35
high
Privileged command or direct system-path modification detected in startup script.
33start_app(){ # $1 = container name, $2 = ch volume, $3 = minio volume, $4 = host port
34 $ENGINE run -d --name "$1" --network $NET -p "$4":3000 \
35 -v $VOL:/app/data -v "$2":/var/lib/clickhouse -v "$3":/var/lib/minio \
36 -e CLOUDRON=1 -e CLOUDRON_POSTGRESQL_URL="postgresql://langfuse:${PGPASS}@${PG}:5432/langfuse" \
37 -e CLOUDRON_REDIS_HOST=$RD -e CLOUDRON_REDIS_PORT=6379 -e CLOUDRON_REDIS_PASSWORD="$RPASS" \
test/backup-restore.sh:48
medium
Network-capable command found in a runtime shell script.
46wait_health(){ # $1 = host port, $2 = seconds
47 local i; for i in $(seq 1 "$2"); do
48 [ "$(curl -s -o /dev/null -w '%{http_code}' "http://localhost:$1/api/public/health")" = 200 ] && return 0
49 sleep 3
50 done; return 1
test/backup-restore.sh:65
medium
Network-capable command found in a runtime shell script.
63TID="trace-clone-$(date +%s)"
64for n in 1 2 3 4 5; do
65 curl -s -o /dev/null -X POST http://localhost:3000/api/public/ingestion \
66 -H "Authorization: Basic $AUTH" -H "Content-Type: application/json" \
67 -d "{\"batch\":[{\"id\":\"ev-$n\",\"type\":\"trace-create\",\"timestamp\":\"2026-06-26T12:00:0$n.000Z\",\"body\":{\"id\":\"$TID-$n\",\"name\":\"clone-trace\",\"userId\":\"u1\"}}]}"
test/backup-restore.sh:71
medium
Network-capable command found in a runtime shell script.
69seen=0
70for i in $(seq 1 30); do
71 curl -s -H "Authorization: Basic $AUTH" "http://localhost:3000/api/public/traces?limit=50" | grep -q "$TID-5" && { seen=1; break; }
72 sleep 2
73done
test/backup-restore.sh:79
high
Privileged command or direct system-path modification detected in startup script.
77case_ "2. backupCommand runs in a separate container while the app is LIVE"
78# This is the flock condition: the running server holds <store>/status throughout.
79BOUT=$($ENGINE run --rm -v $VOL:/app/data -v $CHVOL:/var/lib/clickhouse -v $MVOL:/var/lib/minio \
80 "$IMAGE" /app/code/conf/backup-clickhouse.sh 2>&1)
81brc=$?
test/backup-restore.sh:110
medium
Network-capable command found in a runtime shell script.
108# on a base table would pass even when allow_different_table_def has re-normalised a view's dictionary
109# reference and the aggregates are wrong.
110got=$(curl -s -H "Authorization: Basic $AUTH" "http://localhost:3001/api/public/traces?limit=50")
111printf '%s' "$got" | grep -q "$TID-5" && ok "trace 5 readable from the clone via /api/public/traces" || bad "trace 5 missing from the clone"
112n=$(printf '%s' "$got" | grep -o "$TID-" | wc -l)
test/gate2.sh:18
medium
Network-capable command found in a runtime shell script.
16
17# --- A. version actually serving -------------------------------------------------------------
18V=$(curl -s "$H/api/public/health" | jq -r '.version // empty' 2>/dev/null)
19note "health reports version: ${V:-<none>}"
20
test/gate2.sh:22
medium
Network-capable command found in a runtime shell script.
20
21# --- B. data preservation: trace count (the thing an update must never change) ----------------
22CNT=$(curl -s -H "Authorization: Basic $AUTH" "$H/api/public/traces?limit=1" | jq -r '.meta.totalItems // empty')
23if [ -n "$CNT" ]; then ok "traces API reachable, totalItems=${CNT}"; else bad "traces API gave no totalItems"; fi
24echo "TRACE_COUNT=${CNT}" > "/tmp/gate2-${LEG}.count"
test/gate2.sh:28
medium
Network-capable command found in a runtime shell script.
26# --- 1. signup route rejects non-POST with 405 (upstream fix #15670) --------------------------
27# 4.2.0: `return;` with no response. 4.3.0: 405 + {"message":"Method not allowed"}
28SC=$(curl -s -o /tmp/gate2-su.json -w '%{http_code}' -X GET "$H/api/auth/signup" --max-time 20)
29MSG=$(jq -r '.message // empty' /tmp/gate2-su.json 2>/dev/null)
30if [ "$LEG" = after ]; then
test/gate2.sh:46
medium
Network-capable command found in a runtime shell script.
44found=""; page=1
45while [ "$page" -le 20 ]; do
46 PJ=$(curl -sf -H "Authorization: Basic $AUTH" "$H/api/public/models?limit=100&page=${page}" 2>/dev/null) || break
47 n=$(echo "$PJ" | jq '.data | length' 2>/dev/null); [ "${n:-0}" -eq 0 ] && break
48 hit=$(echo "$PJ" | jq -c --arg m "$MODEL" '[.data[]|select(.modelName==$m)][0] // empty' 2>/dev/null)
test/gate2.sh:71
medium
Network-capable command found in a runtime shell script.
69Q='{"view":"observations","metrics":[{"measure":"count","aggregation":"count"}],"dimensions":[{"field":"isRootObservation"}],"fromTimestamp":"2020-01-01T00:00:00Z","toTimestamp":"2030-01-01T00:00:00Z"}'
70QE=$(python3 -c 'import urllib.parse,sys;print(urllib.parse.quote(sys.argv[1]))' "$Q")
71S1=$(curl -s -o /dev/null -w '%{http_code}' -H "Authorization: Basic $AUTH" "$H/api/public/metrics?query=$QE" --max-time 30)
72# fail-lever: the same request with a KNOWN-GOOD dimension must succeed, proving the 400 is
73# specific to the new field and not just a broken endpoint.
test/gate2.sh:76
medium
Network-capable command found in a runtime shell script.
74Q2=${Q//isRootObservation/name}
75QE2=$(python3 -c 'import urllib.parse,sys;print(urllib.parse.quote(sys.argv[1]))' "$Q2")
76S2=$(curl -s -o /dev/null -w '%{http_code}' -H "Authorization: Basic $AUTH" "$H/api/public/metrics?query=$QE2" --max-time 30)
77if [ "$S1" = 400 ] && [ "$S2" = 200 ]; then
78 ok "v1 metrics rejects isRootObservation (400) but accepts name (200) — containment holds"
test/ingest.sh:23
high
Privileged command or direct system-path modification detected in startup script.
21sleep 6
22$ENGINE run -d --name $APP --network $NET -p 3000:3000 -v $VOL:/app/data \
23 -v $CHVOL:/var/lib/clickhouse -v $MVOL:/var/lib/minio \
24 -e CLOUDRON=1 -e CLOUDRON_POSTGRESQL_URL="postgresql://langfuse:${PGPASS}@${PG}:5432/langfuse" \
25 -e CLOUDRON_REDIS_HOST=$RD -e CLOUDRON_REDIS_PORT=6379 -e CLOUDRON_REDIS_PASSWORD="$RPASS" \
test/ingest.sh:33
medium
Network-capable command found in a runtime shell script.
31 -e LANGFUSE_INGESTION_QUEUE_DELAY_MS=0 -e LANGFUSE_INGESTION_CLICKHOUSE_WRITE_INTERVAL_MS=1000 \
32 "$IMAGE" >/dev/null
33for i in $(seq 1 90); do [ "$(curl -s -o /dev/null -w '%{http_code}' http://localhost:3000/api/public/health)" = 200 ] && break; sleep 3; done
34
35AUTH=$(printf '%s:%s' "$PK" "$SK" | base64 -w0)
test/ingest.sh:36
medium
Network-capable command found in a runtime shell script.
34
35AUTH=$(printf '%s:%s' "$PK" "$SK" | base64 -w0)
36curl -s -H "Authorization: Basic $AUTH" http://localhost:3000/api/public/projects | grep -q testproj \
37 && ok "API key authenticates; project provisioned" || bad "API-key auth / project init failed"
38
test/ingest.sh:40
medium
Network-capable command found in a runtime shell script.
38
39TID="trace-$(date +%s)-abc"
40code=$(curl -s -o /tmp/lf-ing.json -w '%{http_code}' -X POST http://localhost:3000/api/public/ingestion \
41 -H "Authorization: Basic $AUTH" -H "Content-Type: application/json" \
42 -d "{\"batch\":[{\"id\":\"ev-1\",\"type\":\"trace-create\",\"timestamp\":\"2026-06-26T12:00:00.000Z\",\"body\":{\"id\":\"$TID\",\"name\":\"smoke-trace\",\"userId\":\"u1\"}}]}")
test/ingest.sh:47
medium
Network-capable command found in a runtime shell script.
45seen=0
46for i in $(seq 1 30); do
47 curl -s -H "Authorization: Basic $AUTH" "http://localhost:3000/api/public/traces?limit=10" | grep -q "$TID" && { seen=1; break; }
48 sleep 2
49done
test/ingest.sh:52
medium
Network-capable command found in a runtime shell script.
50[ "$seen" = 1 ] && ok "trace read back via public API (web->redis->worker->ClickHouse)" || bad "trace not visible after 60s"
51
52ch=$($ENGINE exec $APP sh -c '. /app/data/.secrets/secrets.env; curl -s "http://localhost:8123/?user=clickhouse&password=${CLICKHOUSE_PASSWORD}" --data-binary "SELECT count() FROM traces"' 2>/dev/null)
53{ [ -n "$ch" ] && [ "$ch" -ge 1 ] 2>/dev/null; } && ok "ClickHouse has >=1 trace row ($ch)" || bad "ClickHouse trace count=$ch"
54ev=$($ENGINE exec $APP sh -c 'find /var/lib/minio/langfuse/events -type f 2>/dev/null | wc -l')
test/ingest.sh:54
high
Privileged command or direct system-path modification detected in startup script.
52ch=$($ENGINE exec $APP sh -c '. /app/data/.secrets/secrets.env; curl -s "http://localhost:8123/?user=clickhouse&password=${CLICKHOUSE_PASSWORD}" --data-binary "SELECT count() FROM traces"' 2>/dev/null)
53{ [ -n "$ch" ] && [ "$ch" -ge 1 ] 2>/dev/null; } && ok "ClickHouse has >=1 trace row ($ch)" || bad "ClickHouse trace count=$ch"
54ev=$($ENGINE exec $APP sh -c 'find /var/lib/minio/langfuse/events -type f 2>/dev/null | wc -l')
55[ "${ev:-0}" -ge 1 ] && ok "event object written to bundled MinIO ($ev)" || bad "no event objects in MinIO"
56
test/ingest.sh:60
high
Privileged command or direct system-path modification detected in startup script.
58[ "${stray:-0}" = 0 ] && ok "no churning store left inside the backed-up /app/data" \
59 || bad "something is still under /app/data/{clickhouse,minio} ($stray entries) — the syncer race is not fixed"
60chp=$($ENGINE exec $APP sh -c 'ls -d /var/lib/clickhouse/store >/dev/null 2>&1 && echo yes || echo no')
61[ "$chp" = yes ] && ok "ClickHouse store is on its persistentDir" || bad "ClickHouse store not at /var/lib/clickhouse"
62
test/ingest.sh:61
high
Privileged command or direct system-path modification detected in startup script.
59 || bad "something is still under /app/data/{clickhouse,minio} ($stray entries) — the syncer race is not fixed"
60chp=$($ENGINE exec $APP sh -c 'ls -d /var/lib/clickhouse/store >/dev/null 2>&1 && echo yes || echo no')
61[ "$chp" = yes ] && ok "ClickHouse store is on its persistentDir" || bad "ClickHouse store not at /var/lib/clickhouse"
62
63echo "=== ingest result: $fails failure(s) ==="
test/migration.sh:49
high
Privileged command or direct system-path modification detected in startup script.
47 "${ENGINE}" run --rm --user root \
48 -v "$1:/app/data:Z" \
49 -v "$2/clickhouse:/var/lib/clickhouse:Z" \
50 -v "$2/minio:/var/lib/minio:Z" \
51 "${IMAGE}" /app/code/conf/migrate-stores.sh 2>&1
test/migration.sh:50
high
Privileged command or direct system-path modification detected in startup script.
48 -v "$1:/app/data:Z" \
49 -v "$2/clickhouse:/var/lib/clickhouse:Z" \
50 -v "$2/minio:/var/lib/minio:Z" \
51 "${IMAGE}" /app/code/conf/migrate-stores.sh 2>&1
52}
test/secret-scan.sh:156
high
Privileged command or direct system-path modification detected in startup script.
154 # it does not ship is simply absent. Only then are the container-side hits for these exact paths
155 # dropped, and only for these exact paths, in the same spirit as the pinned SSH keys below.
156 RUNTIME_PATHS=(/etc/hosts /etc/resolv.conf /etc/hostname)
157 RUNFLAGS=(--network=none) # no DNS/hosts wiring either engine can avoid
158 [[ "$CRI" == *podman* ]] && RUNFLAGS+=(--no-hosts) # podman only; docker always injects
test/secret-scan.sh:227
high
Privileged command or direct system-path modification detected in startup script.
225 # hashes whenever the base image digest changes.
226 declare -A PINNED_SSH=(
227 [/etc/ssh/ssh_host_ecdsa_key]=677458f83d985da3fd7cdd208e90e4eac09da5be205425a5f96a6242dc985c33
228 [/etc/ssh/ssh_host_ed25519_key]=0c575ce8d9ba487b05cc473fad4b0650fb950181028e6ac19796f86f56f22a7a
229 [/etc/ssh/ssh_host_rsa_key]=ae0ea8087e90baf138d277ca52b6cf47b5010adc0e5bd84236713eee1b85de85
test/secret-scan.sh:227
medium
Network-capable command found in a runtime shell script.
225 # hashes whenever the base image digest changes.
226 declare -A PINNED_SSH=(
227 [/etc/ssh/ssh_host_ecdsa_key]=677458f83d985da3fd7cdd208e90e4eac09da5be205425a5f96a6242dc985c33
228 [/etc/ssh/ssh_host_ed25519_key]=0c575ce8d9ba487b05cc473fad4b0650fb950181028e6ac19796f86f56f22a7a
229 [/etc/ssh/ssh_host_rsa_key]=ae0ea8087e90baf138d277ca52b6cf47b5010adc0e5bd84236713eee1b85de85
test/secret-scan.sh:228
high
Privileged command or direct system-path modification detected in startup script.
226 declare -A PINNED_SSH=(
227 [/etc/ssh/ssh_host_ecdsa_key]=677458f83d985da3fd7cdd208e90e4eac09da5be205425a5f96a6242dc985c33
228 [/etc/ssh/ssh_host_ed25519_key]=0c575ce8d9ba487b05cc473fad4b0650fb950181028e6ac19796f86f56f22a7a
229 [/etc/ssh/ssh_host_rsa_key]=ae0ea8087e90baf138d277ca52b6cf47b5010adc0e5bd84236713eee1b85de85
230 )
test/secret-scan.sh:228
medium
Network-capable command found in a runtime shell script.
226 declare -A PINNED_SSH=(
227 [/etc/ssh/ssh_host_ecdsa_key]=677458f83d985da3fd7cdd208e90e4eac09da5be205425a5f96a6242dc985c33
228 [/etc/ssh/ssh_host_ed25519_key]=0c575ce8d9ba487b05cc473fad4b0650fb950181028e6ac19796f86f56f22a7a
229 [/etc/ssh/ssh_host_rsa_key]=ae0ea8087e90baf138d277ca52b6cf47b5010adc0e5bd84236713eee1b85de85
230 )
test/secret-scan.sh:229
high
Privileged command or direct system-path modification detected in startup script.
227 [/etc/ssh/ssh_host_ecdsa_key]=677458f83d985da3fd7cdd208e90e4eac09da5be205425a5f96a6242dc985c33
228 [/etc/ssh/ssh_host_ed25519_key]=0c575ce8d9ba487b05cc473fad4b0650fb950181028e6ac19796f86f56f22a7a
229 [/etc/ssh/ssh_host_rsa_key]=ae0ea8087e90baf138d277ca52b6cf47b5010adc0e5bd84236713eee1b85de85
230 )
231 ssh_listing="$("$CRI" run --rm --user 0 "${RUNFLAGS[@]}" --entrypoint /bin/bash "$IMAGE" \
test/secret-scan.sh:229
medium
Network-capable command found in a runtime shell script.
227 [/etc/ssh/ssh_host_ecdsa_key]=677458f83d985da3fd7cdd208e90e4eac09da5be205425a5f96a6242dc985c33
228 [/etc/ssh/ssh_host_ed25519_key]=0c575ce8d9ba487b05cc473fad4b0650fb950181028e6ac19796f86f56f22a7a
229 [/etc/ssh/ssh_host_rsa_key]=ae0ea8087e90baf138d277ca52b6cf47b5010adc0e5bd84236713eee1b85de85
230 )
231 ssh_listing="$("$CRI" run --rm --user 0 "${RUNFLAGS[@]}" --entrypoint /bin/bash "$IMAGE" \
test/secret-scan.sh:232
high
Privileged command or direct system-path modification detected in startup script.
230 )
231 ssh_listing="$("$CRI" run --rm --user 0 "${RUNFLAGS[@]}" --entrypoint /bin/bash "$IMAGE" \
232 -c 'for f in /etc/ssh/ssh_host_*_key; do [ -e "$f" ] && sha256sum "$f"; done' 2>/dev/null)"
233 found=0; pinned_ok=0
234 while IFS= read -r line; do
test/secret-scan.sh:232
medium
Network-capable command found in a runtime shell script.
230 )
231 ssh_listing="$("$CRI" run --rm --user 0 "${RUNFLAGS[@]}" --entrypoint /bin/bash "$IMAGE" \
232 -c 'for f in /etc/ssh/ssh_host_*_key; do [ -e "$f" ] && sha256sum "$f"; done' 2>/dev/null)"
233 found=0; pinned_ok=0
234 while IFS= read -r line; do
test/secret-scan.sh:243
medium
Network-capable command found in a runtime shell script.
241 shp="$(printf '%s\n' "$shp" | grep -vF "$f:" || true)" # drop ONLY this verified exact path
242 else
243 emit ssh-key "$f sha256=$h is NOT a pinned base host key (new, changed or extra: treat as a leak)"
244 fi
245 done <<< "$ssh_listing"
test/secret-scan.sh:248
medium
Network-capable command found in a runtime shell script.
246 echo " host keys: $found found, $pinned_ok pinned-ok, ${#PINNED_SSH[@]} expected"
247 [[ "$found" -eq "${#PINNED_SSH[@]}" && "$pinned_ok" -eq "${#PINNED_SSH[@]}" ]] \
248 || emit ssh-key "host key count mismatch: $found found, $pinned_ok pinned-ok, ${#PINNED_SSH[@]} expected"
249
250 # DISTRO-GENERATED PLACEHOLDER KEYS. Some Debian packages mint a self-signed key in their
test/secret-scan.sh:257
high
Privileged command or direct system-path modification detected in startup script.
255 # Nothing else is exempt: a key at any other path is still a finding, including a second key in
256 # the same directory. Add a path here only after confirming the package does not reference it.
257 PLACEHOLDER_KEYS=(/etc/ssl/private/ssl-cert-snakeoil.key /etc/prosody/certs/localhost.key)
258 for k in "${PLACEHOLDER_KEYS[@]}"; do
259 if printf '%s' "$shp" | grep -qF "$k:"; then
test/smoke.sh:58
medium
Network-capable command found in a runtime shell script.
56hc=0
57for i in $(seq 1 90); do
58 [ "$(curl -s -o /dev/null -w '%{http_code}' http://localhost:3000/api/public/health 2>/dev/null)" = "200" ] && { hc=1; break; }
59 sleep 3
60done
test/smoke.sh:64
high
Privileged command or direct system-path modification detected in startup script.
62
63# 2. all four services RUNNING
64st=$($ENGINE exec $APP supervisorctl -c /etc/supervisor/supervisord.conf status 2>/dev/null)
65for svc in clickhouse minio web worker; do echo "$st" | grep -qE "^${svc}\s+RUNNING" && ok "service ${svc} RUNNING" || bad "service ${svc} not RUNNING"; done
66
test/smoke.sh:94
medium
Network-capable command found in a runtime shell script.
92
93# 6. ClickHouse UTC
94tz=$($ENGINE exec $APP sh -c '. /app/data/.secrets/secrets.env; curl -s "http://localhost:8123/?user=clickhouse&password=${CLICKHOUSE_PASSWORD}" --data-binary "SELECT timezone()"' 2>/dev/null)
95[ "$tz" = "UTC" ] && ok "ClickHouse timezone is UTC" || bad "ClickHouse timezone='$tz' (want UTC)"
96
conf/backup-clickhouse.sh:25
high
Privileged command or direct system-path modification detected in startup script.
23set -euo pipefail
24
25CH_STORE=/var/lib/clickhouse
26MINIO_STORE=/var/lib/minio
27DUMP=/app/data/clickhouse-backup
conf/backup-clickhouse.sh:26
high
Privileged command or direct system-path modification detected in startup script.
24
25CH_STORE=/var/lib/clickhouse
26MINIO_STORE=/var/lib/minio
27DUMP=/app/data/clickhouse-backup
28MDUMP=/app/data/minio-backup
conf/backup-clickhouse.sh:30
high
Privileged command or direct system-path modification detected in startup script.
28MDUMP=/app/data/minio-backup
29SNAP=/app/data/.clickhouse-snapshot # transient: built and removed within this command
30CONF=/etc/clickhouse-server/backups.xml
31STATUS=/app/data/.last-backup.log
32
conf/cleanup-legacy-stores.sh:18
high
Privileged command or direct system-path modification detected in startup script.
16
17declare -a PENDING=()
18for dst in /var/lib/clickhouse /var/lib/minio; do
19 [ -e "${dst}/.migration-cleanup-pending" ] && PENDING+=( "${dst}" )
20done
conf/cleanup-legacy-stores.sh:26
medium
Network-capable command found in a runtime shell script.
24
25waited=0
26until curl -sf --max-time 5 "${HEALTH_URL}" >/dev/null 2>&1; do
27 sleep 10
28 waited=$(( waited + 10 ))
conf/migrate-stores.sh:150
high
Privileged command or direct system-path modification detected in startup script.
148
149CH_SRC=/app/data/clickhouse
150CH_DST=/var/lib/clickhouse
151MINIO_SRC=/app/data/minio
152MINIO_DST=/var/lib/minio
conf/migrate-stores.sh:152
high
Privileged command or direct system-path modification detected in startup script.
150CH_DST=/var/lib/clickhouse
151MINIO_SRC=/app/data/minio
152MINIO_DST=/var/lib/minio
153
154# MinIO's sentinel is .minio.sys, the directory the server itself creates to mark a real store. The
conf/restore-clickhouse.sh:22
high
Privileged command or direct system-path modification detected in startup script.
20set -euo pipefail
21
22CH_STORE=/var/lib/clickhouse
23MINIO_STORE=/var/lib/minio
24DUMP=/app/data/clickhouse-backup
conf/restore-clickhouse.sh:23
high
Privileged command or direct system-path modification detected in startup script.
21
22CH_STORE=/var/lib/clickhouse
23MINIO_STORE=/var/lib/minio
24DUMP=/app/data/clickhouse-backup
25MDUMP=/app/data/minio-backup
conf/restore-clickhouse.sh:85
high
Privileged command or direct system-path modification detected in startup script.
83
84# Background, NOT --daemon: --daemon conflicts with the console logger this package configures.
85su -s /bin/bash cloudron -c "exec clickhouse-server --config-file=/etc/clickhouse-server/config.xml" \
86 > /tmp/restore-ch.log 2>&1 &
87SVPID=$!
conf/restore-clickhouse.sh:92
medium
Network-capable command found in a runtime shell script.
90
91i=0
92until curl -sf http://localhost:8123/ping >/dev/null 2>&1; do
93 i=$(( i + 1 ))
94 if [ "${i}" -ge 90 ]; then
conf/run-web.sh:27
medium
Network-capable command found in a runtime shell script.
25export NODE_OPTIONS="${NODE_OPTIONS:---max-old-space-size=1536}"
26
27wait_for "clickhouse" curl -sf http://localhost:8123/ping
28wait_for "minio" curl -sf http://localhost:9100/minio/health/live
29wait_for "postgres" pg_isready -d "${DATABASE_URL}"
conf/run-web.sh:28
medium
Network-capable command found in a runtime shell script.
26
27wait_for "clickhouse" curl -sf http://localhost:8123/ping
28wait_for "minio" curl -sf http://localhost:9100/minio/health/live
29wait_for "postgres" pg_isready -d "${DATABASE_URL}"
30REDISCLI_AUTH="${REDIS_AUTH}" wait_for "redis" redis-cli -h "${REDIS_HOST}" -p "${REDIS_PORT}" ping
conf/run-worker.sh:21
medium
Network-capable command found in a runtime shell script.
19export NODE_OPTIONS="${NODE_OPTIONS:---max-old-space-size=768}"
20
21wait_for "clickhouse" curl -sf http://localhost:8123/ping
22wait_for "minio" curl -sf http://localhost:9100/minio/health/live
23REDISCLI_AUTH="${REDIS_AUTH}" wait_for "redis" redis-cli -h "${REDIS_HOST}" -p "${REDIS_PORT}" ping
conf/run-worker.sh:22
medium
Network-capable command found in a runtime shell script.
20
21wait_for "clickhouse" curl -sf http://localhost:8123/ping
22wait_for "minio" curl -sf http://localhost:9100/minio/health/live
23REDISCLI_AUTH="${REDIS_AUTH}" wait_for "redis" redis-cli -h "${REDIS_HOST}" -p "${REDIS_PORT}" ping
24
0.0.9