InsightAppSec

InsightAppSec

Category: DAST
License: Commercial

InsightAppSec is Rapid7’s Dynamic Application Security Testing platform designed for modern web applications.

The tool addresses security testing challenges introduced by complex JavaScript frameworks, single-page applications, and microservices architectures.

Key differentiators include the Universal Translator for crawling modern applications and Attack Replay functionality that enables developers to validate vulnerabilities independently.

What is InsightAppSec?

InsightAppSec approaches web application security testing with a focus on modern development practices.

Traditional DAST tools often struggle with JavaScript-heavy applications that render content dynamically and manage state client-side.

InsightAppSec’s Universal Translator normalizes traffic from various frameworks (React, Angular, Vue.js) into a consistent format for security testing.

The platform provides both cloud-hosted and on-premise scan engine options, accommodating organizations with different security requirements.

Integration with the broader Rapid7 Insight platform enables correlation with vulnerability management, SIEM, and incident response workflows.

Key Features

Universal Translator

The Universal Translator technology handles the complexity of modern web applications:

  • JavaScript Rendering: Executes JavaScript to discover dynamically generated content
  • Framework Normalization: Standardizes traffic from React, Angular, Vue.js, and other frameworks
  • State Management: Tracks application state changes during crawling
  • API Discovery: Identifies REST endpoints called by the application

This approach provides broader coverage than traditional crawlers that only process static HTML.

Attack Replay

Attack Replay addresses a common friction point between security and development teams.

When InsightAppSec identifies a vulnerability, it generates a replay package that developers can execute locally to verify the finding:

Attack Replay Package:
├── replay.har          # HTTP Archive with attack request
├── instructions.md     # Steps to reproduce
├── evidence/           # Screenshots and response data
└── remediation.md      # Fix guidance

Developers validate vulnerabilities without accessing the full scan report or understanding DAST tooling.

This reduces back-and-forth between teams and accelerates remediation.

Comprehensive Attack Coverage

InsightAppSec tests for 95+ vulnerability types organized by category:

CategoryExamples
InjectionSQL, LDAP, XPath, Command, Header
Cross-Site ScriptingReflected, Stored, DOM-based
AuthenticationSession fixation, weak credentials, brute force
AuthorizationIDOR, privilege escalation, access control
ConfigurationSecurity headers, SSL/TLS, information disclosure
Business LogicPrice manipulation, workflow bypass

Scan Management

The platform provides operational controls for enterprise deployments:

  • Scheduling: Run scans during off-peak hours
  • Blackout Windows: Prevent scanning during critical business periods
  • Incremental Scanning: Re-test only changed portions of applications
  • Traffic Control: Rate limiting to prevent performance impact
  • Parallel Scans: Multiple applications simultaneously

How to Use InsightAppSec

Creating a Scan Configuration

  1. Navigate to InsightAppSec in the Rapid7 Insight Platform
  2. Click “New App” and provide application details
  3. Configure the target URL and authentication
  4. Select scan template (Default, OWASP Top 10, PCI, etc.)
  5. Schedule or launch scan

Authentication Configuration

InsightAppSec supports multiple authentication methods:

Form-Based Login

Login URL: https://app.example.com/login
Username Field: #email
Password Field: #password
Submit Button: #login-btn
Success Indicator: Welcome, User

HTTP Basic Authentication

Username: scan_user
Password: ********
Realm: Application API

Bearer Token

Header: Authorization
Value: Bearer eyJhbGciOiJIUzI1...

Recorded Macro For complex multi-step authentication, record browser interactions using the Traffic Recorder.

API Configuration

# InsightAppSec REST API

# Get applications list
curl "https://us.api.insight.rapid7.com/ias/v1/apps" \
  -H "X-Api-Key: YOUR_API_KEY"

# Start a scan
curl -X POST "https://us.api.insight.rapid7.com/ias/v1/scans" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "app_id": "app-uuid-here",
    "scan_config_id": "config-uuid-here"
  }'

# Get scan status
curl "https://us.api.insight.rapid7.com/ias/v1/scans/{scan-id}" \
  -H "X-Api-Key: YOUR_API_KEY"

# Get vulnerabilities
curl "https://us.api.insight.rapid7.com/ias/v1/scans/{scan-id}/vulnerabilities" \
  -H "X-Api-Key: YOUR_API_KEY"

Integration

GitHub Actions

name: InsightAppSec Security Scan
on:
  push:
    branches: [main]
  schedule:
    - cron: '0 3 * * 0'  # Weekly Sunday 3 AM

jobs:
  dast-scan:
    runs-on: ubuntu-latest
    steps:
      - name: Start InsightAppSec Scan
        id: scan
        run: |
          SCAN_ID=$(curl -X POST "https://us.api.insight.rapid7.com/ias/v1/scans" \
            -H "X-Api-Key: ${{ secrets.RAPID7_API_KEY }}" \
            -H "Content-Type: application/json" \
            -d '{"app_id": "${{ vars.APP_ID }}", "scan_config_id": "${{ vars.CONFIG_ID }}"}' \
            | jq -r '.id')
          echo "scan_id=$SCAN_ID" >> $GITHUB_OUTPUT

      - name: Wait for Scan Completion
        run: |
          while true; do
            STATUS=$(curl -s "https://us.api.insight.rapid7.com/ias/v1/scans/${{ steps.scan.outputs.scan_id }}" \
              -H "X-Api-Key: ${{ secrets.RAPID7_API_KEY }}" | jq -r '.status')
            echo "Scan status: $STATUS"
            if [ "$STATUS" = "COMPLETE" ] || [ "$STATUS" = "FAILED" ]; then break; fi
            sleep 120
          done

      - name: Check for Critical Vulnerabilities
        run: |
          VULNS=$(curl -s "https://us.api.insight.rapid7.com/ias/v1/scans/${{ steps.scan.outputs.scan_id }}/vulnerabilities" \
            -H "X-Api-Key: ${{ secrets.RAPID7_API_KEY }}")

          CRITICAL=$(echo "$VULNS" | jq '[.data[] | select(.severity == "HIGH")] | length')

          if [ "$CRITICAL" -gt 0 ]; then
            echo "Found $CRITICAL high severity vulnerabilities"
            exit 1
          fi

GitLab CI

insightappsec:
  stage: security
  variables:
    RAPID7_REGION: us
  script:
    - |
      # Trigger scan
      SCAN_ID=$(curl -X POST "https://${RAPID7_REGION}.api.insight.rapid7.com/ias/v1/scans" \
        -H "X-Api-Key: $RAPID7_API_KEY" \
        -H "Content-Type: application/json" \
        -d '{"app_id": "'$APP_ID'", "scan_config_id": "'$CONFIG_ID'"}' \
        | jq -r '.id')

      echo "Started scan: $SCAN_ID"

      # Poll for completion
      while true; do
        STATUS=$(curl -s "https://${RAPID7_REGION}.api.insight.rapid7.com/ias/v1/scans/$SCAN_ID" \
          -H "X-Api-Key: $RAPID7_API_KEY" | jq -r '.status')
        [ "$STATUS" = "COMPLETE" ] && break
        [ "$STATUS" = "FAILED" ] && exit 1
        sleep 60
      done

      # Export results
      curl "https://${RAPID7_REGION}.api.insight.rapid7.com/ias/v1/scans/$SCAN_ID/vulnerabilities" \
        -H "X-Api-Key: $RAPID7_API_KEY" -o scan-results.json
  artifacts:
    paths:
      - scan-results.json
  rules:
    - if: $CI_COMMIT_BRANCH == "main"
  allow_failure: true

Jenkins Pipeline

pipeline {
    agent any
    environment {
        RAPID7_API_KEY = credentials('rapid7-api-key')
    }
    stages {
        stage('DAST Scan') {
            steps {
                script {
                    def scanId = sh(
                        script: '''
                            curl -X POST "https://us.api.insight.rapid7.com/ias/v1/scans" \
                              -H "X-Api-Key: $RAPID7_API_KEY" \
                              -H "Content-Type: application/json" \
                              -d '{"app_id": "'"$APP_ID"'"}' | jq -r '.id'
                        ''',
                        returnStdout: true
                    ).trim()

                    timeout(time: 2, unit: 'HOURS') {
                        waitUntil {
                            def status = sh(
                                script: "curl -s 'https://us.api.insight.rapid7.com/ias/v1/scans/${scanId}' -H 'X-Api-Key: $RAPID7_API_KEY' | jq -r '.status'",
                                returnStdout: true
                            ).trim()
                            return status == 'COMPLETE'
                        }
                    }
                }
            }
        }
    }
}

Managed Application Security Service

Rapid7 offers a managed service option where their security team operates InsightAppSec on your behalf:

  • Initial application onboarding and configuration
  • Regular scan scheduling and monitoring
  • Vulnerability triage and prioritization
  • Remediation guidance and consultation
  • Monthly security posture reports

This option suits organizations lacking dedicated application security resources.

When to Use InsightAppSec

InsightAppSec works well for organizations with modern web applications built on JavaScript frameworks.

The Universal Translator handles complexity that trips up traditional DAST tools, while Attack Replay improves collaboration between security and development teams.

Consider InsightAppSec when you need:

  • Scanning of React, Angular, or Vue.js applications
  • Developer-friendly vulnerability validation workflow
  • Integration with broader Rapid7 security platform
  • Flexible deployment (cloud or on-premise scan engines)
  • Managed service option for limited security staff

Organizations already using Rapid7 products benefit from platform integration and unified reporting.

Teams with primarily traditional server-rendered applications may find simpler DAST tools sufficient.