🇰🇷 한글 설명
llmware 0.4.6 버전의 collection-database 레이어에서 SQL 인젝션 취약점이 발견되었습니다. 필터 및 조회 값이 매개변수화 없이 SQL WHERE 절에 직접 삽입되어, 공격자가 SQLite 및 PostgreSQL 백엔드에서 데이터를 탈취하거나 조작할 수 있습니다.
💡 쉬운 설명
데이터를 검색할 때 사용하는 필터 기능에 보안 허점이 있어, 나쁜 의도를 가진 사용자가 입력값을 조작해 허용되지 않은 정보를 몰래 볼 수 있는 문제입니다. 이를 통해 데이터베이스에 저장된 민감한 정보가 유출될 위험이 있습니다.
🇺🇸 원문 (English)
llmware 0.4.6 contains an SQL injection vulnerability in the collection-database layer (llmware/resources.py) where filter and lookup values are directly string-interpolated into SQL WHERE clauses without parameterization or escaping, in both the SQLite and PostgreSQL backends. The filter validator only checks keys against an allow-list and never sanitizes values. Attacker-controlled filter values reaching the public API via Library.block_lookup and Query.text_query_with_custom_filter / text_query_by_author_or_speaker can neutralize the intended filter to disclose rows the caller was scoped out of (cross-document/cross-collection disclosure); on PostgreSQL the flaw permits boolean- and UNION-based SQL injection.
📍 영향받는 시스템
llmware 0.4.6 버전 (SQLite 및 PostgreSQL 백엔드 사용 시)
⚔️ 공격 벡터
Library.block_lookup 또는 Query 관련 API를 통해 조작된 필터 값을 전달하여 SQL 쿼리를 실행
🛡️ 대응 방법
llmware를 최신 보안 패치가 적용된 버전으로 업데이트하거나, 입력값에 대한 매개변수화된 쿼리(Parameterized Query)를 사용하도록 수정
🔧 검증 코드
출력된 버전이 0.4.6인지 확인하여 해당 취약점에 노출되었는지 판단
pip show llmware | grep Version