🇰🇷 한글 설명
Frappe ERPNext 15.89.0 이하 버전의 get_terms_and_conditions 메서드에서 SSTI(서버 측 템플릿 주입) 취약점이 발견되었습니다. 공격자가 제어 가능한 Jinja2 템플릿이 frappe.render_template()를 통해 렌더링될 때, 샌드박스 환경 내에 노출된 frappe.db.sql과 같은 위험한 전역 변수를 악용할 수 있습니다. 이를 통해 인증된 공격자는 데이터베이스 정보를 유출하거나 제한된 환경 내에서 임의의 코드를 실행할 수 있습니다.
💡 쉬운 설명
서비스 이용 약관을 작성하는 칸에 특수한 코드를 입력하여 서버의 정보를 몰래 빼낼 수 있는 보안 약점입니다. 약관을 수정할 권한이 있는 사용자가 시스템 내부 데이터베이스에 접근할 위험이 있습니다.
🇺🇸 원문 (English)
An SSTI (Server-Side Template Injection) vulnerability exists in the get_terms_and_conditions method of Frappe ERPNext through 15.89.0. The function renders attacker-controlled Jinja2 templates (terms) using frappe.render_template() with a user-supplied context (doc). Although Frappe uses a custom SandboxedEnvironment, several dangerous globals such as frappe.db.sql are still available in the execution context via get_safe_globals(). An authenticated attacker with access to create or modify a Terms and Conditions document can inject arbitrary Jinja expressions into the terms field, resulting in server-side code execution within a restricted but still unsafe context. This vulnerability can be used to leak database information.
📍 영향받는 시스템
Frappe ERPNext 15.89.0 및 그 이전 버전
⚔️ 공격 벡터
인증된 공격자가 이용 약관(Terms and Conditions) 문서의 내용을 Jinja2 템플릿 코드로 조작하여 주입
🛡️ 대응 방법
Frappe ERPNext를 최신 보안 패치가 적용된 버전으로 업데이트하고, 약관 수정 권한을 엄격히 제한하십시오.
🔧 검증 코드
출력된 버전이 15.89.0 이하인지 확인하여 취약 여부를 판단합니다.
pip show frappe-erpnext 2>/dev/null | grep -E 'Version'