sandbox.mia.emux.ai

isolated malware scanner — ClamAV + heuristic PHP/WordPress/Joomla patterns, no LLM call
ready

// summary

isolation
ISOLATED
scanner
ClamAV 1.4.3
network egress
none
llm swarm
disabled

// upload a suspect file for scanning

Drop a .php, .zip, or .tar.gz here. The scan runs in an isolated alpine:3.20 container with --network=none and the host's ClamAV signature DBs bind-mounted read-only. The result is CLEAN / SUSPICIOUS / MALICIOUS based on ClamAV + heuristic pattern match. No LLM call. No upstream network access.

// recent scans (last 25)

scan_id target verdict clamav heuristic ts
no scans yet

// details for selected scan

click a scan_id above to see the full verdict JSON
} else { pill.textContent = running.length + ' container' + (running.length>1?'s':'') + ' running'; pill.className = 'status-pill warn'; } const runningSet = new Set(running); const grid = document.getElementById('sandbox-grid'); grid.innerHTML = defs.map(d => { const services = d.compose_services || (d.compose_service ? [d.compose_service] : []); const isUp = services.length > 0 && services.every(s => runningSet.has(s)); const isPartial = services.length > 0 && services.some(s => runningSet.has(s)) && !isUp; const stateLabel = isUp ? 'up' : (isPartial ? 'partial' : 'stopped'); const stateClass = isUp ? 'ready' : 'standby'; const svcList = services.map(s => '' + s + '').join(' '); const spinCmd = services.length ? 'docker compose up -d ' + services.join(' ') : 'docker compose up -d ' + (d.compose_service || ''); const teardownCmd = services.length ? 'docker compose stop ' + services.join(' ') : 'docker compose stop ' + (d.compose_service || ''); return '
' + '
' + '
' + d.name + '
' + '' + stateLabel + '' + '
' + '
id
' + '
' + d.id + '
' + '
purpose
' + '
' + d.purpose + '
' + '
' + 'image' + d.image + '' + 'spin up' + d.spin_up_seconds + 's' + 'max run' + d.max_runtime_seconds + 's' + 'mem' + d.memory_quota + '' + 'cpu' + d.cpu_quota + '' + 'egress' + d.egress + '' + '
' + '
services
' + '
' + (svcList || '(none)') + '
' + '
' + 'to spin up:' + '
' + spinCmd + '
' + 'to stop:' + '
' + teardownCmd + '
' + '
' + '
'; }).join(''); const list = lm.data || []; document.getElementById('agent-list').innerHTML = list.length ? list.map(m => '' + m.id + '').join(' ') + ' · registered in litellm @ 127.0.0.1:4000' : 'no agents registered — litellm unreachable'; document.getElementById('spin-cmds').textContent = [ '# One-shot: spin up the python scanner only', 'cd /home/sandbox/web/sandbox.mia.emux.ai/public_html', 'docker compose up -d aio-sandbox', '', '# Full dev × auditor fan-out', 'docker compose up -d developer-1 developer-2 developer-3 auditor-1 auditor-2 aio-sandbox', '', '# Tear down (back to dashboard-only mode)', 'docker compose stop developer-1 developer-2 developer-3 auditor-1 auditor-2 aio-sandbox', ].join('\n'); document.getElementById('history').textContent = historyLines.length ? historyLines.join('\n') : 'no spins recorded yet — history will populate after the first spin'; } refresh(); setInterval(refresh, 15000);