🇰🇷 한글 설명
Vulnerability-Lookup 5.5.1 이상 6.4.1 미만 버전에서, 인증된 사용자가 웹훅 알림 페이로드 템플릿의 포맷 지정자를 통해 서버 메모리를 과도하게 할당하게 만들 수 있습니다. 짧은 템플릿으로도 약 1GB 문자열이 생성되어 서비스 거부(DoS)가 발생할 수 있습니다. 6.4.1 버전에서 포맷 숫자 제한, 렌더링 길이 제한, 중첩 깊이 제한이 추가되어 수정되었습니다.
💡 쉬운 설명
로그인한 사용자가 특수한 알림 템플릿을 만들면 서버가 엄청난 양의 메모리를 사용하게 되어 서비스가 느려지거나 멈출 수 있습니다. 최신 버전으로 업데이트하면 이 문제가 해결됩니다.
🇺🇸 원문 (English)
In Vulnerability-Lookup 5.5.1 up to but not including 6.4.1, a signed-in user could make the server allocate memory far out of proportion to their input through a webhook notification's payload template. Each placeholder's format specifier was passed unchanged to Python's string formatting, which builds the padded result before its size can be checked. A template of a few dozen bytes, such as {"text": "{title:>999999999}"}, therefore produced a string of about 1 GB when the notification form test-rendered it on save, and repeating such fields multiplied the cost. Templates that passed the save check could also repeat placeholders such as {text} thousands of times; the notification daemon rebuilt those on every webhook delivery. Deeply nested templates raised an unhandled recursion error (HTTP 500). An attacker needs only an account, which the default configuration lets anyone create after e-mail confirmation. They could exhaust the memory of web workers or the notification daemon, causing a denial of service. Version 6.4.1 caps every number in a format specifier at 256, limits a rendered template to 1,000,000 characters both on save and at delivery, and rejects templates nested deeper than 32 levels.
📍 영향받는 시스템
Vulnerability-Lookup 5.5.1 이상 6.4.1 미만
⚔️ 공격 벡터
계정을 가진 인증 사용자가 웹훅 알림 템플릿에 과도한 포맷 지정자(예: {title:>999999999})를 삽입해 메모리 고갈을 유발
🛡️ 대응 방법
Vulnerability-Lookup을 6.4.1 이상으로 업데이트
🔧 검증 코드
출력된 Version 값이 5.5.1 이상 6.4.1 미만이면 취약하며, 6.4.1 이상이면 패치된 버전입니다. 결과가 없으면 해당 패키지가 설치되어 있지 않습니다.
pip show vulnerability-lookup 2>/dev/null | grep -i '^version'