fix(CVE-2022-21587): add matchers-condition: and to prevent false positive detection#15621
Merged
pussycat0x merged 2 commits intoprojectdiscovery:mainfrom Mar 18, 2026
Conversation
Neo - Nuclei Template ReviewNo security issues found Highlights
Hardening Notes
Comment |
pussycat0x
approved these changes
Mar 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR Information
matchers-condition: andin Step 2What changed and why:
The second HTTP request block contained two independent matchers without an explicit
matchers-condition. Nuclei's default behavior evaluates multiple matchers with OR logic — meaning either matcher alone is sufficient to trigger a finding.wordstatusBecause
status: 200alone was sufficient, any host returning HTTP 200 at/forms/taint.jsp— regardless of body content — would incorrectly trigger a critical severity finding. The JSP execution proof (UUID) was effectively bypassed.Fix applied:
Added
matchers-condition: andto the second HTTP request block. Now both conditions must be satisfied simultaneously:061ea306-46ef-11f0-ad94-f3d183b0689a— proves JSP was uploaded AND executed by the server200Before:
After:
Template validation
Additional Details
False Positive —
nuclei -debugoutput before fix (host info redacted per contribution guidelines)The target below is not running Oracle EBS. It is a different application that returns
HTTP 200 + text/xmlfor all requests, including non-existent paths such as/forms/taint.jsp.Step 1 incorrectly passes because the upload endpoint returns a generic XML error response that still satisfies
text/xml + status 200. Step 2 then fires onstatus: 200alone — nuclei reports[CVE-2022-21587:status-2], confirming only the status matcher triggered and the UUID was never present in the response body.Step 1 — POST /OA_HTML/BneOfflineLOVService
Request:
Response:
Step 1 matcher result: PASS (incorrect) —
text/xmlpresent + status 200, but upload was rejected by the server.Step 2 — GET /forms/taint.jsp
Request:
Response:
Step 2 matcher result: PASS (incorrect) — UUID not in body, status 200 alone triggered the finding.
After fix — same host, false positive eliminated:
Summary:
/forms/taint.jspnuclei version: v3.7.0
Additional References: