CVE-2026-62240
NixOS 취약성 분석 및 완화

개요

CVE-2026-62240 is a Server-Side Request Forgery (SSRF) vulnerability in CrewAI's validate_url function affecting all versions before 1.15.1. The flaw allows attackers to bypass SSRF protections by supplying URLs that redirect to internal addresses or by using DNS rebinding techniques, enabling unauthorized access to internal services and cloud metadata endpoints. The vulnerability was reported via Bugcrowd on June 12, 2026, fixed via PR #6331 merged on June 26, 2026, and publicly disclosed on July 13–14, 2026. It carries a CVSS v3.1 score of 7.4 (High) and a CVSS v4.0 score of 8.3 (High) (Github Advisory, Feedly).

기술적 세부 사항

The root cause is CWE-918 (Server-Side Request Forgery): the validate_url function in crewai_tools/security/safe_path.py performs a one-shot socket.getaddrinfo() DNS resolution and IP blocklist check, then returns the original URL string unchanged. The scraping tools (ScrapeWebsiteTool, ScrapeElementFromWebsiteTool) and URL-backed RAG loaders then call requests.get() on that URL with default redirect-following enabled and no allow_redirects=False, meaning any HTTP 30x redirect to a blocked internal address (e.g., 127.0.0.1, 169.254.169.254) is followed without re-validation. The same one-shot design is also vulnerable to DNS rebinding (TOCTOU), where the first DNS lookup during validation resolves to a public IP but a subsequent lookup during the actual connection resolves to an internal address. In CrewAI, tool arguments such as website_url are LLM-controlled at runtime and can be influenced by untrusted web content via indirect prompt injection, making this attack path realistic in agentic deployments (Github Issue, Github PR).

영향

Successful exploitation allows an unauthenticated attacker (with passive user interaction, e.g., an agent visiting an attacker-controlled page) to reach internal-only services and cloud instance-metadata endpoints (such as http://169.254.169.254/latest/meta-data/) that are otherwise inaccessible from the network. This can result in theft of cloud credentials (e.g., AWS IAM keys from the metadata service), exposure of sensitive internal service data, and potential lateral movement within the cloud environment using stolen credentials. Confidentiality impact is high for both the vulnerable system and subsequent systems; integrity and availability are not directly impacted by this vulnerability (Github Advisory, Github Issue).

착취 단계

  1. Reconnaissance: Identify a CrewAI deployment (version < 1.15.1) that uses scraping tools (ScrapeWebsiteTool, ScrapeElementFromWebsiteTool) or URL-backed RAG loaders, where the website_url argument is LLM-controlled or can be influenced via indirect prompt injection.
  2. Set up attacker-controlled redirect server: Host a simple HTTP server on a publicly routable IP (or a CGNAT address not in the blocklist, e.g., 100.64.x.x) that responds to GET requests with an HTTP 302 redirect to the target internal address, e.g., Location: http://169.254.169.254/latest/meta-data/iam/security-credentials/ or Location: http://127.0.0.1:8080/internal-api.
  3. Inject malicious URL: Supply the attacker-controlled public URL as the website_url argument to the scraping tool — either directly (if the attacker controls input) or via indirect prompt injection by embedding the URL in a web page or document that the CrewAI agent retrieves and processes.
  4. Bypass SSRF guard: The validate_url function resolves the public hostname, finds no blocked IPs, and returns the original URL unchanged. The scraping tool then calls requests.get(url) with default redirect-following.
  5. Redirect to internal target: The attacker's server returns a 302 redirect to the internal address. requests follows the redirect without re-validating the new target against the blocklist.
  6. Exfiltrate internal data: The response from the internal service (e.g., cloud metadata credentials) is returned to the CrewAI agent and potentially surfaced to the attacker via the agent's output or logs.
  7. (Alternative) DNS rebinding: For the DNS rebinding variant, configure an attacker-controlled DNS server to return a public IP on the first resolution (passing validate_url) and an internal IP on the second resolution (used by requests for the actual connection), exploiting the TOCTOU gap (Github Issue).

타협의 징후

  • Network: Outbound HTTP requests from the CrewAI host to cloud metadata endpoints such as http://169.254.169.254/latest/meta-data/ or http://100.100.100.200/latest/meta-data/ (IMDSv1); unexpected HTTP connections from the CrewAI process to internal RFC1918 or loopback addresses (127.0.0.1, 10.x.x.x, 172.16-31.x.x, 192.168.x.x).
  • Logs: HTTP access logs on internal services showing requests originating from the CrewAI server's IP; CrewAI agent output or tool response logs containing cloud credential strings (e.g., AKIA, AWS_SECRET_ACCESS_KEY) or internal service data that should not be externally accessible.
  • Process: Unusual outbound connections initiated by the Python process running CrewAI to internal network ranges or metadata endpoints, particularly following scraping tool invocations with external URLs.
  • File System: Unexpected credential files or tokens written to disk by CrewAI agents if the exfiltrated data is stored as part of agent memory or output (Github Issue).

완화 및 해결 방법

Upgrade CrewAI to version 1.15.1 or later, which replaces the vulnerable validate_url() + requests.get() pattern with a new safe_get() helper (crewai_tools.security.safe_requests) that validates both the initial URL and every redirect target before following redirects, and strips sensitive headers on cross-origin redirects (CrewAI Release, Github PR). As a network-level workaround for those unable to upgrade immediately, implement egress firewall rules on the CrewAI host to block outbound connections to cloud metadata endpoints (169.254.169.254, 100.100.100.200) and internal RFC1918 ranges. Additionally, enable IMDSv2 (token-required mode) on AWS EC2 instances to reduce the impact of metadata endpoint access, and consider network segmentation to limit the CrewAI host's access to internal services.

커뮤니티 반응

The fix was contributed by community member theCyberTech and merged by the CrewAI maintainer lorenzejay on June 26, 2026, prior to public CVE disclosure (Github PR). Code review bots (CodeRabbit, corridor-security) noted during the PR review that the initial fix still carried residual DNS rebinding (TOCTOU) risk and potential credential forwarding across cross-origin redirects, prompting additional hardening commits. The vulnerability was also referenced in the NixOS package tracker (NixOS/nixpkgs#544158) and a Korean threat intelligence report (Argus-AI-Threat-Intelligence#1164), indicating broad community awareness. The CISA weekly bulletin for the relevant period (SB26-201) included this CVE (CISA Bulletin).

추가 자료


근원이 보고서는 AI를 사용하여 생성되었습니다.

관련 NixOS 취약점:

CVE ID

심각도

점수

기술

구성 요소 이름

CISA KEV 익스플로잇

수정 사항이 있습니다.

게시된 날짜

CVE-2026-16412CRITICAL9.8
  • NixOS logoNixOS
  • firefox-esr
아니요Jul 21, 2026
CVE-2026-16411CRITICAL9.8
  • NixOS logoNixOS
  • mozjs38
아니요Jul 21, 2026
CVE-2026-16410CRITICAL9.8
  • NixOS logoNixOS
  • cpe:2.3:a:mozilla:firefox
아니요Jul 21, 2026
CVE-2026-16408CRITICAL9.8
  • NixOS logoNixOS
  • cpe:2.3:a:mozilla:firefox
아니요Jul 21, 2026
CVE-2026-16409HIGH7.5
  • NixOS logoNixOS
  • cpe:2.3:a:mozilla:firefox
아니요Jul 21, 2026

무료 취약성 평가

클라우드 보안 태세를 벤치마킹합니다

9개의 보안 도메인에서 클라우드 보안 관행을 평가하여 위험 수준을 벤치마킹하고 방어의 허점을 식별합니다.

평가 요청

추가 Wiz 리소스

맞춤형 데모 받기

맞춤형 데모 신청하기

"내가 본 최고의 사용자 경험은 클라우드 워크로드에 대한 완전한 가시성을 제공합니다."
데이비드 에슬릭최고정보책임자(CISO)
"Wiz는 클라우드 환경에서 무슨 일이 일어나고 있는지 볼 수 있는 단일 창을 제공합니다."
아담 플레처최고 보안 책임자(CSO)
"우리는 Wiz가 무언가를 중요한 것으로 식별하면 실제로 중요하다는 것을 알고 있습니다."
그렉 포니아토프스키위협 및 취약성 관리 책임자