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
This weakness is not covered by the automated black-box pentest. IntegSec pentesters cover it in a manual engagement.
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?
This weakness is not covered by the automated black-box pentest. IntegSec pentesters cover it in a manual engagement.
Related CWEs
Written and reviewed by
Michel Chamberland - Founder & CEO, IntegSec
CISSP, OSCP, OSCE, CEH, GIAC, CCSK · 20+ years in offensive security
Michel has spent 20+ years on offensive security teams including IBM X-Force Red and Trustwave SpiderLabs, leading penetration tests, red team engagements, and breach response for Fortune 500 customers. He is the founder of IntegSec and the architect of TurboPentest.
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 pentest