live · scanning repos
Scanrepo
github.com
github.com / pascalorg

pascalorg/editor

TypeScript·4848 files·commit 25a1304·scanned 5d ago·cached ✓
15/100
LOW RISK
Minor findings consistent with the project type. Nothing reachable from install hooks.

score capped at 15 — 25,058+ stars — findings likely false positives

verdict accurate?
25,058 stars
Partial architecture graph
threat-state: lowlive

FINDINGS ░▒▓

criticalPython dynamic code executioneval(), exec() or compile() on untrusted input can execute arbitrary code. Common in Python malware for running obfuscated payloads.packages/geometry-script/bpy/runner.py
    with contextlib.redirect_stdout(log):
        exec(compile(request["code"], "script.py", "exec"), module)
        build = module.get("build")
        if not callable(build):
+7
criticalFunction() constructor detectednew Function() is equivalent to eval() and can execute arbitrary code strings.packages/geometry-script/src/compile.ts
  // Evaluating the model's module is the compiler's job; callers run it in a locked-down worker.
  const factory = new Function('__modules', 'THREE', 'lib', body) as (
    modules: ModuleTable,
    t...
+5
infoSuspicious files are not reachable from entry pointsFlagged files exist but are not imported by any entry point. They may be dead code, tests, or attack payloads triggered by another mechanism.+2
warningHardcoded IP address in network callFetching data from hardcoded IP addresses instead of domain names is suspicious and may indicate C2 communication.packages/mcp/src/lib/safe-fetch.test.ts
    for (const url of [
      'http://127.0.0.1/',
      'http://127.1.2.3/',
      'http://2130706433/', // decimal 127.0.0.1
+5
warningClipboard read accessnavigator.clipboard.readText() reads the user's clipboard. In a wallet/crypto context this is often used to steal copied seed phrases or private keys.packages/editor/src/lib/scene-clipboard.ts
  try {
    text = await navigator.clipboard.readText()
  } catch {
    return hasEditorClipboard()
+4
warningExtremely long lines (>1000 chars)Very long lines in source files (not minified bundles) can hide malicious code.packages/core/src/agent-tools/author-scene.ts+4
warningExtremely long lines (>1000 chars)Very long lines in source files (not minified bundles) can hide malicious code.packages/core/src/agent-tools/room-structure.ts+4
warningExtremely long lines (>1000 chars)Very long lines in source files (not minified bundles) can hide malicious code.packages/mcp/src/resources/agent-guide.ts+4
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.packages/editor/src/components/editor/room-labels.tsx+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.packages/geometry-script/src/compile.test.ts+3
warningLarge base64-encoded blobA 92-character base64 blob was found. May hide a remote payload or encoded executable code.packages/nodes/src/item/model-loader.test.ts
oAAAATwAAAD//wE8AAAAfn0AAAEMAAAA/wEMAAAAfgAAAAAAAAAAAAAAAAAA...
+3
infoAuthor has no other public repositoriesGitHub user "github-actions[bot]" has no other public repositories, common for burner accounts used in scams.+2

Scores are heuristics. A “safe” verdict means no known-malicious patterns were found — clever malware can look boring. Wrong verdict? Flag it above; confirmed false positives become regression tests.

3000 files scanned @ 25a1304 | 10/22/2026 | heuristic scan — always review manually

risk by category
code execution14
network & exfiltration5
file system access4
obfuscation15
supply chain2
owasp / injection0
telemetry
files 3000/4848rules hit 12engine v7commit 25a1304

github

pascalorg/editor

Open-source 3D architectural editor with a local CLI, MCP tools, and practical workflows for humans and AI agents.

TypeScript
25058
3118
376d
4848 files
3000 scanned(62%)
25a1304

architecture░▒▓

entry (2) flagged (10) pkg (52)
452 nodes · 1331 edgesscroll to zoom · click node to jump to finding
LOW (15/100) — pascalorg/editor — ScanRepo