메뉴
BL
Ars Technica 4일 전

오픈소스 취약점으로 수백만 AI 에이전트 해킹 위기

IMP
9/10
핵심 요약

Python 기반 웹 프레임워크인 Starlette에서 'BadHost(CVE-2026-48710)'라는 심각한 인증 우회 취약점이 발견되었습니다. 이 취약점을 통해 해커는 서버에 침투하여 임상시험 데이터, 개인정보 등의 민감한 정보와 외부 서비스 인증 정보를 탈취할 수 있습니다. FastAPI, vLLM 등 주요 생태계뿐만 아니라 이를 기반으로 하는 수백만 대의 AI 에이전트와 도구가 영향을 받으므로 즉시 1.0.1 버전으로 업데이트 및 방화벽 설정 점검이 필요합니다.

번역된 본문

보안 연구원의 경고에 따르면, 전 세계 수백만 개의 AI 에이전트와 도구가 심각한 취약점으로 인해 위험에 처해 있습니다. 해커는 이 취약점을 악용해 서버에 침투하여 민감한 데이터와 타사 계정의 인증 정보를 탈취할 수 있습니다. 이 취약점은 Starlette라는 오픈소스 프레임워크에 존재하며, 개발자에 따르면 이 프레임워크는 주당 3억 2,500만 회 다운로드됩니다. Starlette에 의존하는 수천 개의 다른 오픈소스 프로젝트 역시 이 취약점의 영향을 받습니다. 이 프레임워크는 ASGI(Asynchronous Server Gateway Interface, 비동기 서버 게이트웨이 인터페이스)의 구현체로, 대량의 요청을 동시에 효율적으로 처리할 수 있게 해줍니다. Starlette는 Python 앱에서 서비스를 구축하기 위해 널리 사용되는 FastAPI 및 기타 여러 프레임워크의 기반이 됩니다.

악용이 매우 쉽고 수백만 대의 서버가 노출되어 있습니다. ASGI, 나아가 Starlette은 MCP(Model Context Protocol, 모델 컨텍스트 프로토콜)를 실행하는 서버에 액세스할 수 있습니다. MCP는 주요 공급자의 AI 에이전트가 사용자 데이터베이스, 이메일 및 캘린더 계정, 기타 모든 종류의 리소스를 포함한 외부 소스에 액세스할 수 있도록 해줍니다. 이러한 외부 시스템과 연결하기 위해 MCP 서버는 각 시스템의 인증 정보를 저장하므로, 공격자 입장에서는 이를 침해할 때 특히 큰 가치가 있는 데이터 저장소가 됩니다. CVE-2026-48710로 추적되며 BadHost라는 이름으로 불리는 이 취약점은 악용하기가 매우 쉬우며, 적절하게 구성된 방화벽 뒤에 있지 않은 대부분의 시스템에 대해 작동합니다. FastAPI 외에도 vLLM 및 LiteLLM과 같이 널리 사용되는 다른 패키지들도 이 영향을 받습니다. BadHost는 금요일에 릴리즈된 1.0.1 이전 버전의 Starlette에 영향을 미칩니다.

Secwest의 연구원들은 "HTTP Host 헤더에 단일 문자를 주입하면 FastAPI의 라우팅 코어인 Starlette의 경로 기반 인증을 우회할 수 있다"고 밝혔습니다. 이어서 "FastAPI를 통해 이 취약점(CVE-2026-48710로 추적되며 발견자들에 의해 BadHost로 명명됨)은 Python AI 도구 생태계의 상당 부분에 영향을 미친다. vLLM(이 버그가 발견된 곳), LiteLLM, Text Generation Inference, 대부분의 OpenAI-shim 프록시, MCP 서버, 에이전트 하네스, 평가 대시보드 및 모델 관리 UI가 여기에 해당한다"고 설명했습니다. BadHost의 심각도 등급은 10점 만점에 7점입니다. Secwest는 이러한 분류가 Starlette에 의존하는 다른 앱을 사용하는 사람들에게 미치는 위협을 '실제보다 과소평가'한 것이라고 밝혔습니다. 이 취약점을 발견한 보안 회사 X41 D-Sec는 이를 '심각도(Critical Severity)'로 분류했습니다. X41 D-Sec는 동료 보안 회사인 Nemesis와 협력하여 특정 서버가 취약한지 확인할 수 있는 온라인 스캐너를 개발했습니다. X41 D-Sec의 연구원인 Markus Vervier는 스캔을 통해 현재 다음 유형의 데이터가 노출되어 있음을 발견했다고 밝혔습니다: 바이오 제약 AI(임상 시험 DB, M&A 데이터, SSRF), 신원 확인(안면 분석, KYB, 실시간 개인식별정보, 내부 코드베이스), IoT/산업(배스천을 통한 기기 SSH 접속, 원격 코드 실행), 이메일/SaaS(전체 사서함 읽기/보내기/삭제, S3 내보내기, 웹훅), HR/채용(지원자 개인식별정보, 채용 파이프라인 데이터), CMS/마케팅(구독자 목록, 대량 이메일 캠페인 발송/예약), 문서 관리(스캔한 문서 읽기, 업로드, 수정), 클라우드 모니터링(AWS 토폴로지, 분산 추적, 메트릭 쿼리), 사이버 보안(자산 인벤토리, 실시간 Nuclei 스캐너 액세스), 개인 건강/재정(영양 기록, 지출, 구독).

이 취약점의 핵심은 Starlette가 유효하지 않은 Host 헤더 값을 허용하여, Starlette의 request.url 객체를 사용하는 인증 앱이 승인되지 않은 액세스 요청을 승인하도록 만든다는 것입니다. X41 D-Sec는 이 호출에 의존하는 여러 앱에서 인증이 우회되는 것을 발견했다고 밝혔습니다. 그 외에도 해킹은 SSRF(Server-Side Request Forgery, 서버 측 요청 위조) 공격으로 이어질 수 있으며, 경우에 따라서는 원격 코드 실행도 가능합니다. X41 D-Sec는 이를 다음과 같이 설명했습니다. "Starlette은 HTTP Host 요청 헤더와 요청된 경로를 기반으로 요청된 URL을 재구성하지만, Host 헤더 값에 대한 어떠한 유효성 검사도 수행하지 않습니다."

원문 보기
원문 보기 (영어)
Text settings Story text Size Small Standard Large Width * Standard Wide Links Standard Orange * Subscribers only Learn more Minimize to nav Millions of AI agents and tools around the world have been imperiled by a critical vulnerability that can allow hackers to breach the servers running them and make off with sensitive data and credentials to third-party accounts, a security researcher is warning. The vulnerability is present in Starlette, an open source framework that its developer says receives 325 million downloads per week. Thousands of other open source projects are also vulnerable because they require Starlette to work. The framework is an implementation of the ASGI (asynchronous server gateway interface), which allows large numbers of requests to be efficiently processed simultaneously. Starlette is the base of FastAPI and other widely used frameworks for building services in Python apps, as well as many others. Trivial to exploit, millions of servers exposed ASGI, and by extension Starlette, have access to servers running the MCP (model context protocol), which allows AI agents from major providers to access external sources, including user data bases, email and calendar accounts, and all manner of other resources. To connect with these external systems, MCP servers store credentials for each one, making them especially valuable storehouses for attackers to breach. The vulnerability, tracked as CVE-2026-48710 and under the name BadHost, is trivial to exploit and works against most systems that aren’t behind a properly configured firewall. Besides FastAPI, other widely used packages—including vLLM, and LiteLLM—are also affected. BadHost affects Starlette versions prior to 1.0.1, which was released Friday. “A single character injected into the HTTP Host header bypasses path-based authorization in Starlette, the routing core of FastAPI,” researchers from Secwest wrote. “Through FastAPI, this primitive (now tracked as CVE-2026-48710 and branded BadHost by the discoverers) reaches a large segment of the Python AI tooling ecosystem: vLLM (where the bug was discovered), LiteLLM, Text Generation Inference, most OpenAI-shim proxies, MCP servers, agent harnesses, eval dashboards, and model-management UIs.” BadHost carries a severity rating of 7 out of 10. Secwest said the classification “materially understates” the threat it poses to people using other apps that depend on Starlette. X41 D-Sec, the security firm that discovered it, described it as having “critical severity.” X41 D-Sec partnered with fellow security firm Nemesis to create an online scanner that can check if a given server is vulnerable. X41 D-Sec researcher Markus Vervier said a scan has revealed the following types of data are currently exposed: Biopharma AI – clinical trial DBs, M&A data, SSRF Identity Verification – face analysis, KYB, live PII, internal codebase IoT/Industrial – SSH to devices via bastion, remote code execution Email/SaaS – full mailbox read/send/delete, S3 export, webhooks HR/Recruitment – candidate PII, hiring pipeline data CMS/Marketing – subscriber lists, send/schedule mass email campaigns Document Management – read, upload, modify scanned documents Cloud Monitoring – AWS topology, distributed traces, metric queries Cybersecurity – asset inventory, live Nuclei scanner access Personal Health/Finance – nutrition logs, expenses, subscriptions The crux of the vulnerability is that Starlette accepts invalid host header values that cause authenticating apps that use Starlette’s request.url object to approve unauthorized access requests. X41 D-Sec said it has found authentication in multiple apps that rely on this call to be bypassed. Besides that, hacks can lead to SSRF (server-side request forgery) exploits and, in some cases, remote code execution. X41 D-Sec described it this way: Starlette reconstructs the requested URL based on the HTTP Host request header and requested path, but does not perform any validation of the Host header value. This allows attackers to inject paths into the host part, prepending the actual path. However, routing in Starlette is based on the actual request path. This inconsistent interpretation of HTTP requests may lead to issues such as authentication bypass when the authentication depends on the reconstructed URL’s path. Starlette is the foundation of the FastAPI Python framework. Company researchers added: “The routing algorithm of Starlette depends on the HTTP path, but the request.url.path attribute which is made available to middlewares and endpoints is based on the reconstructed URL. It is unexpected for users that request.url.path is different from the actual path requested over HTTP.” The developer of Starlette didn’t immediately reply to an email seeking confirmation of the assessment and additional information. With vulnerable versions of Starlette still widely used in production systems, people relying on any app that depends on Starlette—particularly FastLLM, vLLM, and LiteLLM—should, at a minimum, run the scanner on their systems to detect whether vulnerable Starlette code is still in use. Additional mitigation guidance is provided in the Nemesis and X41 D-Sec links above. Dan Goodin Senior Security Editor Dan Goodin Senior Security Editor Dan Goodin is Senior Security Editor at Ars Technica, where he oversees coverage of malware, computer espionage, botnets, hardware hacking, encryption, and passwords. In his spare time, he enjoys gardening, cooking, and following the independent music scene. Dan is based in San Francisco. Follow him at here on Mastodon and here on Bluesky. Contact him on Signal at DanArs.82. 27 Comments