Lambda Event Data in SQL String Concatenation
Event fields from AWS Lambda requests are concatenated or formatted into SQL strings without parameterization, enabling injection through crafted event payloads.
Preview example – GO
// VULNERABLE: Event data in SQL string concatenation
package main
import (
"database/sql"
"fmt"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
_ "github.com/go-sql-driver/mysql"
)
func handler(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
userID := request.PathParameters["userId"]
status := request.QueryStringParameters["status"]
sortBy := request.QueryStringParameters["sortBy"]
// Direct event data concatenation vulnerability
query := fmt.Sprintf("SELECT * FROM orders WHERE user_id = %s AND status = '%s' ORDER BY %s",
userID, status, sortBy)
db, _ := sql.Open("mysql", dsn)
defer db.Close()
rows, err := db.Query(query)
if err != nil {
return events.APIGatewayProxyResponse{StatusCode: 500}, err
}
defer rows.Close()
return events.APIGatewayProxyResponse{StatusCode: 200}, nil
}