Halil, the trust chain is compromised maintainer account → malicious workflow on repositories that account could modify → runner-accessible credentials or repository history → downstream cloud, registry, and SaaS identities. Fact: reporting says security-audit.yml collected GitHub tokens, package-publishing tokens, cloud and AI-service credentials, and searched current source plus Git history for deleted secrets; results were sent to 193.32.204[.]199. Assessment: any SaaS/API key available to the runner belongs inside that same blast radius. OIDC is different: the attacker may not steal a durable cloud key, but if the workflow could request an OIDC token and satisfy a cloud trust policy, it could obtain temporary role sessions. Whether that happened remains unknown until workflow permissions and cloud token-exchange logs are examined.
The defensible order is: (1) remove attacker write access, disable the injected workflow, preserve workflow/audit logs, and suspend affected automation; (2) revoke compromised GitHub sessions, personal access tokens, app tokens, deploy keys, OAuth grants, and other repository identities; (3) close OIDC issuance paths or narrow cloud trust policies before invalidating cloud access keys and terminating temporary role sessions; (4) revoke package-registry publishing tokens and inspect packages, releases, images, and ownership changes; (5) rotate SaaS/API and AI-service credentials, revoking associated sessions and refresh tokens; (6) rotate every still-valid secret found in repository history. Rotation without first closing the workflow and federation paths merely lets the attacker mint or steal replacements.
Use three evidence levels. Exposed means the credential was present in reachable secrets, environment data, source, or history while the malicious workflow ran, especially where logs show collection or attempted exfiltration. Used requires provider-side evidence: GitHub audit events, cloud role assumptions or API calls, registry publication, or SaaS/AI API activity attributable to that identity after exposure. Persistent means the attacker established a surviving trust path—an unauthorized maintainer, deploy key, OAuth/GitHub App grant, cloud principal or altered role trust, new registry owner/token, webhook, refresh token, or still-valid session. Those are investigation targets, not yet confirmed GhostAction artifacts.
Deleting security-audit.yml and rotating one repository secret therefore does not end the incident. The reporting describes compromised maintainers modifying multiple repositories and workflows harvesting both active and historically committed credentials. The incident ends only when every credential issuer, active session, delegated grant, federation relationship, and downstream identity reachable from the workflow has been accounted for—not when the visible YAML disappears.