CWE-93: CRLF Injection
Improper Neutralization of CRLF Sequences
The product uses CRLF (carriage return line feeds) as a special element, e.g. to separate lines or records, but it does not neutralize or incorrectly neutralizes CRLF sequences from inputs.
How it's found
CRLF Injection is typically found by tracing untrusted input from where it enters the system to the point where it is used without the check or neutralization this weakness describes, combining manual code review with dynamic testing.
Vulnerable vs. safe
owner: context.repo.owner,repo: context.repo.repo,run_id: ${{ github.event.workflow_run.id }},
return artifact.name == "pr"
owner: context.repo.owner,repo: context.repo.repo,artifact_id: matchPrArtifact.id,archive_format: 'zip',var artifacts = await github.actions.listWorkflowRunArtifacts({});var matchPrArtifact = artifacts.data.artifacts.filter((artifact) => {})[0];var downloadPr = await github.actions.downloadArtifact({});var fs = require('fs');fs.writeFileSync('${{github.workspace}}/pr.zip', Buffer.from(downloadPr.data));script: |
unzip pr.zipecho "pr_number=$(cat NR)" >> $GITHUB_ENV- name: 'Download artifact'uses: actions/github-scriptwith:- run: |runs-on: ubuntu-lateststeps:deploy:name: Deploy Previewjobs:The code could be modified to validate that the NR
file only contains a numeric value, or the code could
retrieve the PR number from a more trusted source.Consequences
- Modify Application Data
Mitigations
- Implementation: Avoid using CRLF as a special sequence.
- Implementation: Appropriately filter or quote CRLF sequences in user-controlled input.
Where this fits in a TurboPentest engagement
TurboPentest's agentic pentest is powerful and covers a broad range of issues automatically. This particular class is best confirmed in a manual IntegSec engagement, where human pentesters apply deeper methodology and a larger context window than any automated pass.
Frequently asked questions
What is CWE-93?
The product uses CRLF (carriage return line feeds) as a special element, e.g. to separate lines or records, but it does not neutralize or incorrectly neutralizes CRLF sequences from inputs.
How do you find CRLF Injection?
CRLF Injection is typically found by tracing untrusted input from where it enters the system to the point where it is used without the check or neutralization this weakness describes, combining manual code review with dynamic testing.
What is the impact of CWE-93?
Modify Application Data
Does TurboPentest test for CRLF Injection?
TurboPentest's agentic pentest is powerful and covers a broad range of issues automatically. This particular class is best confirmed in a manual IntegSec engagement, where human pentesters apply deeper methodology and a larger context window than any automated pass.
Related CWEs
Find these issues before an attacker does
TurboPentest runs an agentic AI pentest against your target and reports findings with proof, from $99 per target.
Start a $99 pentest