Actions Expression Injection in SedekahJe `add_qrcode` workflow
Overview SedekahJe
sedekah.je is a curated and crowdsourced list of mosques/surau/institution QR codes in Malaysia.
Project source code available at https://github.com/khrnchn/sedekah-je
Summary
The add_qrcode
action workflow allows for command injection in issue title
and issue body
, allowing an attacker to execute arbitrary code in github runner and potentially modified the repository.
Details
The add_qrcode
workflow is using the raw github.event.issue.title and github.event.issue.title value inside the workflow step:
- name: Check for [addQR] Keyword
id: check_keyword
run: |
ISSUE_TITLE="$"
ISSUE_BODY="$"
if [[ "$ISSUE_TITLE" != *"[addQR]"* && "$ISSUE_BODY" != *"[addQR]"* ]]; then
echo "No [addQR] keyword found. Exiting workflow."
exit 78
fi
echo "Keyword [addQR] found. Proceeding with workflow."
In the event of a new issue created, workflow will triggered, and an attacker could use a malicious issue title or issue name to gain command execution in the step and potentially modified the repository.
name: Add New Institution
on:
issues:
types: [opened]
Proof of Concept
Create new issue with title [addQR] add new qr code for {institution name}a"; ls $GITHUB_WORKSPACE" #1
Timeline
- 2025-03-18: Report the vulnerability via x.com
- 2025-03-20: Issue is Fixed
- 2025-07-12: Public release of security advisory