🔍 CVE-2026-53595

9.4
CVSS Score
CRITICAL
2026-07-20
2026-07-21 19:25
✅ 완료

🇰🇷 한글 설명

FreeScout의 특정 엔드포인트에서 인증 없이 사용자 계정 정보를 덮어쓸 수 있는 취약점입니다. MySQL의 공백 무시 특성과 암호화 검증 실패 시 원본 데이터를 반환하는 로직을 악용하여, 가장 낮은 ID를 가진 활성 계정(관리자 포함)의 이메일과 비밀번호를 탈취하고 로그인할 수 있습니다.

💡 쉬운 설명

로그인 과정 없이도 특정 주소에 특수 문자를 입력하면 관리자 계정의 비밀번호를 마음대로 바꿔버릴 수 있는 보안 결함입니다. 공격자는 이를 통해 시스템의 모든 권한을 즉시 획득할 수 있습니다.

🇺🇸 원문 (English)

FreeScout is a free help desk and shared inbox built with PHP's Laravel framework. Prior to version 1.8.224, the public endpoint `POST /user-setup/{hash}/{invite_sent_at}` (`OpenController@userSetupSave`) selects the target account solely by its `invite_hash` column, then overwrites that account's email and password and logs in as it. No authentication, cookie, or prior session is required. After a user activates, FreeScout sets `invite_hash` to the empty string. On MySQL and MariaDB, `VARCHAR` equality ignores trailing spaces, so a single URL-encoded space (`%20`) matches the stored empty string and selects the lowest-id activated user. The expiry guard decrypts `invite_sent_at` with the target's password hash, but `Helper::decrypt` returns its raw input unchanged when decryption fails. A plaintext numeric value such as `9999999999` therefore passes the time-to-live check without any secret. The result is that an anonymous attacker sets the email and password of the lowest-id activated FreeScout account (a support agent, or an administrator if one was added by invitation) and authenticates as that account. Version 1.8.224 contains a fix.

📍 영향받는 시스템

FreeScout 1.8.224 미만 버전

⚔️ 공격 벡터

인증되지 않은 상태에서 조작된 해시값(%20 포함)과 유효하지 않은 만료 시간 값을 포함한 POST 요청 전송

🛡️ 대응 방법

FreeScout를 최신 보안 패치가 적용된 버전인 1.8.224 이상으로 업데이트하십시오.

🔧 검증 코드

설치된 FreeScout의 버전이 1.8.224 미만인지 확인하여 취약 여부를 판단합니다.

Shell / Script
php artisan --version 2>/dev/null || echo 'Check FreeScout version via composer.json or application files'

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

MariaDB