This change log includes updates to detectors made in August 2026.
csharp-sql-injection-hb
Request.Params.Get() and Request.Cookies[...].Value as user-controlled input sourcesOdbcCommand, OleDbCommand, SqlDataAdapter, and string concatenation/interpolation in CommandText assignments as vulnerable sinksGetSqlStringCommand, ExecuteDataSet), NHibernate (CreateSQLQuery), EF Core (FromSqlRaw), and MySqlHelper execution methods as additional sinkscsharp-csrf-disabled-ide
IgnoreAntiforgeryTokenAttribute can be applied:
go-path-traversal-hb
url.PathUnescape), string-manipulated request paths (strings.TrimPrefix), and multipart form file uploads (FormFile().Filename) as user-controlled input sourcesos.ReadFile and os.WriteFile as vulnerable file operation sinksfilepath.Join, filepath.Clean, and filepath.Dir as standalone sanitizers (they do NOT prevent path traversal on their own); only filepath.Base is retained as a true sanitizerrule-hardcoded-credentials
amqp.Dial, nats.Connect, redis.DialURL, url.Parse, and SetURLfmt.Sprintfnkey, seed, SecretKey, AuthKey, connStr, dsn, pw, keyAuth, and authHeaderCsrfConfigurer is stored in a local variable before .disable() is called, rather than chained inlinejavascript-csrf-missing-protection
csrfPrevention: falsedoubleCsrf(csrf-csrf) configurations where state-changing HTTP methods are excluded from CSRF enforcement via ignored methodsjavascript_llm_unbound_consumption
ChatOpenAI, ChatAnthropic, ChatBedrock, ChatGoogleGenerativeAI, ChatMistralAI), Vercel AI SDK (generateText, streamText, generateObject, streamObject), Groq, Together AI, AWS Bedrock Converse API, Google @google/genai, Ollama, Mistral, Genkit, and Cohere v2max_completion_tokens (OpenAI o-series) and max_output_tokens (OpenAI Responses API) as valid output capsnum_predict as an output cap for Ollamakotlin-csrf-protection
AbstractHttpConfigurer::disable method reference used in Spring Security 6 servlet configurations.disable() is calledkotlin-path-traversal-hb
outputStream(), inputStream(), writeText(), writeBytes(), readBytes(), newInputStream(), newOutputStream(), and FileOutputStream() as vulnerable output pointsPartData.FileItem.originalFileName and Spring @RequestParam, @PathVariable, and @RequestHeader annotated parameters as user-controlled input sourcesFilenameUtils.normalize() renders as inline codekotlin-insecure-bean-validation
kotlin-jwt-none-algorithm
kotlin-incorrect-password-hashing
move_uploaded_file(), DirectoryIterator, and SplFileObject as vulnerable file operation output pointsrealpath(), pathinfo($path, PATHINFO_BASENAME), and str_replace() as safe path-neutralization functions, so properly validated paths are no longer flaggedZipArchive, PharData, Laravel Storage, realpath(), and Storage::path() render as inline codepython-hardcoded-credentials-for-library-ide
CSRF variants, X-Shopify-Access-Token, DD-APPLICATION-KEY, access-token) and Requests library header patternspython-llm-unbounded-consumption
max_completion_tokens as a valid token-limit parameter for OpenAI-compatible clients, so calls with a cap already set are no longer flaggeduntrusted-data-in-django-response
html.escape(), bleach.clean(), markupsafe.escape(), and Django's format_html() are now recognized as XSS mitigations, so Django responses using these functions are no longer flaggedpython-no-sql-injection
$COLLECTION.$METHOD(...) matching that caused O(n) full taint-path evaluation per sanitizer checkdict.get, dict()) and 8 duplicate source entries, reducing rule YAML lines while preserving all 32 detectionspython-cdk-s3-server-access-logs-disabled
s3.Bucket(...) calls (via from aws_cdk import aws_s3 as s3) that omit server_access_logs_bucket, in addition to the direct import formpython-path-traversal-hb
codecs.open() is now flaggedrequest.getlist() are now covered through consolidated request-method source trackingpython-prompt-injection-vulnerability
.data, .body, args.to_dict(), and cookies.get(), as well as InferenceClient.text_generation() as a vulnerable output pointpython-insecure-random
response.set_cookie()dangerous-template-string
PromptTemplate.from_template, the PromptTemplate constructor, ChatPromptTemplate.from_template, and ChatPromptTemplate.from_messages when Jinja2 template format is enabledFile.expand_path, File.basename, start_with?, and ../ now render as inline code in the customer-facing messagerequest.path_parameters, request.query_parameters, and request.GET, and added Rails send_file path sink detectioncleanpath start_with? prefix validation to prevent false positives on validated pathsscala-log-injection-ide
scala-no-sql-injection-hb
BSONDocument, BSONDocument.parse, BasicDBObject, Document, and Json.parse as NoSQL injection output pointsscala-path-traversal-hb
Akka HTTP path (Segment) and parameter() directives as input sources, Files.newOutputStream/newInputStream as sinks, and Play Framework sendPath()/sendFile() as traversal-vulnerable output pointsgetQueryString as a focused HTTP input sourcescala-simple-db-query-injection
scala-sql-injection
getQueryString(), body, and headers.get() without requiring a specific Action handler structureregex-injection-dos-ts-rule
.toString(), bracket access, Express 3.x req.param(), and variable assignment flows as paths where user-controlled input can trigger catastrophic backtrackingtypescript-cross-site-scripting-ide
html, wrap, append, prepend, after, before, replaceWith, and globalEval are now flagged as XSS output points, along with jQuery selector injectionwindow.location, document.cookie, jQuery attr, axios.get, and array methods including split, slice, join, sort, filter, forEach, and map are now recognized as user-controlled input sources or propagatorsRes.render and Object.assign to res.locals are flagged as server-side XSS output pointstypescript-csrf-missing-protection-ide
csrfPrevention: falsedoubleCsrf(csrf-csrf) and csurf middleware configured to skip validation on state-changing HTTP methods (POST, PUT, PATCH, DELETE)typescript-server-side-request-forgery-ide
net.Socket.connect() when the destination host is user-controlledpage.setContent(), page.evaluate(), and page.evaluateOnNewDocument(), where user-controlled content is injected into a headless browser contextrequest() invocation and needle() for user-controlled URLsxml2json-xxe-ts-rule
parser.parse(), parser.write()) and libxml (parseXml() with external entity expansion enabled), in addition to the existing xml2json.toJson() coveragecsharp_sql_injection rule across all Semgrep use cases and environments due to 900+ false positives caused by cross-file data-flow limitations, with minimal impact on recall