🇰🇷 한글 설명
Tendenci는 비영리, 협회 및 원인 기반 사이트를 위해 구축된 오픈 소스 콘텐츠 관리 시스템입니다. 15.3.11 버전 및 이전 버전에는 Helpdesk 모듈에 중요하게 역직렬화 취약성이 포함되어 있습니다. 이 취약성은 원격 코드 실행(RCE)을 허용하며, 인증된 사용자에 의해 스태프 보안 수준의 사용자에 의해 발생합니다. 이는 helpdesk/reports/에서 Python의 pickle 모듈을 사용하여 발생합니다.
💡 쉬운 설명
Tendenci의 구버전에는 중요하게 취약성이 있습니다. 인증된 사용자가 코드를 실행할 수 있습니다. 하지만 사용자 권한이 제한되어 있습니다.
🇺🇸 원문 (English)
Tendenci is an open source content management system built for non-profits, associations and cause-based sites. Versions 15.3.11 and below include a critical deserialization vulnerability in the Helpdesk module (which is not enabled by default). This vulnerability allows Remote Code Execution (RCE) by an authenticated user with staff security level due to using Python's pickle module in helpdesk /reports/. The original CVE-2020-14942 was incompletely patched. While ticket_list() was fixed to use safe JSON deserialization, the run_report() function still uses unsafe pickle.loads(). The impact is limited to the permissions of the user running the application, typically www-data, which generally lacks write (except for upload directories) and execute permissions. This issue has been fixed in version 15.3.12.
📍 영향받는 시스템
Tendenci 15.3.11 버전 및 이전 버전
⚔️ 공격 벡터
인증된 사용자가 Helpdesk 모듈의 취약성을 이용하여 원격 코드 실행을 수행
🛡️ 대응 방법
Tendenci를 15.3.12 버전으로 업데이트합니다.
🔧 검증 코드
로컬에 Python이 설치되어 있는지 확인하고, tendenci 패키지가 설치되어 있는지 확인합니다. verification_code를 실행하기 위해 Python을 사용합니다. 코드는 tendenci의 버전을 확인하여 취약성 여부를 판단합니다.
import subprocess
output = subprocess.check_output(['pip', 'show', 'tendenci']).decode('utf-8')
version = None
for line in output.split('\n'):
if 'Version:' in line:
version = line.split(':')[-1].strip()
break
if version and version <= '15.3.11':
print({"result": "취약", "reason": "Tendenci 버전이 15.3.11 이하입니다."})
else:
print({"result": "양호", "reason": "Tendenci 버전이 15.3.12 이상입니다."})