<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>GitHub Actions — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/github-actions/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata — refreshed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Wed, 22 Apr 2026 17:45:55 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/github-actions/feed.xml" rel="self" type="application/rss+xml"/><item><title>AWS Credentials Used from GitHub Actions and Non-CI/CD Infrastructure</title><link>https://feed.craftedsignal.io/briefs/2024-01-aws-github-actions-credential-theft/</link><pubDate>Wed, 22 Apr 2026 17:45:55 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-aws-github-actions-credential-theft/</guid><description>Attackers are stealing AWS credentials configured as GitHub Actions secrets and using them from non-CI/CD infrastructure, indicating potential credential theft and unauthorized access to AWS resources.</description><content:encoded><![CDATA[<p>This threat involves the unauthorized use of AWS credentials stolen from GitHub Actions secrets. Attackers exfiltrate these credentials and use them from their own infrastructure, bypassing the intended CI/CD environment. The activity is detected by observing AWS access keys appearing in CloudTrail logs originating from both legitimate GitHub Actions runners (identified by Microsoft ASN or the <code>github-actions</code> user agent string) and suspicious infrastructure outside the expected CI/CD provider ASNs (Amazon, Google, Microsoft). This indicates a breach of GitHub repository or organization secrets, leading to potential unauthorized access and control over AWS resources. This activity can begin with compromised Github accounts.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker gains unauthorized access to a GitHub repository or organization with AWS credentials stored as secrets.</li>
<li>The attacker exfiltrates the AWS access key ID and secret access key, either manually or through automated means, such as modifying a GitHub Action workflow to expose the secrets.</li>
<li>The attacker configures the stolen AWS credentials on their own infrastructure, using tools like the AWS CLI or boto3.</li>
<li>The attacker attempts to authenticate to AWS using the stolen credentials. This generates CloudTrail logs with the attacker&rsquo;s source IP address and ASN.</li>
<li>The attacker performs reconnaissance activities, such as calling <code>sts:GetCallerIdentity</code>, <code>ListBuckets</code>, <code>DescribeInstances</code>, or <code>ListUsers</code>, to understand the AWS environment and identify potential targets.</li>
<li>The attacker attempts to escalate privileges or move laterally within the AWS environment by exploiting the compromised credentials.</li>
<li>The attacker may create, modify, or delete AWS resources, such as EC2 instances, S3 buckets, or IAM roles, depending on the permissions associated with the stolen credentials.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation leads to unauthorized access to AWS resources, potentially resulting in data breaches, service disruptions, or financial losses. The impact depends on the permissions associated with the stolen AWS credentials. A single compromised credential could expose sensitive data, disrupt critical services, or allow attackers to deploy malicious infrastructure within the victim&rsquo;s AWS environment. Identifying and responding to this threat quickly is vital to minimize damages.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Deploy the Sigma rule &ldquo;AWS Credentials Used from GitHub Actions and Non-CI/CD Infrastructure&rdquo; to your SIEM and tune for your environment to detect suspicious usage patterns.</li>
<li>Rotate the compromised AWS access key in IAM immediately and update the corresponding GitHub repository/organization secret as described in the rule documentation.</li>
<li>Implement OIDC-based authentication (<code>aws-actions/configure-aws-credentials</code> with <code>role-to-assume</code>) instead of long-lived access keys as mentioned in the rule documentation.</li>
<li>If using OIDC, add IP condition policies to the IAM role trust policy to restrict <code>AssumeRoleWithWebIdentity</code> to known GitHub runner IP ranges, based on the information in the rule documentation.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>cloud</category><category>aws</category><category>github</category><category>credential-theft</category><category>initial-access</category><category>lateral-movement</category></item><item><title>Detection of New GitHub Actions Secrets Creation</title><link>https://feed.craftedsignal.io/briefs/2024-01-github-secret-creation/</link><pubDate>Tue, 30 Jan 2024 12:00:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-github-secret-creation/</guid><description>This analytic detects the creation of new GitHub Actions secrets at the organization, environment, codespaces, or repository level, potentially indicating malicious persistence or privilege escalation.</description><content:encoded><![CDATA[<p>This detection identifies the creation of new secrets within GitHub Actions. Threat actors may create or modify secrets to gain unauthorized access, establish persistence, or escalate privileges within the GitHub environment. The activity is captured via GitHub&rsquo;s audit logs. The scope of this detection encompasses the creation of secrets at the organization, environment, codespaces, or repository level. Successful detection of this activity allows security teams to investigate potentially malicious modifications to GitHub Actions secrets, which could lead to supply chain compromise or data exfiltration.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker gains initial access to a GitHub account, potentially through compromised credentials or phishing (T1078.004).</li>
<li>The attacker authenticates to the GitHub organization or repository.</li>
<li>The attacker navigates to the settings for the organization, environment, codespaces, or repository.</li>
<li>The attacker creates a new secret within the GitHub Actions settings, using the GitHub API or web interface.</li>
<li>The secret is stored within GitHub&rsquo;s infrastructure, accessible to GitHub Actions workflows.</li>
<li>The attacker modifies or creates a GitHub Actions workflow that utilizes the newly created secret.</li>
<li>The workflow executes, using the secret to perform privileged actions such as accessing sensitive data or deploying malicious code.</li>
<li>The attacker achieves persistence or elevates their privileges within the GitHub environment, potentially compromising the entire software supply chain.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation can lead to unauthorized access to sensitive data, code injection, and supply chain compromise. The impact ranges from low, in cases where the secret is used for benign purposes, to critical if the secret is used to deploy malicious code into production environments. While the number of affected organizations is unknown, the potential for widespread impact across the software supply chain makes this a critical area for monitoring.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Enable GitHub audit log streaming to capture the events necessary for this detection (see <code>logsource</code> definition).</li>
<li>Deploy the Sigma rule <code>Github New Secret Created</code> to your SIEM and tune for your environment.</li>
<li>Investigate any alerts generated by the Sigma rule, focusing on the &ldquo;actor&rdquo; involved in creating the secret.</li>
</ul>
]]></content:encoded><category domain="severity">low</category><category domain="type">advisory</category><category>github</category><category>persistence</category><category>privilege-escalation</category><category>initial-access</category></item><item><title>GitHub Self-Hosted Runner Configuration Changes Detected</title><link>https://feed.craftedsignal.io/briefs/2024-01-github-runner-changes/</link><pubDate>Wed, 03 Jan 2024 14:30:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-github-runner-changes/</guid><description>Detection of changes to self-hosted runner configurations in GitHub environments can indicate potential impact, discovery, collection, persistence, privilege escalation, initial access, or stealth activities.</description><content:encoded><![CDATA[<p>This threat brief focuses on detecting changes to self-hosted runner configurations within GitHub environments. Self-hosted runners are systems deployed and managed by users to execute jobs from GitHub Actions, providing flexibility and control over the execution environment. Monitoring these runners is crucial because unauthorized modifications can lead to various malicious activities, including data collection, persistence, privilege escalation, or even initial access. The rule provided detects such changes based on audit logs, requiring administrators to validate the changes through the GitHub UI for complete context. Detecting these modifications early can help prevent or mitigate potential security breaches.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker gains unauthorized access to a GitHub organization or repository with permissions to manage self-hosted runners. This could be achieved through compromised credentials (T1078.004) or exploiting a vulnerability.</li>
<li>The attacker modifies the configuration of an existing self-hosted runner group or creates a new runner group (org.runner_group_created).</li>
<li>The attacker adds or removes runners from a runner group (org.runner_group_runners_added, org.runner_group_runner_removed, org.runner_group_updated).</li>
<li>Alternatively, the attacker registers a new self-hosted runner within the environment (repo.register_self_hosted_runner).</li>
<li>The attacker removes an existing self-hosted runner from the environment (repo.remove_self_hosted_runner, org.remove_self_hosted_runner).</li>
<li>The attacker uses the compromised runner or runner group to execute malicious code within the GitHub Actions workflow, potentially collecting sensitive data or escalating privileges.</li>
<li>The attacker leverages the compromised runner to establish persistence within the GitHub environment, ensuring continued access.</li>
<li>The attacker exploits the compromised runner to gain initial access to other systems or networks connected to the GitHub environment.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Compromised self-hosted runners can lead to a range of impacts, including data exfiltration, code injection, and privilege escalation within the targeted GitHub environment. Successful attacks could result in unauthorized access to sensitive repositories, modification of code, or deployment of malicious software. The impact can vary depending on the scope of the compromised runner and the permissions associated with it. The effects could extend beyond the GitHub environment if the compromised runner has access to other systems or networks.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Enable the audit log streaming feature in GitHub to capture events related to self-hosted runner modifications, as required by the logsource definition.</li>
<li>Deploy the Sigma rule &ldquo;Github Self Hosted Runner Changes Detected&rdquo; to your SIEM and tune for your specific environment to detect suspicious configuration changes.</li>
<li>Regularly review the audit logs in the GitHub UI to validate any detected changes to self-hosted runners and runner groups to ensure legitimate modifications.</li>
<li>Implement strict access control policies for managing self-hosted runners, limiting permissions to only authorized personnel.</li>
</ul>
]]></content:encoded><category domain="severity">low</category><category domain="type">advisory</category><category>github</category><category>self-hosted-runner</category><category>audit-log</category><category>devops</category><category>supply-chain</category></item></channel></rss>