Skip to content

Security: activadee/kanban-ai

Security

SECURITY.md

Security Policy

Threat Model

KanbanAI is a local desktop application designed for individual developers. The security model reflects this use case.

What We Protect Against

Threat Protection
Programmer errors Basic input validation (absolute paths, no .. traversal)
Shell injection shell: false on all spawn() calls
Runaway processes Timeout on git commands (30 seconds)

What We Don't Protect Against

Threat Why Not Protected
Local attackers If someone has local filesystem access, they already own the machine
TOCTOU attacks Requires local access + microsecond timing
Symlink attacks Requires local filesystem access
Multi-tenant isolation Single-user application

Rationale

For a local desktop application:

  • The user owns the machine and the data
  • Network exposure is limited to localhost
  • There are no untrusted users to isolate
  • An attacker with local access could simply rm -rf the data directly

Defense-in-depth measures that make sense for web services (elaborate path validation, TOCTOU mitigations, security contexts) add complexity without meaningful protection in this context.

Implementation

Git Command Execution

All git commands use:

spawn('git', args, { cwd, shell: false })
  • shell: false prevents shell metacharacter interpretation
  • Commands are hardcoded, not built from user input
  • 30-second timeout prevents hung processes

Path Validation

Basic validation to prevent programmer errors:

function validatePath(path: string): void {
    if (!isAbsolute(path)) throw new Error('Path must be absolute')
    if (path.includes('..')) throw new Error('Path traversal not allowed')
}

Directory Boundaries

Worktree operations are constrained to project directories:

function isWithinRoot(targetPath: string, rootPath: string): boolean {
    return resolve(targetPath).startsWith(resolve(rootPath) + '/')
}

When to Reconsider

Add stronger security measures if:

  • Exposing the API to network (not localhost)
  • Adding multi-user support
  • Accepting plugins/extensions from untrusted sources
  • Processing untrusted external data

Reporting Issues

For security-relevant bugs, please open a GitHub issue. Since this is a local desktop application, most "security" issues are better classified as bugs or feature requests.


Last Updated: 2026-01-03

There aren’t any published security advisories