ES /docs

SignupOperation#team_signup — missing federated user check

Service
cupixworks-api
Occurrences
7
Status
Reported
Confidence
85%
Actionability
28%
Cluster ID
195d0155-7545-4e9e-9e4f-f2342c0a1b4d
First Seen
2026-04-10 03:31 UTC
Last Seen
2026-07-16 12:48 UTC
Actions

SignupOperation#team_signup — missing federated user check

RCA Summary#

nswgov 테넌트의 초대받은 사용자 matthew.smith479@det.nsw.edu.auPOST /api/v1/signups/team 엔드포인트를 통해 팀 초대를 수락하는 과정에서, SignupOperation.team_signupuser.active_state!를 호출하여 after_update :update_cognito_user 콜백이 트리거되었습니다. 이 콜백은 Cupix::Aws::Cognito.update_user!를 호출했으나, 해당 사용자가 Cognito user pool에 존재하지 않아 user_exists? 체크에서 false를 반환하고 아무 작업 없이 early return했습니다. 그럼에도 Ruby의 begin/rescue/else 구조 특성상 예외가 발생하지 않았으므로 else 블록이 실행되어 "User updated in Cognito"라는 잘못된 성공 로그가 기록되었습니다. 이후 change_password가 호출되었을 때, 사용자가 Cognito에 실제로 존재하지 않으므로 AWS SDK가 UserNotFoundException ("User does not exist.")을 반환하여 HTTP 500 에러가 발생했습니다. 근본 원인은 초대(invited) 상태의 사용자에 대해 Cognito 사용자가 생성되지 않은 상태에서 비밀번호 변경을 시도한 것이며, change_password 호출 전에 Cognito 사용자 존재 여부를 확인하거나 생성하는 로직이 없다는 점입니다.

Scoring#

Confidence 85% · Actionability 28%

Confidence#

Dimension Score Detail
Evidence completeness 5/5 20 code refs, 4 log queries
Code path explicitness 3/3 20 file:line refs
Log evidence 3/3 section, query, pattern
RCA structure 3/3 3/3 sections
Revision history 0/3 0 revision(s)
Agent execution 3/3 success

Actionability#

Dimension Score Detail
Fix complexity 1/5 critical
Affected files 1/5 10 file(s)
Single repo 1/3 2 service(s)
Immediate actions 0/3 absent
Testability 0/3 no test info
External dependency 1/3 external deps found
Data migration 3/3 no migration