🇰🇷 한글 설명
jshERP 3.6 이하 버전에서 발생하는 부적절한 권한 부여 취약점입니다. 권한이 낮은 인증된 사용자가 임의의 accountId를 제공함으로써 테넌트 내 다른 사용자의 결제 계정 원장을 조회할 수 있습니다. 이를 통해 타인의 청구 번호, 거래 상대방, 금액 및 비고 내용을 탈취할 수 있습니다.
💡 쉬운 설명
로그인한 일반 사용자가 시스템의 허점을 이용해 다른 사람의 돈 거래 내역을 몰래 훔쳐볼 수 있는 보안 결함입니다. 계정 번호만 알면 본인의 권한을 넘어 다른 사람의 결제 정보를 조회할 수 있습니다.
🇺🇸 원문 (English)
jshERP through 3.6 contains an improper authorization vulnerability that allows low-privilege authenticated users to read any settlement account ledger by supplying an arbitrary accountId. Attackers restricted to personal or department data scope can query GET /account/findAccountInOutList to view other users' bill numbers, counterparties, amounts and remarks within the tenant.
📍 영향받는 시스템
jshERP version 3.6 and below
⚔️ 공격 벡터
인증된 저권한 사용자가 GET /account/findAccountInOutList API 호출 시 임의의 accountId를 파라미터로 전달
🛡️ 대응 방법
jshERP를 최신 보안 패치가 적용된 버전으로 업데이트하거나, API 호출 시 accountId에 대한 세션 기반 권한 검증 로직을 구현해야 합니다.
🔧 검증 코드
명령어 실행 결과로 타인의 결제 정보(billNumber, amount 등)가 포함된 JSON 데이터가 반환되면 취약한 상태입니다.
curl -s -X GET 'http://<target_ip>/account/findAccountInOutList?accountId=<target_id>' -H 'Authorization: Bearer <low_privilege_token>' | grep -E 'billNumber|amount'