Files

5.0 KiB

API Reference: Serverless Function Injection Detection Agent

Overview

Detects code injection vulnerabilities in AWS Lambda functions by scanning function code for dangerous sinks (eval, exec, os.system, child_process.exec), auditing Lambda layers for external account dependencies, identifying IAM privilege escalation paths through overprivileged execution roles, and monitoring CloudTrail for suspicious function modifications. For authorized security assessments only.

Dependencies

Package Version Purpose
boto3 >=1.26 AWS API access for Lambda, IAM, CloudTrail

CLI Usage

# Full assessment with code scanning
python agent.py --region us-east-1 --scan-code --cloudtrail-days 14 --output report.json

# Scan specific functions only
python agent.py --functions payment-processor auth-handler --scan-code --output report.json

# Quick assessment without code download (IAM, layers, CloudTrail only)
python agent.py --region us-west-2 --output quick_report.json

Arguments

Argument Required Description
--region No AWS region to assess (default: us-east-1)
--functions No Specific function names to scan (default: all functions in region)
--scan-code No Download and scan function deployment packages for injection sinks
--cloudtrail-days No Number of days of CloudTrail history to search (default: 7)
--output No Output file path (default: serverless_injection_report.json)

Key Functions

enumerate_functions(lambda_client)

Lists all Lambda functions with runtime, handler, execution role, layers, environment variable names, and function URL configuration. Flags functions with secrets in environment variables.

get_event_source_mappings(lambda_client)

Enumerates all event source mappings (SQS, DynamoDB Streams, Kinesis, Kafka, MQ) to identify injection entry points where untrusted data enters function handlers.

download_and_scan_function(lambda_client, function_name, runtime_family, work_dir)

Downloads the function deployment package, extracts it, and scans source files for injection sinks using regex patterns. Checks whether event data accessors (event[, event.get() appear in the context around each sink to assess data flow confidence.

audit_layers(lambda_client, functions)

Identifies Lambda layers from external AWS accounts and high-impact layers shared across 5+ functions. External layers can intercept function execution or override runtime dependencies.

detect_privilege_escalation_paths(iam_client, functions)

Audits execution roles for dangerous permissions (iam:PassRole, lambda:UpdateFunctionCode, sts:AssumeRole) and administrative policies. Any function with UpdateFunctionCode + PassRole is a privilege escalation vector.

check_cloudtrail_for_modifications(cloudtrail_client, days_back)

Searches CloudTrail for UpdateFunctionCode, UpdateFunctionConfiguration, PublishLayerVersion, and CreateFunction events. Flags modifications outside CloudFormation/console, role changes, layer additions, and off-hours activity.

check_function_url_security(lambda_client, functions)

Identifies Lambda function URLs with AuthType=NONE that are publicly accessible without authentication.

Injection Pattern Coverage

Python Sinks

Pattern CWE Severity
eval() CWE-95 Critical
exec() CWE-95 Critical
os.system() CWE-78 Critical
os.popen() CWE-78 Critical
subprocess.*(shell=True) CWE-78 Critical
pickle.loads() CWE-502 High
yaml.load() without SafeLoader CWE-502 High
jinja2.Template() with event data CWE-1336 High
SQL via f-string with event data CWE-89 Critical

Node.js Sinks

Pattern CWE Severity
eval() CWE-95 Critical
new Function() CWE-95 Critical
child_process.exec() CWE-78 Critical
child_process.execSync() CWE-78 Critical
vm.runInNewContext() CWE-95 Critical
vm.runInThisContext() CWE-95 Critical
Template literal command injection CWE-78 Critical

Output Schema

{
  "report_type": "Serverless Function Injection Assessment",
  "generated_at": "ISO-8601 timestamp",
  "summary": {
    "functions_analyzed": 0,
    "event_source_mappings": 0,
    "total_findings": 0,
    "critical_findings": 0,
    "high_findings": 0,
    "injection_sinks_found": 0,
    "layer_issues": 0,
    "escalation_paths": 0,
    "suspicious_modifications": 0
  },
  "findings": [
    {
      "category": "code_injection|layer_security|privilege_escalation|suspicious_modification|function_url",
      "function_name": "",
      "severity": "critical|high|medium",
      "description": ""
    }
  ],
  "functions": [],
  "event_source_mappings": [],
  "cloudtrail_events": []
}

Exit Codes

Code Meaning
0 No critical findings
1 Critical injection sinks or privilege escalation paths detected