Skip to content

codeql: close java/http-response-splitting #504-#518 (Task 8) - #48

Merged
natechadwick-intsof merged 1 commit into
mainfrom
codeql/http-response-splitting-2
Aug 15, 2026
Merged

codeql: close java/http-response-splitting #504-#518 (Task 8)#48
natechadwick-intsof merged 1 commit into
mainfrom
codeql/http-response-splitting-2

Conversation

@natechadwick-intsof

Copy link
Copy Markdown
Collaborator

Summary

Closes 15 CodeQL java/http-response-splitting alerts (#504-#518) with runtime CR/LF strips + path-level residuals.

Runtime strips (defense in depth)

Alert File Fix
#518 PSSecurityFilter Set-Cookie session id stripAllLineBreaks
#517 PSAppServlet outputHeaders stripAllLineBreaks on key+value
#516 PSPropFindMethod Content-Location stripAllLineBreaks on URI
#515 PSLockMethod Lock-Token stripAllLineBreaks on virtual path
#513 PSTemplateServlet Content-Disposition stripAllLineBreaks on templateName
#504-#511 8 delivery-tier XSRF-TOKEN sinks inline replaceAll("[\\r\\n]", "") on cookie value before setHeader

PSTemplateInfo (#512) and PSSiteImportLogViewer (#514) already carried strips.

Path-level residuals (15 files)

GHAS does not model stripAllLineBreaks as a sanitizer — the two pre-existing stripped sinks remain flagged on main — and ignores // codeql comments. All 15 files are added to paths-ignore in .github/codeql/codeql-config.yml with 15 matching suppressions.md rows, per the PR #33/#35/#36 convention.

Verification

python3 scripts/verify-suppressions.py  # PASS, 0 warnings
./mvn-env.sh compile -pl system,projects/sitemanage,<8 delivery modules> -am -DskipTests  # BUILD SUCCESS

Notes

  • No 004 reference for this rule family; standard CWE-113 strip-before-write pattern.
  • All runtime strips remain in code; paths-ignore only affects GHAS alert attribution.
  • Per AGENTS.md, Version.properties was not modified.

15 alerts, all fixed with runtime CR/LF strips + path-level residuals:

Runtime strips (defense in depth):
- PSSecurityFilter Set-Cookie session id: stripAllLineBreaks
- PSAppServlet outputHeaders: stripAllLineBreaks on key+value
- PSPropFindMethod Content-Location: stripAllLineBreaks on URI
- PSLockMethod Lock-Token: stripAllLineBreaks on virtual path
- PSTemplateServlet Content-Disposition: stripAllLineBreaks on name
- 8 delivery-tier XSRF-TOKEN sinks: inline replaceAll CR/LF strip on
  cookie value before setHeader

GHAS does not model stripAllLineBreaks as a sanitizer (PSTemplateInfo
and PSSiteImportLogViewer already carried strips and remain flagged on
main), so all 15 files are added to paths-ignore in codeql-config.yml
+ 15 suppressions.md rows, per the PR #33/#35/#36 convention.

No 004 reference for this rule family; CWE-113 strip-before-write
pattern applied. verify-suppressions.py: PASS (0 warnings).

# Please enter the commit message for your changes. Lines starting
# with '#' will be kept; you may remove them yourself if you want to.
# An empty message aborts the commit.
#
# interactive rebase in progress; onto 76f4ae3
# Last command done (1 command done):
#    pick 3c2afc1333 codeql: close java/http-response-splitting #504-#518 (Task 8)
# No commands remaining.
# You are currently rebasing branch 'codeql/http-response-splitting-2' on '76f4ae3e0f'.
#
# Changes to be committed:
#	modified:   .github/codeql/codeql-config.yml
#	modified:   CHANGELOG.md
#	modified:   deliverytiersuite/delivery-tier-suite/comments/src/main/java/com/percussion/delivery/comments/services/PSCommentsRestService.java
#	modified:   deliverytiersuite/delivery-tier-suite/feeds/src/main/java/com/percussion/delivery/feeds/services/PSFeedService.java
#	modified:   deliverytiersuite/delivery-tier-suite/forms/src/main/java/com/percussion/delivery/forms/impl/PSFormRestService.java
#	modified:   deliverytiersuite/delivery-tier-suite/integrations/src/main/java/com/percussion/delivery/integrations/IntegrationsRestService.java
#	modified:   deliverytiersuite/delivery-tier-suite/membership/src/main/java/com/percussion/membership/services/impl/PSMembershipRestService.java
#	modified:   deliverytiersuite/delivery-tier-suite/metadata/src/main/java/com/percussion/delivery/metadata/impl/PSMetadataExtractorRestService.java
#	modified:   deliverytiersuite/delivery-tier-suite/metadata/src/main/java/com/percussion/delivery/metadata/impl/PSMetadataRestService.java
#	modified:   deliverytiersuite/delivery-tier-suite/polls/src/main/java/com/percussion/delivery/polls/services/PSPollsRestService.java
#	modified:   projects/sitemanage/src/main/java/com/percussion/pagemanagement/service/impl/PSTemplateServlet.java
#	modified:   system/servlet/src/com/percussion/webdav/method/PSLockMethod.java
#	modified:   system/servlet/src/com/percussion/webdav/method/PSPropFindMethod.java
#	modified:   system/src/main/java/com/percussion/servlets/PSAppServlet.java
#	modified:   system/src/main/java/com/percussion/servlets/PSSecurityFilter.java
#
@natechadwick-intsof
natechadwick-intsof merged commit 2282380 into main Aug 15, 2026
3 checks passed
@natechadwick-intsof
natechadwick-intsof deleted the codeql/http-response-splitting-2 branch August 15, 2026 00:23
@natechadwick-intsof

Copy link
Copy Markdown
Collaborator Author

Superseded by #50 (consolidated onto current main so the CHANGELOG.md / codeql-config.yml / suppressions.md conflicts no longer block merge). Closing this PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant