Quickstart

From the Dashboard, click the Start New Scan button to begin configuring your scan. You’ll be directed to the scan configuration page.

Scan Settings

Basic Configuration

Field
Description

Scan Name

A custom name to identify your scan. Example: Mithra LLM Demo API

URL

The full endpoint of the LLM API you want to scan. Example: https://demo.mithrasec.com/api/chat

Configure the Request

Field
Description

Request Template

A template where $ATTACK will be replaced with the payload. (If POST) Example: {"role":"user","content":"$ATTACK"} or UserInput: $ATTACK

Configure how your requests will be sent to the API. The request template defines how the payload ($ATTACK) is inserted into the request.

Default Template

Just sends $ATTACK as the full request body.

$ATTACK

JSON Template Example

For APIs expecting JSON input:

{
  "messages": [
    {
      "role": "user",
      "content": "$ATTACK"
    }
  ]
}

Text Template Example

For APIs expecting plain text input:

userInput: $ATTACK

HTTP Method

Select the HTTP method used by your LLM endpoint (e.g., POST, GET)

Headers

Add any necessary headers, such as authentication tokens (e.g., Authorization: Bearer <token>)

🔍 Raw Request Preview

The Raw Request Preview gives you a real-time visualization of the HTTP request that Mithra will send to the target LLM API during scanning.

This helps verify your configuration before starting the scan and ensures that the $ATTACK placeholder is correctly placed within the request structure.


🧪 What is $ATTACK?

$ATTACK is a special placeholder used by Mithra to inject test payloads dynamically during the scan. It will be replaced with various crafted strings designed to detect vulnerabilities like:

  • Prompt Injection

  • Jailbreak Attempts

  • Sensitive Data Leaks

  • Response Manipulation


📄 Example

If you configure your request like this:

{
  "role": "user",
  "content": "$ATTACK"
}

And set the endpoint to:

https://api.example.com/chat

Mithra will display:

POST https://api.example.com/chat

{
  "role": "user",
  "content": "$ATTACK"
}

Each payload replaces $ATTACK during execution.


📝 Notes

  • The preview is based on the values you enter in the Request Configuration section.

  • You can inspect it to confirm:

    • The payload is injected in the correct location.

    • Headers and HTTP method are correct.

    • The request body format matches the API requirements.

Analyzer Configuration

The Analyzer Configuration defines how Mithra extracts and analyzes the response from the LLM API to determine if a vulnerability exists.

This is useful when your API responses are complex or deeply nested, and you only want to inspect a specific portion of the output (e.g., the model's actual response text).


🧩 JSON Response Field

Specify which part of the JSON response should be used as the model output for analysis. You can provide:

✅ Simple Field Name

Use a single key from the root level of the response JSON.

message

✅ Nested Field Path

Use dot notation to specify nested fields.

response.content

✅ JSONPath Expression

Start with $ to use full JSONPath syntax for complex responses.

$.choices[0].message.content

📌 Examples

Example 1: Simple JSON

{
  "message": "Hello, how can I help you?"
}

Field:

message

Example 2: Nested JSON

{
  "response": {
    "content": "I'm your AI assistant."
  }
}

Field:

response.content

Example 3: OpenAI-style Response

{
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": "Sure, here's the information you asked for..."
      }
    }
  ]
}

Field:

$.choices[0].message.content

🛠️ Best Practices

  • JSONPath is ideal when working with APIs like OpenAI, Claude, or Mistral that return structured outputs.

⚙️ Advanced Settings

The Advanced Settings section provides greater control over how Mithra interacts with the target LLM API. These options are useful for customizing performance, handling rate limits, and bypassing specific status codes during scanning.


⏱️ Request Timeout (seconds)

Sets the maximum duration (in seconds) to wait for a response from the target API before aborting the request.

  • Default: 20

  • Increase this value for slower endpoints or large LLM responses.


🌐 Proxies

Configure HTTP/HTTPS proxies for routing requests.

  • Accepts a dictionary format:

{
  "http": "http://127.0.0.1:8080",
  "https": "http://127.0.0.1:8080"
}
  • Leave empty {} if you don’t want to use a proxy.

This is especially helpful for:

  • Intercepting traffic via tools like Burp Suite

  • Testing from specific IPs or geo-locations


📉 Rate Limit Codes

Specify a list of HTTP status codes that indicate rate limiting (e.g., 429 Too Many Requests).

  • Default: [429]

  • When encountered, Mithra can pause, retry, or skip depending on your configuration.

This helps avoid overloading LLM APIs with strict rate limits.


🚫 Skip Codes

List of HTTP status codes that Mithra should ignore entirely during scans.

  • Example: [404, 403]

  • These responses will be skipped from analysis and not included in scan results.

Use this to filter out known or irrelevant error responses.

Last updated