🇰🇷 한글 설명
2026-07-10 기준 BadChoice Handesk에서 발견된 취약점으로, 인증된 모든 에이전트가 TicketsController@update 엔드포인트를 통해 타 팀의 티켓 기록을 수정할 수 있는 권한 제어 결함입니다. 해당 엔드포인트는 authorize() 메서드를 호출하지 않으며 팀 단위의 소유권 확인 절차를 수행하지 않습니다. 공격자는 임의의 에이전트 계정을 사용하여 다른 팀에 할당된 티켓을 수정, 권한 상승 또는 손상시킬 수 있습니다.
💡 쉬운 설명
로그인한 일반 직원이라면 누구나 다른 팀의 업무 기록을 마음대로 고칠 수 있는 보안 구멍이 발견되었습니다. 이를 통해 다른 팀의 중요한 정보를 조작하거나 업무를 방해할 수 있습니다.
🇺🇸 원문 (English)
A broken access control vulnerability in BadChoice Handesk as of 2026-07-10 allows any authenticated agent to update ticket records belonging to other teams via the TicketsController@update endpoint. The endpoint calls no authorize() method and performs no team-scoped ownership check. An attacker with any agent account can modify, escalate, or corrupt tickets assigned to other teams.
📍 영향받는 시스템
BadChoice Handesk (2026-07-10 이전 버전)
⚔️ 공격 벡터
인증된 에이전트 계정으로 TicketsController@update 엔드포인트에 타 팀의 티켓 ID를 포함한 수정 요청 전송
🛡️ 대응 방법
TicketsController@update 메서드에 authorize() 호출을 추가하고, 요청된 티켓이 현재 사용자의 팀에 속해 있는지 검증하는 로직을 구현해야 합니다.
🔧 검증 코드
타 팀의 티켓 ID로 수정 요청을 보냈을 때, 오류 없이 200 OK 응답이 오고 데이터가 변경되면 취약한 상태입니다.
curl -s -X POST -H 'Authorization: Bearer [AGENT_TOKEN]' -d 'ticket_id=[OTHER_TEAM_TICKET_ID]&status=closed' https://[TARGET_HOST]/TicketsController/update