🇰🇷 한글 설명
changedetection.io 0.54.9 이하 버전의 xpath_filter() 함수는 XML/RSS 콘텐츠를 처리할 때 외부 엔티티 해석, 외부 DTD 로딩, 네트워크 기반 엔티티 조회를 명시적으로 비활성화하지 않은 XMLParser를 생성합니다. 이로 인해 신뢰할 수 없는 XML 데이터가 그대로 파싱되어 XXE(XML 외부 엔티티) 공격에 노출됩니다.
💡 쉬운 설명
웹 페이지 변화를 감시하는 도구가 외부에서 들어온 XML 데이터를 안전하지 않게 읽습니다. 공격자가 악성 XML을 보내면 서버의 파일이나 내부 네트워크 정보를 빼낼 수 있습니다.
🇺🇸 원문 (English)
changedetection.io is a free open source web page change detection tool. In 0.54.9 and earlier, xpath_filter() switches to XML mode for XML/RSS content and creates etree.XMLParser(strip_cdata=False) without explicitly disabling external entity resolution, external DTD loading, or network-backed entity lookup. The helper then parses untrusted XML bytes directly with etree.fromstring(...).
📍 영향받는 시스템
changedetection.io 0.54.9 이하 버전
⚔️ 공격 벡터
공격자가 조작된 XML/RSS 콘텐츠를 모니터링 대상 페이지로 제공해 외부 엔티티를 통해 서버 내부 파일 또는 내부 네트워크 자원을 조회하도록 유도
🛡️ 대응 방법
changedetection.io를 0.54.10 이상 버전으로 업데이트하고, XMLParser에서 resolve_entities=False, no_network=True 등 외부 엔티티 해석을 비활성화하도록 설정
🔧 검증 코드
출력된 버전이 0.54.9 이하이면 취약하므로 0.54.10 이상으로 업데이트가 필요하며, 명령이 결과를 반환하지 않으면 설치 방식(Docker 등)을 별도로 확인해야 합니다.
pip show changedetection.io 2>/dev/null | grep -i '^version'