🇰🇷 한글 설명
Glean RSS 리더의 0.2.6 미만 버전에서 발생하는 서버 측 요청 위조(SSRF) 취약점입니다. 공격자가 조작된 RSS 피드 URL을 제공하면 서버가 내부 네트워크, 루프백 주소 또는 클라우드 메타데이터 서비스에 요청을 보내고 그 응답 내용을 탈취할 수 있습니다.
💡 쉬운 설명
해커가 가짜 뉴스 피드를 만들어서 서버에 전달하면, 서버가 내부의 비밀 정보나 다른 컴퓨터의 데이터를 대신 가져와서 보여주는 문제입니다. 이를 통해 서버 내부의 중요한 설정이나 인증 정보를 훔쳐갈 수 있습니다.
🇺🇸 원문 (English)
Glean is a self-hosted RSS reader and personal knowledge management tool. Prior to 0.2.6, POST /api/feeds/discover passes an attacker-supplied feed_url to discover_feed(feed_url), creates a subscription through FeedService.create_subscription(), and enqueues fetch_feed_task. The background path calls fetch_feed(feed.url) and parse_feed(), which assigns each RSS item link to ParsedEntry.url. The task then passes ParsedEntry.url to fetch_and_extract_fulltext(parsed_entry.url) without network-level validation in backend/packages/rss/glean_rss/extractor.py and backend/apps/worker/glean_worker/tasks/feed_fetcher.py. A malicious feed can therefore make the server request private, loopback, link-local, or cloud-metadata resources. The fetched response is stored in Entry.content and can be retrieved through GET /api/entries/{id}, producing non-blind server-side request forgery with full response disclosure. This can bypass network perimeters, probe internal services and ports, expose internal configuration or web content, and potentially disclose cloud metadata access tokens. This issue is fixed in version 0.2.6.
📍 영향받는 시스템
Glean (버전 0.2.6 미만)
⚔️ 공격 벡터
조작된 feed_url을 포함한 POST /api/feeds/discover 요청을 통한 SSRF 공격
🛡️ 대응 방법
Glean을 최신 버전인 0.2.6 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전 번호가 0.2.6보다 낮은지 확인하십시오.
python3 -c 'import glean; print(glean.__version__)' 2>/dev/null || echo 'version check required'