deepadb 1.0.6 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  MCP (Model Context Protocol) server providing full Android Debug Bridge (ADB) integration with Claude. Enables Claude to directly interact with connected Android devices — inspecting state, running commands, managing apps, capturing logs, controlling device settings, analyzing UI hierarchies, recording screens, managing emulators, running structured test sessions, orchestrating multi-device operations, capturing network traffic, running CI pipelines, auditing accessibility, detecting performance regressions, executing cloud device farm tests, debugging over WiFi, building projects, and managing community plugins.
4
4
 
5
- **147 tools, 4 resources, and 4 prompts across 41 modules** — the most comprehensive ADB MCP server available, with triple transport (stdio + HTTP/SSE + WebSocket), optional GraphQL API, defense-in-depth security, modem firmware analysis, workflow marketplace, AT command interface with multi-chipset support, RIL message interception, device profiling, baseband/modem integration, automated test generation, OTA update monitoring, SELinux auditing, thermal/power profiling, network device discovery, visual regression detection, workflow orchestration, accessibility auditing, and contextual truncation.
5
+ **156 tools, 4 resources, and 4 prompts across 42 modules** — the most comprehensive ADB MCP server available, with triple transport (stdio + HTTP/SSE + WebSocket), optional GraphQL API, defense-in-depth security, modem firmware analysis, workflow marketplace, AT command interface with multi-chipset support, RIL message interception, device profiling, baseband/modem integration, automated test generation, OTA update monitoring, SELinux auditing, thermal/power profiling, network device discovery, visual regression detection, workflow orchestration, accessibility auditing, and contextual truncation.
6
6
 
7
7
  ## Architecture
8
8
 
@@ -78,15 +78,15 @@ DeepADB operates in two modes, auto-detected at startup:
78
78
  ```
79
79
  AI Agent (PC) ←→ MCP ←→ DeepADB (PC) ←→ ADB (USB) ←→ Android Device
80
80
  ```
81
- Standard mode: DeepADB runs on a PC/Mac/Linux host and communicates with the device over USB via ADB. All 147 tools work through the ADB bridge with automatic retry on transient failures.
81
+ Standard mode: DeepADB runs on a PC/Mac/Linux host and communicates with the device over USB via ADB. All 156 tools work through the ADB bridge with automatic retry on transient failures.
82
82
 
83
83
  ### On-Device Mode — direct local execution
84
84
  ```
85
85
  AI Agent (Termux) ←→ MCP (stdio/HTTP) ←→ DeepADB (Termux) ←→ sh/su (local)
86
86
  ```
87
- When DeepADB runs directly on the Android device (e.g., inside Termux), it auto-detects the environment and switches to `LocalBridge`. Commands execute directly via `sh`/`su` — no ADB server, no USB, no serialization overhead. All 147 tools work identically, with significantly lower latency.
87
+ When DeepADB runs directly on the Android device (e.g., inside Termux), it auto-detects the environment and switches to `LocalBridge`. Commands execute directly via `sh`/`su` — no ADB server, no USB, no serialization overhead. All 156 tools work identically, with significantly lower latency.
88
88
 
89
- **Validated on hardware:** 203/203 tests pass on-device (Pixel 6a, Android 16, Termux + Magisk + QEMU 10.2.1). Includes 20 QEMU/KVM virtualization tests covering setup detection, disk image lifecycle, resource budget reporting, Alpine Linux VM boot with KVM acceleration, big.LITTLE CPU topology detection, and clean VM shutdown. QEMU tests auto-skip in ADB mode (183 passed, 4 skipped).
89
+ **Validated on hardware:** 218/218 tests pass on-device (Pixel 6a, Android 16, Termux + Magisk + QEMU 10.2.1). Includes 27 QEMU/KVM virtualization tests covering setup detection, disk image lifecycle, resource budget reporting, Alpine Linux VM boot with KVM acceleration, big.LITTLE CPU topology detection, guest ADB connectivity error handling, and clean VM shutdown. QEMU tests auto-skip in ADB mode (191 passed, 5 skipped).
90
90
 
91
91
  **Privilege escalation:** In ADB mode, all shell commands run as uid=2000 (the `shell` user) which has system-level permissions. In Termux, commands run as a regular app user. LocalBridge automatically elevates privileged commands through `su` when root (Magisk) is available:
92
92
  - **Command allowlist:** 16 system commands (`settings`, `dumpsys`, `am`, `input`, `screencap`, `screenrecord`, `uiautomator`, `app_process`, `getenforce`, `setenforce`, `cmd`, `pm`, `wm`, `svc`, `ip`, `ifconfig`) are routed through `su -c` to match ADB-mode behavior.
@@ -136,7 +136,7 @@ DA_GRAPHQL_PORT=4000 npm start
136
136
  }
137
137
  ```
138
138
 
139
- ## Available Tools (147)
139
+ ## Available Tools (156)
140
140
 
141
141
  ### Health (1 tool)
142
142
  - `adb_health_check` — Comprehensive toolchain validation: ADB binary, server, device connection, authorization, root access, and storage writability
@@ -225,22 +225,26 @@ DA_GRAPHQL_PORT=4000 npm start
225
225
  - `adb_emulator_start` — Launch an AVD with headless, cold boot, and GPU options (PC mode) or report QEMU alternative (on-device mode)
226
226
  - `adb_emulator_stop` — Gracefully shut down a running emulator
227
227
 
228
- ### QEMU/KVM Virtualization (5 tools)
228
+ ### QEMU/KVM Virtualization (8 tools)
229
229
  - `adb_qemu_setup` — Check and install QEMU for on-device virtualization. Verifies KVM, reports host CPU/RAM, installs via Termux pkg
230
230
  - `adb_qemu_images` — Manage VM disk images: list, create (qcow2/raw), delete. Path containment verification prevents traversal
231
231
  - `adb_qemu_start` — Boot a KVM-accelerated VM with dynamic resource allocation. Auto-detects optimal CPUs (total minus 1, reserving one for host) and memory (65% of physical RAM). Supports kernel/initrd/append for Android boot, ADB port forwarding
232
- - `adb_qemu_stop` — Stop a running VM (graceful SIGTERM or force SIGKILL). Reports running VMs if no name given
233
- - `adb_qemu_status` — Full status: KVM/QEMU availability, host resource budget, running VMs with PID/resources/uptime/ports, image inventory
232
+ - `adb_qemu_stop` — Stop a running VM (graceful SIGTERM or force SIGKILL). Auto-disconnects guest ADB before killing. Reports running VMs if no name given
233
+ - `adb_qemu_status` — Full status: KVM/QEMU availability, host resource budget, running VMs with PID/resources/uptime/ports/ADB connection state, image inventory
234
+ - `adb_qemu_connect` — Connect to a running VM's guest ADB service. Restricted to localhost only — port derived from running VM state, never user input. Enables multi-device tools to operate on guest VMs
235
+ - `adb_qemu_disconnect` — Disconnect from a guest VM's ADB service. Clears connection state and removes guest from device list
236
+ - `adb_qemu_guest_shell` — Execute shell commands on a guest VM via ADB. Subject to security middleware. Guest serial derived internally — no user-supplied host/IP reaches the ADB binary
234
237
 
235
238
  ### Test Sessions (3 tools)
236
239
  - `adb_test_session_start` — Start a named test session with organized output directory
237
240
  - `adb_test_step` — Capture a numbered step with screenshot and logcat into the session
238
241
  - `adb_test_session_end` — End session, write summary manifest, return directory path
239
242
 
240
- ### Multi-Device Orchestration (3 tools)
243
+ ### Multi-Device Orchestration (4 tools)
241
244
  - `adb_multi_shell` — Execute a command on all/selected devices in parallel (security-checked)
242
245
  - `adb_multi_install` — Install an APK across multiple devices simultaneously
243
246
  - `adb_multi_compare` — Run a command on all devices and highlight output differences
247
+ - `adb_multi_test` — Comparative test workflow: run predefined diagnostic profiles (firmware/security/network/identity/full) or custom command lists across all devices including QEMU guests, compare per-check, report matches and differences
244
248
 
245
249
  ### Snapshot/Restore (3 tools)
246
250
  - `adb_snapshot_capture` — Save comprehensive device state (packages, settings, properties) to JSON
@@ -293,11 +297,12 @@ DA_GRAPHQL_PORT=4000 npm start
293
297
  - `adb_gradle` — Run any Gradle task in a project directory
294
298
  - `adb_build_and_install` — Build debug APK and install via ANDROID_SERIAL targeting
295
299
 
296
- ### AT Commands (4 tools)
300
+ ### AT Commands (5 tools)
297
301
  - `adb_at_detect` — Auto-detect modem AT command device node by chipset family (Shannon, Qualcomm, MediaTek, Unisoc, generic). Probes known paths and returns the first responding node
298
302
  - `adb_at_send` — Send a single AT command to the modem with response capture. Auto-detects port or accepts manual override. Dangerous command blocklist with force override
299
303
  - `adb_at_batch` — Send multiple AT commands sequentially with per-command results. Configurable inter-command delay
300
304
  - `adb_at_probe` — Run a standard diagnostic probe: modem ID, signal quality, network registration, SIM status, operator, functionality mode
305
+ - `adb_at_cross_validate` — Cross-validate baseband firmware by comparing AT command responses (ATI, AT+CGMR, AT+CGMM) against system properties. Flags discrepancies as potential firmware tampering, incomplete OTA, or property spoofing. Shannon-specific AT+DEVCONINFO support. Requires root
301
306
 
302
307
  ### Screenshot Diffing (3 tools)
303
308
  - `adb_screenshot_baseline` — Capture and save a named screenshot baseline with metadata (dimensions, SHA-256, timestamp)
@@ -345,6 +350,12 @@ DA_GRAPHQL_PORT=4000 npm start
345
350
  - `adb_firmware_diff` — Compare all firmware components (baseband, bootloader, kernel, security patch, build ID, Android version, RIL) between saved fingerprints or live device. Deep parsed diffs for baseband and bootloader when changes detected
346
351
  - `adb_firmware_history` — Track firmware progression across all saved OTA fingerprints with multi-component change detection (baseband, bootloader, kernel, security patch, build ID, Android version) and parsed baseband diffs
347
352
 
353
+ ### Wireless Firmware (4 tools)
354
+ - `adb_wifi_firmware` — WiFi chipset and firmware identification: driver version, firmware version, supported bands (2.4/5/6 GHz), WiFi standard detection (5/6/6E/7), current connection info. MAC address opt-in only
355
+ - `adb_bluetooth_firmware` — Bluetooth firmware and chipset identification: firmware version, BT version (4.0–5.4 from LMP), adapter state, LE capabilities (2M PHY, Coded PHY, extended advertising), active profiles (A2DP/HFP/HID/LE Audio), bonded device count. MAC/name opt-in only
356
+ - `adb_nfc_firmware` — NFC controller firmware: controller type (NXP/Broadcom/Samsung/ST), firmware version, supported technologies (NFC-A/B/F/V, MIFARE), secure element (eSE/UICC), HCE support
357
+ - `adb_gps_firmware` — GNSS/GPS chipset and firmware identification: hardware model (manufacturer, chip, firmware), supported constellations (GPS/GLONASS/Galileo/BeiDou/QZSS/NavIC/SBAS), signal types with frequencies, dual-frequency (L1+L5) detection, raw GNSS measurement capabilities, A-GPS modes (MSB/MSA), SUPL server configuration, carrier phase measurements
358
+
348
359
  ### Workflow Marketplace (3 tools)
349
360
  - `adb_market_search` — Search the workflow marketplace for community-shared workflow definitions with keyword and tag filtering. Shows install status
350
361
  - `adb_market_install` — Download, validate (JSON structure + SHA-256 integrity), and install a marketplace workflow for immediate use with adb_workflow_run
@@ -404,7 +415,7 @@ Full view tree capture via `uiautomator dump` with parsed XML extraction. Return
404
415
  Multi-layered security activated via `DA_SECURITY=true`. Provides command blocklist/allowlist filtering, rate limiting (commands per minute), and audit logging with automatic credential redaction. Security checks are integrated into `adb_shell`, `adb_root_shell`, `adb_multi_shell`, `adb_multi_compare`, `adb_input`, and `adb_start_activity`. Configurable via environment variables for different deployment scenarios.
405
416
 
406
417
  ### Input Sanitization
407
- All tools that interpolate user-supplied parameters into shell command strings validate inputs against shell metacharacters before execution. Package names, property keys, service names, setting keys, test identifiers, network interface names, and tcpdump filters are all validated through a centralized `validateShellArg()` function that rejects `;`, `|`, `&`, `$`, backticks, parentheses, and other injection vectors. File paths use single-quoted shell escaping to prevent `$()` command substitution. The `adb_input` tool applies type-specific validation: `tap`/`swipe` accept only numeric coordinates, `keyevent` accepts only alphanumeric keycodes, and `text` is shell-escaped for literal delivery. Deserialized JSON from snapshot files is validated before shell interpolation. Every `z.number()` parameter across all 147 tools has explicit `.min()/.max()` Zod bounds to prevent resource exhaustion from extreme values. The LocalBridge has explicit handlers for every ADB subcommand used by tool modules, preventing unquoted fallthrough to the default shell handler. In on-device mode, privilege escalation uses a frozen 16-command allowlist and restricted-path regex — the elevation set is `ReadonlySet` + `Object.freeze`, not configurable at runtime. The HTTP/SSE transport denies cross-origin requests by default (configurable via `DA_HTTP_CORS_ORIGIN`), the plugin registry verifies SHA-256 integrity hashes and prevents path traversal via directory containment checks, and the workflow engine enforces step count (200), sleep duration (5 min), and repeat iteration (100) limits. Fetch helpers enforce a 5 MB response body limit. Getprop output parsing handles Windows `\r\n` line endings via `.trim()` before regex matching, and dual SIM slot counts are capped at 4 to prevent resource exhaustion from corrupted device properties.
418
+ All tools that interpolate user-supplied parameters into shell command strings validate inputs against shell metacharacters before execution. Package names, property keys, service names, setting keys, test identifiers, network interface names, and tcpdump filters are all validated through a centralized `validateShellArg()` function that rejects `;`, `|`, `&`, `$`, backticks, parentheses, and other injection vectors. File paths use single-quoted shell escaping to prevent `$()` command substitution. The `adb_input` tool applies type-specific validation: `tap`/`swipe` accept only numeric coordinates, `keyevent` accepts only alphanumeric keycodes, and `text` is shell-escaped for literal delivery. Deserialized JSON from snapshot files is validated before shell interpolation. Every `z.number()` parameter across all 156 tools has explicit `.min()/.max()` Zod bounds to prevent resource exhaustion from extreme values. The LocalBridge has explicit handlers for every ADB subcommand used by tool modules, preventing unquoted fallthrough to the default shell handler. In on-device mode, privilege escalation uses a frozen 16-command allowlist and restricted-path regex — the elevation set is `ReadonlySet` + `Object.freeze`, not configurable at runtime. The HTTP/SSE transport denies cross-origin requests by default (configurable via `DA_HTTP_CORS_ORIGIN`), the plugin registry verifies SHA-256 integrity hashes and prevents path traversal via directory containment checks, and the workflow engine enforces step count (200), sleep duration (5 min), and repeat iteration (100) limits. Fetch helpers enforce a 5 MB response body limit. Getprop output parsing handles Windows `\r\n` line endings via `.trim()` before regex matching, and dual SIM slot counts are capped at 4 to prevent resource exhaustion from corrupted device properties.
408
419
 
409
420
  ### Multi-Device Orchestration
410
421
  Run commands, install APKs, and compare outputs across multiple connected devices in parallel. Essential for comparative testing across Android versions and device models.
@@ -584,6 +595,7 @@ DeepADB/
584
595
  │ │ ├── selinux-audit.ts # SELinux status, AVC denials, permission auditing (3 tools)
585
596
  │ │ ├── thermal-power.ts # Thermal zones, CPU frequency, battery drain (3 tools)
586
597
  │ │ ├── network-discovery.ts # ADB-over-network scanning and auto-connect (3 tools)
598
+ │ │ └── wireless-firmware.ts # WiFi, Bluetooth, NFC, GPS firmware identification (4 tools)
587
599
  │ │ ├── build.ts # Gradle build and install (2 tools)
588
600
  │ │ ├── resources.ts # MCP Resources — device state surfaces (4 resources)
589
601
  │ │ └── prompts.ts # MCP Prompts — workflow templates (4 prompts)
@@ -608,16 +620,16 @@ DeepADB/
608
620
  ├── LICENSE # MIT license
609
621
  ├── tests/
610
622
  │ ├── run-all.mjs # Run all test suites sequentially with summary (tracks skipped counts)
611
- │ ├── test-hw.mjs # Hardware core: health, identity, baseband, thermal, profiles (26 tests)
623
+ │ ├── test-hw.mjs # Hardware core: health, identity, baseband, thermal, profiles, wireless firmware (33 tests)
612
624
  │ ├── test-shell-files.mjs # Shell, filesystem, packages, diagnostics (24 tests)
613
625
  │ ├── test-ui-control.mjs # UI hierarchy, screenshots, settings, accessibility (15 tests)
614
626
  │ ├── test-monitoring.mjs # Logcat watchers, snapshots, OTA, regression, workflows (25 tests)
615
627
  │ ├── test-security.mjs # Input sanitization, shell injection, AT command safety (25 tests)
616
628
  │ ├── test-lifecycle.mjs # App lifecycle, file push/pull, input, port forwarding, screen recording, test sessions (22 tests)
617
- │ ├── test-analysis.mjs # Thermal/snapshot/regression comparison, firmware diff, screenshot diff, test gen, RIL intercept (18 tests)
629
+ │ ├── test-analysis.mjs # Thermal/snapshot/regression comparison, firmware diff, screenshot diff, test gen, RIL intercept, AT cross-validation (19 tests)
618
630
  │ ├── test-boundaries.mjs # Zod bounds enforcement, input injection, error paths, sensitive data protection (28 tests)
619
- │ ├── test-qemu.mjs # QEMU/KVM setup, image management, VM status (10 on-device tests)
620
- │ ├── test-qemu-boot.mjs # QEMU Alpine VM boot, KVM acceleration, topology detection (10 on-device tests)
631
+ │ ├── test-qemu.mjs # QEMU/KVM setup, image management, VM status, guest connectivity errors (13 on-device tests)
632
+ │ ├── test-qemu-boot.mjs # QEMU Alpine VM boot, KVM acceleration, topology detection, guest ADB connectivity (14 on-device tests)
621
633
  │ └── lib/
622
634
  │ └── harness.mjs # Shared test harness (stdio JSON-RPC transport, 6 assertion types)
623
635
  └── docs/
@@ -22,6 +22,24 @@ export declare class LocalBridge extends AdbBridge {
22
22
  * Probed lazily on first command that needs elevation.
23
23
  */
24
24
  private rootAvailable;
25
+ /**
26
+ * Guest devices connected via ADB (e.g., QEMU VMs).
27
+ * When a command targets one of these serials, LocalBridge routes it through
28
+ * the real `adb` binary instead of executing locally.
29
+ *
30
+ * SECURITY: Only populated by qemu.ts connect/disconnect flow, which validates
31
+ * that serials are strictly `localhost:<port>` from running VMs.
32
+ * No external host connections are ever registered.
33
+ */
34
+ private static guestDevices;
35
+ /** Cached ADB binary path. undefined = not yet checked, null = not found. */
36
+ private adbBinaryPath;
37
+ /** Register a guest device serial for ADB routing. Called by qemu.ts on connect. */
38
+ static registerGuestDevice(serial: string): void;
39
+ /** Unregister a guest device serial. Called by qemu.ts on disconnect/stop. */
40
+ static unregisterGuestDevice(serial: string): void;
41
+ /** Check if a serial belongs to a registered guest device. */
42
+ static isGuestDevice(serial: string | undefined): boolean;
25
43
  /**
26
44
  * Android system commands that require shell-user (uid=2000) or root privileges.
27
45
  * In ADB mode, all shell commands run as uid=2000 automatically.
@@ -46,6 +64,26 @@ export declare class LocalBridge extends AdbBridge {
46
64
  * This is the same escaping path used by AdbBridge.rootShell().
47
65
  */
48
66
  private elevate;
67
+ /**
68
+ * Find the `adb` binary for guest device communication.
69
+ * Result is cached after first probe.
70
+ *
71
+ * SECURITY: Path is discovered from the system, never user-supplied.
72
+ */
73
+ private findAdbBinaryPath;
74
+ /**
75
+ * Execute a command on a guest device via the real ADB binary.
76
+ * Called when the target device serial matches a registered guest.
77
+ *
78
+ * Reconstructs the full ADB command: `adb -s <serial> <subcommand> <args...>`
79
+ * This is the same execution path as AdbBridge.exec(), but using the
80
+ * locally-installed adb binary instead of the host's ADB.
81
+ *
82
+ * SECURITY: The serial comes from the guest device registry (populated only
83
+ * by qemu.ts with validated localhost:<port> values). Args are passed as
84
+ * an array to execFile (no shell expansion).
85
+ */
86
+ private execViaAdb;
49
87
  /**
50
88
  * Android filesystem paths that require elevated access in on-device mode.
51
89
  * Commands referencing these paths need su to bypass scoped storage restrictions.
@@ -73,7 +111,8 @@ export declare class LocalBridge extends AdbBridge {
73
111
  private execLocal;
74
112
  /**
75
113
  * Synthesize an `adb devices -l` response for DeviceManager.
76
- * Reads device properties once and caches them.
114
+ * Reads device properties once and caches the local device line.
115
+ * When guest VMs are connected via ADB, merges their status into the list.
77
116
  */
78
117
  private syntheticDeviceList;
79
118
  /** Create a successful AdbResult from a string. */
@@ -1 +1 @@
1
- {"version":3,"file":"local-bridge.d.ts","sourceRoot":"","sources":["../../src/bridge/local-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAoC,YAAY,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAY,MAAM,iBAAiB,CAAC;AAEjF,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAGjD,qBAAa,WAAY,SAAQ,SAAS;IACxC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAAuB;IAE9C;;;OAGG;IACH,OAAO,CAAC,aAAa,CAAwB;IAE7C;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAiBrC;gBAEQ,MAAM,EAAE,MAAM;IAK1B,8FAA8F;IAC9F,OAAO,CAAC,UAAU;IAIlB;;;OAGG;YACW,kBAAkB;IAkBhC;;;;OAIG;IACH,OAAO,CAAC,OAAO;IAIf;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAuC;IAEvF;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;;;OAIG;IACY,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,SAAS,CAAC;IA0HrF,6DAA6D;IAC7D,OAAO,CAAC,SAAS;IAqDjB;;;OAGG;YACW,mBAAmB;IAmBjC,mDAAmD;IACnD,OAAO,CAAC,UAAU;IAWlB,4CAA4C;IAC7B,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAIvC,iCAAiC;IAClB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IASzC;;;;OAIG;IACM,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY;CA0BxE"}
1
+ {"version":3,"file":"local-bridge.d.ts","sourceRoot":"","sources":["../../src/bridge/local-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAA+C,YAAY,EAAE,MAAM,eAAe,CAAC;AAE1F,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAY,MAAM,iBAAiB,CAAC;AAEjF,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAGjD,qBAAa,WAAY,SAAQ,SAAS;IACxC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAAuB;IAE9C;;;OAGG;IACH,OAAO,CAAC,aAAa,CAAwB;IAE7C;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY,CAAqB;IAEhD,6EAA6E;IAC7E,OAAO,CAAC,aAAa,CAAwC;IAE7D,oFAAoF;IACpF,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIhD,8EAA8E;IAC9E,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIlD,8DAA8D;IAC9D,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO;IAIzD;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAiBrC;gBAEQ,MAAM,EAAE,MAAM;IAK1B,8FAA8F;IAC9F,OAAO,CAAC,UAAU;IAIlB;;;OAGG;YACW,kBAAkB;IAkBhC;;;;OAIG;IACH,OAAO,CAAC,OAAO;IAIf;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAyBzB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,UAAU;IAiElB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAuC;IAEvF;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;;;OAIG;IACY,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,SAAS,CAAC;IAkIrF,6DAA6D;IAC7D,OAAO,CAAC,SAAS;IAqDjB;;;;OAIG;YACW,mBAAmB;IAkDjC,mDAAmD;IACnD,OAAO,CAAC,UAAU;IAWlB,4CAA4C;IAC7B,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAIvC,iCAAiC;IAClB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IASzC;;;;OAIG;IACM,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY;CA0BxE"}
@@ -11,7 +11,8 @@
11
11
  *
12
12
  * Environment detection: see config.ts isOnDevice().
13
13
  */
14
- import { execFile, spawn } from "child_process";
14
+ import { execFile, spawn, spawnSync } from "child_process";
15
+ import { existsSync } from "fs";
15
16
  import { AdbBridge, AdbError } from "./adb-bridge.js";
16
17
  import { config } from "../config/config.js";
17
18
  import { shellEscape } from "../middleware/sanitize.js";
@@ -23,6 +24,30 @@ export class LocalBridge extends AdbBridge {
23
24
  * Probed lazily on first command that needs elevation.
24
25
  */
25
26
  rootAvailable = null;
27
+ /**
28
+ * Guest devices connected via ADB (e.g., QEMU VMs).
29
+ * When a command targets one of these serials, LocalBridge routes it through
30
+ * the real `adb` binary instead of executing locally.
31
+ *
32
+ * SECURITY: Only populated by qemu.ts connect/disconnect flow, which validates
33
+ * that serials are strictly `localhost:<port>` from running VMs.
34
+ * No external host connections are ever registered.
35
+ */
36
+ static guestDevices = new Set();
37
+ /** Cached ADB binary path. undefined = not yet checked, null = not found. */
38
+ adbBinaryPath = undefined;
39
+ /** Register a guest device serial for ADB routing. Called by qemu.ts on connect. */
40
+ static registerGuestDevice(serial) {
41
+ LocalBridge.guestDevices.add(serial);
42
+ }
43
+ /** Unregister a guest device serial. Called by qemu.ts on disconnect/stop. */
44
+ static unregisterGuestDevice(serial) {
45
+ LocalBridge.guestDevices.delete(serial);
46
+ }
47
+ /** Check if a serial belongs to a registered guest device. */
48
+ static isGuestDevice(serial) {
49
+ return serial !== undefined && LocalBridge.guestDevices.has(serial);
50
+ }
26
51
  /**
27
52
  * Android system commands that require shell-user (uid=2000) or root privileges.
28
53
  * In ADB mode, all shell commands run as uid=2000 automatically.
@@ -89,6 +114,95 @@ export class LocalBridge extends AdbBridge {
89
114
  elevate(command) {
90
115
  return `su -c '${shellEscape(command)}'`;
91
116
  }
117
+ /**
118
+ * Find the `adb` binary for guest device communication.
119
+ * Result is cached after first probe.
120
+ *
121
+ * SECURITY: Path is discovered from the system, never user-supplied.
122
+ */
123
+ findAdbBinaryPath() {
124
+ if (this.adbBinaryPath !== undefined)
125
+ return this.adbBinaryPath;
126
+ try {
127
+ const result = spawnSync("which", ["adb"], { timeout: 3000 });
128
+ if (result.status === 0 && result.stdout) {
129
+ const path = result.stdout.toString().trim();
130
+ if (path.length > 0) {
131
+ this.adbBinaryPath = path;
132
+ return path;
133
+ }
134
+ }
135
+ }
136
+ catch { /* which not available */ }
137
+ // Fallback: standard Termux location
138
+ const termuxAdb = "/data/data/com.termux/files/usr/bin/adb";
139
+ if (existsSync(termuxAdb)) {
140
+ this.adbBinaryPath = termuxAdb;
141
+ return termuxAdb;
142
+ }
143
+ this.adbBinaryPath = null;
144
+ return null;
145
+ }
146
+ /**
147
+ * Execute a command on a guest device via the real ADB binary.
148
+ * Called when the target device serial matches a registered guest.
149
+ *
150
+ * Reconstructs the full ADB command: `adb -s <serial> <subcommand> <args...>`
151
+ * This is the same execution path as AdbBridge.exec(), but using the
152
+ * locally-installed adb binary instead of the host's ADB.
153
+ *
154
+ * SECURITY: The serial comes from the guest device registry (populated only
155
+ * by qemu.ts with validated localhost:<port> values). Args are passed as
156
+ * an array to execFile (no shell expansion).
157
+ */
158
+ execViaAdb(args, options) {
159
+ const adbPath = this.findAdbBinaryPath();
160
+ if (!adbPath) {
161
+ return Promise.reject(new AdbError("ADB binary not found — required for guest device communication. Install with: pkg install android-tools", { stdout: "", stderr: "", exitCode: 1, timedOut: false, bufferExceeded: false, device: options.device ?? "guest" }));
162
+ }
163
+ const timeout = options.timeout || config.commandTimeout;
164
+ const fullArgs = [];
165
+ if (options.device) {
166
+ fullArgs.push("-s", options.device);
167
+ }
168
+ fullArgs.push(...args);
169
+ this.localLogger.debug(`adb guest: ${adbPath} ${fullArgs.join(" ").substring(0, 200)}`);
170
+ return new Promise((resolve, reject) => {
171
+ const execOptions = {
172
+ timeout,
173
+ maxBuffer: config.maxOutputSize * 2,
174
+ };
175
+ execFile(adbPath, fullArgs, execOptions, (error, stdout, stderr) => {
176
+ const bufferExceeded = error?.code === "ERR_CHILD_PROCESS_STDIO_MAXBUFFER"
177
+ || error?.message?.includes("maxBuffer") === true;
178
+ const timedOut = error?.killed === true && !bufferExceeded;
179
+ const exitCode = error?.code != null
180
+ ? (typeof error.code === "number" ? error.code : 1)
181
+ : 0;
182
+ const result = {
183
+ stdout: stdout?.toString() ?? "",
184
+ stderr: stderr?.toString() ?? "",
185
+ exitCode,
186
+ timedOut,
187
+ bufferExceeded,
188
+ device: options.device ?? "guest",
189
+ };
190
+ if (timedOut) {
191
+ reject(new AdbError(`Guest command timed out after ${timeout}ms`, result));
192
+ return;
193
+ }
194
+ if (bufferExceeded) {
195
+ resolve(result);
196
+ return;
197
+ }
198
+ if (exitCode !== 0 && !options.ignoreExitCode) {
199
+ reject(new AdbError(`Guest command failed (exit ${exitCode}): ${result.stderr || result.stdout}`.trim(), result));
200
+ return;
201
+ }
202
+ resolve(result);
203
+ });
204
+ });
205
+ }
92
206
  /**
93
207
  * Android filesystem paths that require elevated access in on-device mode.
94
208
  * Commands referencing these paths need su to bypass scoped storage restrictions.
@@ -123,6 +237,13 @@ export class LocalBridge extends AdbBridge {
123
237
  * tool calls to exec() flow through here.
124
238
  */
125
239
  async exec(args, options = {}) {
240
+ // Guest device routing: if the target device is a registered QEMU guest,
241
+ // route through the real ADB binary instead of local execution.
242
+ // This enables multi-device tools to transparently operate on both
243
+ // the host device (local) and guest VMs (via ADB).
244
+ if (options.device && LocalBridge.isGuestDevice(options.device)) {
245
+ return this.execViaAdb(args, options);
246
+ }
126
247
  const subcommand = args[0];
127
248
  const hasRoot = await this.checkRootAvailable();
128
249
  switch (subcommand) {
@@ -269,9 +390,11 @@ export class LocalBridge extends AdbBridge {
269
390
  }
270
391
  /**
271
392
  * Synthesize an `adb devices -l` response for DeviceManager.
272
- * Reads device properties once and caches them.
393
+ * Reads device properties once and caches the local device line.
394
+ * When guest VMs are connected via ADB, merges their status into the list.
273
395
  */
274
396
  async syntheticDeviceList() {
397
+ // Build local device line (cached — host device props don't change)
275
398
  if (!this.deviceInfoCache) {
276
399
  try {
277
400
  const [modelRes, productRes] = await Promise.allSettled([
@@ -280,13 +403,40 @@ export class LocalBridge extends AdbBridge {
280
403
  ]);
281
404
  const model = modelRes.status === "fulfilled" ? modelRes.value.stdout.trim().replace(/\s+/g, "_") : "Android";
282
405
  const product = productRes.status === "fulfilled" ? productRes.value.stdout.trim() : "unknown";
283
- this.deviceInfoCache = `List of devices attached\nlocal device product:${product} model:${model} transport_id:0\n`;
406
+ this.deviceInfoCache = `local device product:${product} model:${model} transport_id:0`;
284
407
  }
285
408
  catch {
286
- this.deviceInfoCache = "List of devices attached\nlocal device product:unknown model:Android transport_id:0\n";
409
+ this.deviceInfoCache = "local device product:unknown model:Android transport_id:0";
410
+ }
411
+ }
412
+ let deviceLines = this.deviceInfoCache;
413
+ // If guest VMs are connected, query ADB for their device lines
414
+ if (LocalBridge.guestDevices.size > 0) {
415
+ const adbPath = this.findAdbBinaryPath();
416
+ if (adbPath) {
417
+ try {
418
+ const result = spawnSync(adbPath, ["devices", "-l"], { timeout: 5000 });
419
+ if (result.status === 0 && result.stdout) {
420
+ const adbOutput = result.stdout.toString();
421
+ const adbLines = adbOutput.split("\n").slice(1) // Skip "List of devices attached" header
422
+ .map(l => l.trim())
423
+ .filter(l => l.length > 0);
424
+ // Only include lines matching registered guest serials
425
+ for (const line of adbLines) {
426
+ const serial = line.split(/\s+/)[0];
427
+ if (serial && LocalBridge.guestDevices.has(serial)) {
428
+ deviceLines += "\n" + line;
429
+ }
430
+ }
431
+ }
432
+ }
433
+ catch {
434
+ // ADB query failed — still return local device
435
+ this.localLogger.debug("syntheticDeviceList: ADB query for guest devices failed");
436
+ }
287
437
  }
288
438
  }
289
- return this.makeResult(this.deviceInfoCache);
439
+ return this.makeResult(`List of devices attached\n${deviceLines}\n`);
290
440
  }
291
441
  /** Create a successful AdbResult from a string. */
292
442
  makeResult(stdout) {
@@ -1 +1 @@
1
- {"version":3,"file":"local-bridge.js","sourceRoot":"","sources":["../../src/bridge/local-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-bridge.js","sourceRoot":"","sources":["../../src/bridge/local-bridge.ts"],"names":[],"mappings":"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"}
package/build/index.js CHANGED
@@ -16,7 +16,7 @@ import { startHttpTransport } from "./http-transport.js";
16
16
  import { startWsTransport } from "./ws-transport.js";
17
17
  import { startGraphQLApi } from "./graphql-api.js";
18
18
  import { VERSION } from "./config/config.js";
19
- import { isAuthEnabled } from "./middleware/auth.js";
19
+ import { isAuthEnabled, validateTokenStrength } from "./middleware/auth.js";
20
20
  async function main() {
21
21
  const { server, logger, bridge, deviceManager } = await createServer();
22
22
  /** Parse a port env var safely — returns null if unset, NaN, out of range, or negative. */
@@ -61,6 +61,7 @@ async function main() {
61
61
  if (httpPort || wsPort || graphqlPort) {
62
62
  if (isAuthEnabled()) {
63
63
  console.error("[DeepADB] Bearer token authentication enabled (DA_AUTH_TOKEN set)");
64
+ validateTokenStrength();
64
65
  }
65
66
  else if (!isLoopback) {
66
67
  console.error("[DeepADB] ⚠ No authentication configured. Set DA_AUTH_TOKEN for bearer token auth.");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,KAAK,UAAU,IAAI;IACjB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,YAAY,EAAE,CAAC;IAEvE,2FAA2F;IAC3F,SAAS,SAAS,CAAC,MAA0B;QAC3C,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,2BAA2B,MAAM,gCAAgC,CAAC,CAAC;YACjF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,WAAW,CAAC;IACzD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAE3D,kEAAkE;IAClE,kFAAkF;IAClF,gFAAgF;IAChF,mEAAmE;IACnE,MAAM,UAAU,GAAG,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,KAAK,CAAC;IAC9F,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,IAAI,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QAC3E,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;QAClF,OAAO,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACpF,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;QAClF,OAAO,CAAC,KAAK,CAAC,iBAAiB,QAAQ,iDAAiD,CAAC,CAAC;QAC1F,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;QACtF,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACnF,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;QACtF,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;QACtF,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;QACtF,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;QACtF,OAAO,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;QACvF,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;QACtF,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;QACtF,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;QACtF,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;QACtF,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACpF,CAAC;IAED,yCAAyC;IACzC,IAAI,QAAQ,IAAI,MAAM,IAAI,WAAW,EAAE,CAAC;QACtC,IAAI,aAAa,EAAE,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACrF,CAAC;aAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,oFAAoF,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAED,8DAA8D;IAC9D,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;YAC9G,OAAO,CAAC,KAAK,CAAC,2CAA2C,QAAQ,IAAI,WAAW,UAAU,CAAC,CAAC;QAC9F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,0CAA0C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,oCAAoC;QACpC,MAAM,kBAAkB,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/F,OAAO,CAAC,KAAK,CAAC,kDAAkD,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAC;IAC1F,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAClB,6CAA6C;QAC7C,MAAM,gBAAgB,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;QAC3F,OAAO,CAAC,KAAK,CAAC,iDAAiD,QAAQ,IAAI,MAAM,KAAK,CAAC,CAAC;IAC1F,CAAC;SAAM,CAAC;QACN,sBAAsB;QACtB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACvF,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,16 @@
20
20
  import { IncomingMessage, ServerResponse } from "http";
21
21
  /** Whether token auth is enabled. */
22
22
  export declare function isAuthEnabled(): boolean;
23
+ /**
24
+ * Validate token strength at startup. Logs warnings for weak tokens.
25
+ * Called once from index.ts when network transports are enabled.
26
+ *
27
+ * Checks:
28
+ * 1. Minimum length (32 chars = 128+ bits for hex, 192+ bits for base64)
29
+ * 2. Entropy estimation — reject tokens with very low character diversity
30
+ * 3. Common weak patterns (all same character, sequential digits, dictionary-like)
31
+ */
32
+ export declare function validateTokenStrength(): void;
23
33
  /**
24
34
  * Check bearer token authentication on an incoming HTTP request.
25
35
  *
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AASvD,qCAAqC;AACrC,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAY5E;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAc3D"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAYvD,qCAAqC;AACrC,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAuC5C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAY5E;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAc3D"}
@@ -22,10 +22,58 @@ import { timingSafeEqual } from "crypto";
22
22
  const AUTH_TOKEN = process.env.DA_AUTH_TOKEN ?? "";
23
23
  /** Pre-computed buffer for constant-time comparison (avoids re-allocation per request). */
24
24
  const AUTH_TOKEN_BUF = Buffer.from(AUTH_TOKEN);
25
+ /** Minimum recommended token length in characters. Shorter tokens are warned at startup. */
26
+ const MIN_TOKEN_LENGTH = 32;
25
27
  /** Whether token auth is enabled. */
26
28
  export function isAuthEnabled() {
27
29
  return AUTH_TOKEN.length > 0;
28
30
  }
31
+ /**
32
+ * Validate token strength at startup. Logs warnings for weak tokens.
33
+ * Called once from index.ts when network transports are enabled.
34
+ *
35
+ * Checks:
36
+ * 1. Minimum length (32 chars = 128+ bits for hex, 192+ bits for base64)
37
+ * 2. Entropy estimation — reject tokens with very low character diversity
38
+ * 3. Common weak patterns (all same character, sequential digits, dictionary-like)
39
+ */
40
+ export function validateTokenStrength() {
41
+ if (!AUTH_TOKEN)
42
+ return;
43
+ const warnings = [];
44
+ // Check 1: Minimum length
45
+ if (AUTH_TOKEN.length < MIN_TOKEN_LENGTH) {
46
+ warnings.push(`Token is ${AUTH_TOKEN.length} characters — minimum recommended is ${MIN_TOKEN_LENGTH}.`);
47
+ warnings.push(`Generate a strong token: openssl rand -hex 32`);
48
+ warnings.push(`Or with Node.js: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"`);
49
+ }
50
+ // Check 2: Character diversity — estimate entropy
51
+ const uniqueChars = new Set(AUTH_TOKEN).size;
52
+ const entropyRatio = uniqueChars / AUTH_TOKEN.length;
53
+ if (AUTH_TOKEN.length >= 8 && entropyRatio < 0.3) {
54
+ warnings.push(`Token has very low character diversity (${uniqueChars} unique characters in ${AUTH_TOKEN.length} total).`);
55
+ }
56
+ // Check 3: Common weak patterns
57
+ if (/^(.)\1+$/.test(AUTH_TOKEN)) {
58
+ warnings.push("Token is a single repeated character — this is trivially guessable.");
59
+ }
60
+ else if (/^(0123456789|abcdefgh|password|secret|token|changeme|test)/i.test(AUTH_TOKEN)) {
61
+ warnings.push("Token appears to use a common weak pattern.");
62
+ }
63
+ if (warnings.length > 0) {
64
+ console.error("╔══════════════════════════════════════════════════════════════╗");
65
+ console.error("║ ⚠ WARNING: DA_AUTH_TOKEN may be weak ║");
66
+ console.error("╠══════════════════════════════════════════════════════════════╣");
67
+ for (const w of warnings) {
68
+ console.error(`║ ${w}`);
69
+ }
70
+ console.error("║ ║");
71
+ console.error("║ A strong token should be at least 32 random hex characters: ║");
72
+ console.error("║ openssl rand -hex 32 ║");
73
+ console.error("║ node -e \"console.log(require('crypto').randomBytes(32).toString('hex'))\" ║");
74
+ console.error("╚══════════════════════════════════════════════════════════════╝");
75
+ }
76
+ }
29
77
  /**
30
78
  * Check bearer token authentication on an incoming HTTP request.
31
79
  *
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEzC,sEAAsE;AACtE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC;AAEnD,2FAA2F;AAC3F,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAE/C,qCAAqC;AACrC,MAAM,UAAU,aAAa;IAC3B,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CAAC,GAAoB,EAAE,GAAmB;IACjE,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7B,IAAI,aAAa,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,0BAA0B;IAC1B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,cAAc,EAAE,kBAAkB;QAClC,kBAAkB,EAAE,QAAQ;KAC7B,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,yDAAyD,EAAE,CAAC,CAAC,CAAC;IAC9F,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,GAAoB;IAChD,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7B,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;IACnD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE/B,yEAAyE;IACzE,6EAA6E;IAC7E,8EAA8E;IAC9E,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,QAAQ,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC5D,OAAO,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAoDhD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAoFhE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAqDhD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAqFhE"}