立即撤销所有个人访问令牌(PAT)和SSH密钥,并取消OAuth应用及GitHub App授权,再逐项核查组织成员、审计日志、CI/CD密钥、Webhook及子模块等潜在残留权限。

Git账号被盗后,不能只改密码、删仓库或拉黑设备——这些动作无法阻止攻击者继续用已获取的凭据操作你的仓库、组织和集成服务。真正要做的,是立即切断所有可用入口,再逐层确认残留权限是否已被滥用。
立刻撤销所有个人访问令牌(PAT)和 SSH 密钥
GitHub、GitLab 等平台的账号盗用,90% 的后续破坏不是靠密码本身,而是靠已授权的长期凭证。攻击者登录后第一件事就是生成新 PAT 或导出已有密钥,用于自动化操作、窃取私有仓库、篡改 CI/CD 流水线。
- 进入
Settings → Developer settings → Personal access tokens,点击Revoke清空全部有效 token;不要选“Expires”,直接撤销 - 检查
SSH keys列表,删除所有非本人添加、命名模糊(如work-laptop、ubuntu-2024)或创建时间异常的密钥 - 如果使用了 GitHub App 或 OAuth Apps(比如 VS Code 插件、Jira 集成),也在
Authorized OAuth Apps里一并取消授权
注意:git config --global user.name 和 user.email 不是安全边界,改了没用;重点盯的是能执行 git push、gh repo create、curl -H "Authorization: Bearer ..." 的凭据。
检查组织级权限是否被悄悄授予
攻击者拿到账号后,常会利用“组织成员邀请”漏洞或管理员疏忽,把自己加进高权限组。尤其当你是 Organization Owner 或 Billing Manager 时,风险极高。
- 逐个进入你所属的每个 Organization →
Settings → Members,筛选Role为Owner或Billing manager的成员,确认是否全是可信人员 - 查看
Settings → Audit log(需 Owner 权限),搜索关键词:org.add_member、org.update_member、org.remove_member,时间范围设为过去 7 天 - 如果发现异常邀请记录(比如邀请自己为 Owner、或邀请陌生邮箱),立即
Remove并检查该账号是否已创建新仓库、添加 webhook、修改 secrets
GitHub 的 audit log 默认保留 90 天,但免费版 Organization 不开放此功能——如果你没开通 GitHub Enterprise,现在就该升级或改用 GitLab 自建实例来获得完整审计能力。
用大白话操作当前项目的 Git/GitHub——配置 GitHub(装 gh CLI + 登录 + 建仓库)、备份、拉取下载、查询历史、回滚代码、管理分支。当用户用日常语言表达 git 意图时触发(例如"git备份一下""git下载项目""git拉下来""git看看我改了啥""git回退到上一个版本""git新建个分支搞新功能""git合并到主分支""git
扫描并清理已被植入的恶意配置
攻击者不会只读代码,更可能往 .gitconfig、.husky/、.github/workflows/、package.json 的 preinstall 脚本里塞命令,实现持久化控制。
- 在本地克隆所有你名下或参与的私有仓库,运行:
git grep -n "curl\|wget\|sh -c\|eval\|base64" .github/workflows/ package.json .husky/ - 检查全局 git hook:
ls -la ~/.gitconfig和cat ~/.gitconfig | grep -A5 include,确认没有引入外部配置文件 - 重点排查 CI/CD secrets:进入每个仓库的
Settings → Secrets and variables → Actions,删除所有非必要、命名可疑(如API_KEY_DEV、TOKEN_PROD)或创建时间异常的 secret
别忽略 .gitmodules 和子模块历史——攻击者可能通过子模块指向恶意仓库,在构建时自动下载 payload。执行 git submodule foreach 'git log -1 --oneline' 快速过一遍最近提交。
重置所有关联服务的凭据与 Webhook
GitHub 账号常作为 SSO 登录源,一旦被盗,Slack、Notion、Vercel、Netlify、Docker Hub 等都可能被顺手接管。Webhook 更是重灾区:攻击者会把 push 事件转发到自己的服务器,实时镜像你的代码更新。
- 进入
Settings → Applications → Authorized applications,取消所有非核心工具的授权(特别是那些你记不清何时点过 “Authorize” 的) - 检查每个仓库的
Settings → Webhooks,删除所有目标 URL 不属于你团队域名、或使用 ngrok/localtunnel 等临时地址的 hook - 登录你常用的服务平台(如 Vercel、Netlify、Cloudflare Pages),在 Account → Integrations 页面断开 GitHub 连接,再重新绑定
最易被忽略的一点:GitHub 的 Authorized GitHub Apps 允许第三方以你的身份读写仓库,且权限粒度极细。哪怕你没主动安装,某些模板项目或 CLI 工具也会静默请求权限——必须手动清空,不能依赖“我没点授权”就认为安全。

















