🇰🇷 한글 설명
TarsWeb의 PatchController.js 내 일부 메서드에서 권한 검증 로직이 누락되어 발생하는 취약점입니다. 인증된 사용자라면 권한이 없는 다른 애플리케이션의 패키지를 업로드, 배포, 다운로드 또는 삭제할 수 있으며 기본 배포 패키지 설정까지 변경할 수 있습니다.
💡 쉬운 설명
로그인만 되어 있다면 다른 사용자의 프로그램을 마음대로 바꾸거나 삭제할 수 있는 보안 구멍이 발견되었습니다. 해커가 정상적인 사용자 계정을 이용해 시스템 전체의 소프트웨어를 조작할 위험이 있습니다.
🇺🇸 원문 (English)
TarsWeb enforces its per-application roles by calling AuthService from individual controller methods, and four methods in app/controller/patch/PatchController.js make no such call. uploadAndPublish accepts a package upload and then builds and dispatches a deployment task to every server matching the supplied application and module name, while its sibling uploadPatchPackage, which only stores the package, does check developer authorization first. The only precondition uploadAndPublish enforces is that the named server is registered, and any registered server in the installation satisfies it. downloadPackage and deletePatchPackage select a package by an unscoped sequential primary key covering every application's uploads, and setPatchPackageDefault changes which package a given application deploys by default. Any authenticated account, including one holding a role scoped to a single unrelated application, can therefore push a package to and trigger its deployment on any server the console manages, retrieve or delete any other application's package, and change which package is deployed by default.
📍 영향받는 시스템
TarsWeb (PatchController.js 내 uploadAndPublish, downloadPackage, deletePatchPackage, setPatchPackageDefault 메서드 포함 버전)
⚔️ 공격 벡터
인증된 계정을 사용하여 권한 검증이 누락된 API 엔드포인트에 직접 요청을 보내는 방식
🛡️ 대응 방법
PatchController.js의 관련 메서드에 AuthService를 통한 애플리케이션별 역할 및 권한 검증 로직을 추가하고, 패키지 식별 시 순차적 PK 대신 스코프가 지정된 식별자를 사용하도록 수정해야 합니다.
🔧 검증 코드
명령어 결과에서 해당 메서드가 발견되고, 해당 함수 내에 AuthService 호출을 통한 권한 검증 로직이 없다면 취약한 상태입니다.
grep -r "uploadAndPublish" app/controller/patch/PatchController.js
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
💻 영향받는 소프트웨어
IBM WebSphere Application Server