🇰🇷 한글 설명
Open Source Point of Sale 3.4.1의 비밀번호 변경 엔드포인트는 서버 측 검증이 누락되어 있습니다. 인증된 사용자가 password와 repeat_password 파라미터를 비우거나 생략해도 서버는 성공 응답을 반환하며 비밀번호를 빈 문자열로 설정합니다. 이로 인해 인증이 사실상 무력화되어 사용자 및 관리자 계정에 대한 무단 접근이 가능해질 수 있습니다.
💡 쉬운 설명
비밀번호를 빈칸으로 바꿔도 시스템이 막지 않고 저장해버리는 결함입니다. 이 상태가 되면 누구나 빈 비밀번호로 해당 계정에 들어갈 수 있습니다.
🇺🇸 원문 (English)
The password change endpoint in Open Source Point of Sale 3.4.1 allows users to set their account password to an empty string due to missing server-side validation. When an authenticated user omits or leaves the `password` and `repeat_password` parameters empty in the password change request, the backend still returns a successful response and sets the password to an empty string. This effectively disables authentication and may allow unauthorized access to user or administrative accounts.
📍 영향받는 시스템
Open Source Point of Sale 3.4.1 (및 해당 취약 버전)
⚔️ 공격 벡터
인증된 사용자가 비밀번호 변경 요청에서 password 및 repeat_password를 비우거나 생략해 계정 비밀번호를 빈 문자열로 설정
🛡️ 대응 방법
서버 측에서 비밀번호 길이 및 빈 값 검증을 추가하고 vendor가 제공하는 패치 버전으로 업데이트
🔧 검증 코드
설치 경로에서 버전 정보를 확인하여 3.4.1 이하이면 취약 가능성이 있으며, 비밀번호 변경 코드에 빈 값 검증 로직이 없으면 취약한 상태로 판단합니다.
grep -rn "password" /var/www/html/ 2>/dev/null | grep -i "version" | head -5