feat(three-stage-scan): add split-sink fixtures the regex scan misses

This commit is contained in:
Marius Ciepluch
2026-09-04 11:49:44 +02:00
parent 818a0b10d3
commit fe300e6352
11 changed files with 198 additions and 2 deletions
@@ -0,0 +1,8 @@
#include <stdio.h>
#include <sqlite3.h>
void search(sqlite3 *db, char *term) {
char query[512];
snprintf(query, sizeof(query), "SELECT * FROM items WHERE title LIKE '%%%s%%'", term);
sqlite3_exec(db, query, 0, 0, 0); /* CWE-89 split-sink: query built on prior line (regex blind spot) */
}
@@ -0,0 +1,12 @@
package example;
import jakarta.servlet.http.HttpServletRequest;
import java.sql.Connection;
class SplitSinkServlet {
void search(HttpServletRequest request, Connection connection) throws Exception {
String term = request.getParameter("q");
String sql = String.format("select * from items where title like '%%%s%%'", term);
connection.createStatement().executeQuery(sql); // CWE-89 split-sink: sql built on prior line (regex blind spot)
}
}
@@ -0,0 +1,12 @@
// Split-sink SQL injection: query is built, then executed on the next line.
const express = require("express");
const app = express();
app.get("/search", (req, res) => {
const term = req.query.q;
const query = "select * from items where title like '%" + term + "%'";
db.query(query); // CWE-89 split-sink: query built on prior line (regex blind spot)
res.send("ok");
});
module.exports = app;
@@ -0,0 +1,11 @@
"""Split-sink SQL injection: query is built, then executed on the next line."""
from flask import Flask, request
app = Flask(__name__)
@app.get("/search")
def search(db):
term = request.args["q"]
query = "select * from items where title like '%" + term + "%'"
return db.execute(query) # CWE-89 split-sink: query built on prior line (regex blind spot)