🔍 CVE-2026-23837

9.8
CVSS Score
CRITICAL
2026-01-19
2026-06-17 10:22
✅ 완료

🇰🇷 한글 설명

MyTube 버전 1.7.65 및 이전 버전에서 인증되지 않은 사용자가 역할 기반 인증 미들웨어의 필수 인증 확인을 우회할 수 있는 취약점이 발견되었습니다. 이 취약점으로 인해 공격자는 애플리케이션 설정을 수정하고, 관리자 및 방문자 비밀번호를 변경하며, 보호된 경로에 접근할 수 있습니다.

💡 쉬운 설명

MyTube 사용자들은 인증되지 않은 사용자가 중요한 설정과 데이터에 접근할 수 있는 취약점이 있습니다. 이는 버전 1.7.65 및 이전 버전에서 발생하며, 즉시 업그레이드가 필요합니다. 공격자는 중요한 정보에 접근하고 수정할 수 있습니다.

🇺🇸 원문 (English)

MyTube is a self-hosted downloader and player for several video websites. A vulnerability present in version 1.7.65 and poetntially earlier versions allows unauthenticated users to bypass the mandatory authentication check in the roleBasedAuthMiddleware. By simply not providing an authentication cookie (making req.user undefined), a request is incorrectly passed through to downstream handlers. All users running MyTube with loginEnabled: true are impacted. This flaw allows an attacker to access and modify application settings via /api/settings, change administrative and visitor passwords, and access other protected routes that rely on this specific middleware. The problem is patched in v1.7.66. MyTube maintainers recommend all users upgrade to at least version v1.7.64 immediately to secure their instances. The fix ensures that the middleware explicitly blocks requests if a user is not authenticated, rather than defaulting to next(). Those who cannot upgrade immediately can mitigate risk by restricting network access by usi a firewall or reverse proxy (like Nginx) to restrict access to the /api/ endpoints to trusted IP addresses only or, if they are comfortable editing the source code, manually patch by locating roleBasedAuthMiddleware and ensuring that the logic defaults to an error (401 Unauthorized) when req.user is undefined, instead of calling next().

📍 영향받는 시스템

MyTube 버전 1.7.65 및 이전 버전

⚔️ 공격 벡터

인증되지 않은 사용자가 역할 기반 인증 미들웨어의 필수 인증 확인을 우회하여 애플리케이션 설정과 데이터에 접근

🛡️ 대응 방법

MyTube 버전을 1.7.66 이상으로 업그레이드하거나, 네트워크 접근을 제한하기 위해 방화벽 또는 리버스 프록시를 사용하여 /api/ 엔드포인트에 대한 접근을 제한

🔧 검증 코드

로컬에서 MyTube가 실행 중인 경우, 위의 Python 코드를 실행하여 취약점 여부를 확인할 수 있습니다. 코드를 실행하기 전에, MyTube가 localhost의 8080 포트에서 실행 중인지 확인해야 합니다. 코드는 /api/settings에 대한 GET 요청을 보내고, 응답 코드가 200인 경우 취약하다고 판단합니다.

Shell / Script
import requests
response = requests.get('http://localhost:8080/api/settings')
if response.status_code == 200:
    print({"result": "취약", "reason": "인증 없이 설정에 접근 가능"})
else:
    print({"result": "양호", "reason": "인증 필요"})

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Nginx