🇰🇷 한글 설명
pgEdge RAG Server 2.0.0 이전 버전에서는 인증되지 않은 query 엔드포인트가 LIMIT 없이 전체 문서 코퍼스를 읽고 요청마다 BM25 인덱스를 메모리에 재구성합니다. HybridEnabled가 기본 활성화되어 있고 속도 제한이 없어, 저비용 원격 요청만으로도 코퍼스 크기에 비례하는 DB 및 CPU 부하가 발생해 서비스 자원이 고갈될 수 있습니다.
💡 쉬운 설명
인증 없이도 누구나 검색 요청을 보내 서버의 데이터베이스와 CPU를 과도하게 사용하게 만들 수 있습니다. 그 결과 서비스가 느려지거나 응답 불능 상태가 될 수 있습니다.
🇺🇸 원문 (English)
pgEdge RAG Server is an API server for retrieval-augmented generation over PostgreSQL content using pgvector. Prior to 2.0.0, the unauthenticated query endpoint uses FetchDocuments in internal/database/search.go to read the entire filtered corpus without a LIMIT and rebuild an in-memory BM25 index on every request. Because HybridEnabled is set by default in internal/config/loader.go and the endpoint has no rate limit, inexpensive remote queries can impose database and CPU work proportional to corpus size and exhaust service resources. This issue is fixed in version 2.0.0.
📍 영향받는 시스템
pgEdge RAG Server 2.0.0 미만 버전 (HybridEnabled 기본 설정 사용 시)
⚔️ 공격 벡터
인증 없이 query 엔드포인트에 다수의 경량 검색 요청을 반복 전송하여 DB 전체 조회와 BM25 인덱스 재구성을 유발하는 서비스 거부(DoS) 공격
🛡️ 대응 방법
pgEdge RAG Server를 2.0.0 이상으로 업그레이드하고, 가능하면 query 엔드포인트에 인증 및 속도 제한을 적용
🔧 검증 코드
출력된 설치 버전이 2.0.0 미만이면 취약하며, 설치 정보가 없으면 이 시스템에는 해당 제품이 설치되어 있지 않은 것입니다.
dpkg -l 2>/dev/null | grep -i pgedge-rag; command -v pgedge-rag-server >/dev/null && pgedge-rag-server --version 2>/dev/null; pip show pgedge-rag-server 2>/dev/null | grep -i version