KunLun-M

September 11, 2026 · View on GitHub

中文 | English

KunLun-M

GitHub release license Python 3.13

KunLun-M(昆仑镜) is an open-source static code security analysis system. It builds an AST graph from source code and performs taint analysis to detect vulnerabilities.

  • 14 languages: PHP / JavaScript / TypeScript / Python / Java / Go / Ruby / Rust / C / C++ / C# / Kotlin / Lua / Solidity
  • AST graph engine: Builds a full program graph (call graph, data flow, AST structure) for taint tracking
  • CLI / Console / Web three modes
  • Built-in AI Agent skill: One-click integration with Codex / Claude Code / Hermes etc.

Quick Start

# Install
git clone https://github.com/LoRexxar/Kunlun-M.git && cd Kunlun-M
pip install -r requirements.txt
cp Kunlun_M/settings.py.bak Kunlun_M/settings.py

# Init database
python kunlun.py init

# Scan
python kunlun.py scan -t /path/to/project

# Scan with specific language
python kunlun.py scan -t /path/to/project -lan php

# Export HTML report
python kunlun.py scan -t /path/to/project -f html -o report.html

# Web dashboard
python kunlun.py web -p 9999

CLI Commands

python kunlun.py <command> [args]

Core Commands

CommandDescription
initInitialize / migrate database
resetReset database (clear scan data, TaintChain, legacy ResultFlow, workspace)
scan -t <target>Scan target (file, directory, or archive)
consoleInteractive console with graph REPL
web [-p 9999]Web dashboard with API
analyzeAST graph secondary analysis
export-project -p <project>Export project to portable archive
import-project -f <archive>Import project from archive
export-neo4j -p <project>Export AST graph to Neo4j

Scan Parameters

ParameterDescription
-t/--targetTarget file/directory (required)
-lan/--languageLanguage (php/javascript/python/java/go/ruby/rust/c/cpp/csharp/kotlin/lua/solidity)
-r/--ruleSpecific rules (comma-separated CVI IDs, e.g. 1000,1001)
-f/--formatOutput format: csv (default) / json / md / html / xml
-o/--outputOutput file path
-tp/--tamperApply tamper (e.g. wordpress)
-b/--blackpathExclude paths (e.g. vendor,node_modules)
--without-vendorSkip SCA (vendor vulnerability) scan
--no-cacheForce rebuild graph (no cache)
-d/--debugDebug mode

Other Commands

CommandDescription
exportExport rules & tampers from database to files
generate ruleGenerate rule template file
generate tamperGenerate tamper template file
show rule [-k <key>]Show rules (filter by language/key)
show tamperShow tampers
search vendor <name> <version>Search vendor vulnerabilities
plugin <name>Run plugin (entrance_finder / php_unserialize_chain_tools)

Console Mode

Console mode provides an interactive REPL with graph traversal support:

python kunlun.py console

KunLun-M> scan
KunLun-M(scan)> set target /path/to/project
KunLun-M(scan)> run

KunLun-M> load 42
KunLun-M(result)> show vuls
KunLun-M(result)> graph           # Enter graph traversal REPL
>>> g.function.main.ownout.count
14

Graph Traversal REPL

Inside the graph REPL, use g as the entry point for Joern-style graph queries:

>>> g.function                          # All function nodes
>>> g.file.index                        # File named 'index'
>>> g.identifier.session.dfg            # Data flow from 'session'
>>> g.function.main.ownout              # AST children of main
>>> g.identifier.input.uses             # Functions using 'input'
>>> g.function.exec.shortest_path      # Shortest path to 'exec'

See docs/graph-traversal.md for the full API reference.

Web Dashboard

python kunlun.py web -p 9999

Web mode includes:

  • Dashboard: Task management, project overview, scan results
  • Graph Analysis: Interactive Cytoscape.js graph visualization (4 layouts)
  • API: Token-authenticated REST API for automation

Main API Endpoints

POST   /api/task/create                   Create scan task
POST   /api/task/create/start             Create + auto-start scan
GET    /api/task/<task_id>/status         Task status
GET    /api/task/list                     Task list
GET    /api/task/<task_id>/result         Scan results
GET    /api/task/<task_id>/taintchain     Taint chain data
GET    /api/rule/list                     Rule list
GET    /api/graph/query                   AST graph query
GET    /api/graph/subgraph                Subgraph extraction (for visualization)
GET    /api/graph/chain_subgraph          Taint chain subgraph
GET    /api/graph/node_vulns             Node-associated vulnerabilities

Configure API_TOKEN in Kunlun_M/settings.py for API authentication.

Data Export & Import

Project Archive

Export a complete project (database records + graph files) as a portable .tar.gz:

python kunlun.py export-project -p nodejs
python kunlun.py import-project -f kunlun-export-nodejs-*.tar.gz [--force]

Neo4j Graph Export

Export AST graphs to Neo4j for advanced Cypher queries:

python kunlun.py export-neo4j -p nodejs --clean
python kunlun.py export-neo4j -s 42 --neo4j-uri bolt://host:7687

See docs/data-export.md for full documentation.

AI Agent Integration

If you're using an AI Agent (Codex / Claude Code / Hermes etc.), send:

Download https://github.com/LoRexxar/Kunlun-M.git and load its skill (kunlun-m-general).

The agent will auto-detect skills/kunlun-m-general/ and follow the docs to initialize and scan.

See docs/skill_kunlunm_general.md for scripted workflows.

Supported Languages

LanguageSemantic AnalysisGraph Engine
PHP
JavaScript
TypeScript
Python
Java
Go
Ruby
Rust
C
C++
C#
Kotlin
Lua
SolidityBasic

Plugins

PHP Deserialization Chain Finder

Automatically discovers PHP deserialization chains and generates PoC files:

python kunlun.py plugin php_unserialize_chain_tools -t /path/to/php/project

Entrance Finder

Quickly finds potential PHP entry pages in large codebases:

python kunlun.py plugin entrance_finder -t /path/to/php/project -l 3

Development

Rule Development

Rules follow the convention rules/{language}/CVI_{id}.py. See rules/rule.template for a template.

Architecture

core/
├── __init__.py          CLI entry, subcommand dispatch
├── scanner.py           Graph-based scan engine (build graph → taint analysis)
├── graph/
│   ├── graph_pipeline.py    AST → igraph graph builder
│   ├── graph_query_builder.py  6 query methods (overview/file/function/trace/search/subgraph)
│   ├── graph_io.py          Graph persistence (GraphMLZ)
│   ├── node_edge_schema.py  12 node types, 9 edge types
│   └── workspace.py         Scan workspace management
├── import_export.py     Project archive export/import
├── neo4j_export.py      igraph → Neo4j export
├── console.py           Interactive console + graph REPL
└── engine.py            Thin re-export layer

web/
├── index/               Models, dashboard pages
├── api/                 REST API (session + token auth)
└── dashboard/           Web UI (templates + controllers)

Documentation

Changelog

docs/changelog.md

Stargazers

KunLun-M is part of the 404Team StarLink Project.

Contributors

Core Developer:

Important Contributors:

Contributors:

License

MIT License