Skip to main content

LanaLyzer Banner

LanaLyzer

License: AGPL v3 Python Version uv PyPI version Build Status Code Coverage Contributions Welcome MCP Compatible

LanaLyzer is an advanced Python static taint analysis tool designed to detect potential security vulnerabilities in Python projects. It identifies data flows from untrusted sources (Sources) to sensitive operations (Sinks) and provides detailed insights into potential risks.

📖 Table of Contents

✨ Features

  • Taint Analysis: Tracks data flows from sources to sinks.
  • Customizable Rules: Define your own sources, sinks, sanitizers, and taint propagation paths.
  • Static Analysis: No need to execute the code.
  • Extensibility: Easily add new rules for detecting vulnerabilities like SQL Injection, XSS, and more.
  • Detailed Reports: Generate comprehensive analysis reports with vulnerability details and mitigation suggestions.
  • Command-Line Interface: Run analyses directly from the terminal.

🚀 Getting Started

Prerequisites

  • Python 3.10 or higher
  • uv (recommended for dependency management)

Steps

  1. Clone the repository:

    git clone https://github.com/mxcrafts/lanalyzer.git
    cd lanalyzer
    
  2. Create a virtual environment and install dependencies:

    uv venv
    uv pip sync pyproject.toml --all-extras
    
  3. Activate the virtual environment:

    source .venv/bin/activate
    

💻 Usage

Basic Analysis

Run a taint analysis on a Python file:

lanalyzer --target <target_file> --config <config_file> --pretty --output <output_file> --log-file <log_file> --debug

Command-Line Options

  • --target: Path to the Python file or directory to analyze.
  • --config: Path to the configuration file.
  • --output: Path to save the analysis report.
  • --log-file: Path to save the log file.
  • --pretty: Pretty-print the output.
  • --detailed: Show detailed analysis statistics.
  • --debug: Enable debug mode with detailed logging.

Example

lanalyzer --target example.py --config rules/sql_injection.json --pretty --output example_analysis.json --log-file example_analysis.log --debug

🤝 Contributing

We welcome contributions! Please see the CONTRIBUTING.md file for guidelines on how to contribute to LanaLyzer.

📄 License

This project is licensed under the GNU Affero General Public License v3.0. See the LICENSE file for details.

📞 Contact

For questions or support, please open an issue on GitHub or email us at lanalyzer@example.com.

🔄 Recent Updates

  • Enhanced context analysis and call chain building: Fixed issues with source and sink association in taint analysis, prioritizing source finding within the same function to avoid incorrectly linking to identical statements in other functions.

🧩 Model Context Protocol (MCP) Support

LanaLyzer now supports the Model Context Protocol (MCP), allowing it to run as an MCP server that AI models and tools can use to access taint analysis functionality through a standard interface.

Installing MCP Dependencies

If you're using pip:

pip install "lanalyzer[mcp]"

If you're using uv:

uv pip install -e ".[mcp]"

Starting the MCP Server

There are multiple ways to start the MCP server:

  1. Using Python Module:
# View help information
python -m lanalyzer.mcp --help

# Start the server
python -m lanalyzer.mcp run --host 0.0.0.0 --port 8000 --debug
  1. Using the lanalyzer Command-Line Tool:
# View help information
lanalyzer mcp --help

# Start the server
lanalyzer mcp run --host 0.0.0.0 --port 8000 --debug

# Use FastMCP development mode (if applicable, verify this command)
# lanalyzer mcp dev

MCP Server Features

The MCP server provides the following core functionalities:

  1. Code Analysis: Analyze Python code strings for security vulnerabilities
  2. File Analysis: Analyze specific files for security vulnerabilities
  3. Path Analysis: Analyze entire directories or projects for security vulnerabilities
  4. Vulnerability Explanation: Provide detailed explanations of discovered vulnerabilities
  5. Configuration Management: Get, validate, and create analysis configurations

Integration with AI Tools

The MCP server can be integrated with AI tools that support the MCP protocol:

# Using the FastMCP client
from fastmcp import FastMCPClient

# Create a client connected to the server
client = FastMCPClient("http://127.0.0.1:8000")

# Analyze code
result = client.call({
    "type": "analyze_code",
    "code": "user_input = input()\nquery = f\"SELECT * FROM users WHERE name = '{user_input}'\"",
    "file_path": "example.py",
    "config_path": "/path/to/config.json"
})

# Print analysis results
print(result)

Using in Cursor

If you're working in the Cursor editor, you can directly ask the AI to use LanaLyzer to analyze your code:

Please use lanalyzer to analyze the current file for security vulnerabilities and explain the potential risks.

MCP Command-Line Options

The MCP server supports the following command-line options:

  • --debug: Enable debug mode with detailed logging
  • --host: Set the server listening address (default: 127.0.0.1)
  • --port: Set the server listening port (default: 8000)

Advanced MCP Usage

Custom Configurations

You can use the get_config, validate_config, and create_config tools to manage vulnerability detection configurations:

# Get the default configuration
config = client.call({
    "type": "get_config"
})

# Create a new configuration
result = client.call({
    "type": "create_config",
    "config_data": {...},  # Configuration data
    "config_path": "/path/to/save/config.json"  # Optional
})

Batch File Analysis

Analyze an entire project or directory:

result = client.call({
    "type": "analyze_path",
    "target_path": "/path/to/project",
    "config_path": "/path/to/config.json",
    "output_path": "/path/to/output.json"  # Optional
})

Metadata

Release files for lanalyzer 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for lanalyzer 0.1.0
File Interpreter ABI Platform Actions
lanalyzer-0.1.0-py3-none-any.whl Python 3 none any Details for lanalyzer-0.1.0-py3-none-any.whl

Release files / lanalyzer-0.1.0-py3-none-any.whl

Download URL lanalyzer-0.1.0-py3-none-any.whl
Size 126.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
36ddf155127c411e0f72be116d07741ac3236d90a15ebcd0dd6de6cc94606305
BLAKE2b-256 checksum
How to use checksums
d5165faf117f01976e399391e4a46a3b7c286c131dcd140c3cd2b62916d171b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.17

Security for lanalyzer 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

1 release file No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page