🇰🇷 한글 설명
Apache Pulsar의 Functions worker REST API 중 일부 엔드포인트에서 권한 검증 미흡으로 인해 인증된 사용자라면 누구나 커넥터 카탈로그 정보를 조회할 수 있는 취약점입니다. 이로 인해 관리자가 설치한 커스텀 커넥터의 이름, 설명, 클래스 이름 등의 메타데이터가 노출될 수 있습니다.
💡 쉬운 설명
로그인한 사용자라면 권한이 없더라도 시스템에 어떤 연결 도구들이 설치되어 있는지 목록을 몰래 훔쳐볼 수 있는 문제입니다. 다만, 실제 비밀번호나 설정값이 유출되는 것은 아니며 설치된 도구의 종류만 알 수 있습니다.
🇺🇸 원문 (English)
The Pulsar Functions worker REST API provides two endpoints that return the catalog of Pulsar IO connectors installed on the functions worker: the worker connectors endpoint (/admin/v2/worker/connectors) and the deprecated functions connectors endpoint (/admin/v2/functions/connectors and /admin/v3/functions/connectors). When authorization is enabled, the worker connectors endpoint requires super-user access. The functions connectors endpoint, served both by the functions worker and by a broker running the functions worker, returns the same catalog without this check.
As a result, when authentication and authorization are enabled, any authenticated client can read the connector catalog through the functions connectors endpoint, regardless of the permissions granted to its role and without super-user access. Unauthenticated requests are rejected unless anonymous access is configured with an anonymous user role.
The catalog contains the connector type definitions installed in the functions worker's connectors directory: the connector name, its description, and the source, sink and configuration class names. It does not contain configured source or sink instances, their configuration values or credentials, and an installed connector type does not indicate that a connector is configured or running. The impact is limited to disclosure of this metadata, which can include the names and descriptions of custom connectors installed by the operator. The issue does not allow modifying the catalog or managing connectors. Connector definitions that have a source or sink class are also returned by the built-in sources and sinks endpoints to authenticated clients.
In fixed versions, the functions connectors endpoint applies the same checks as the worker connectors endpoint, so that it requires super-user access when authorization is enabled. Clients that are not super-users can use the built-in sources and sinks endpoints to list the available connector types.
This issue affects Apache Pulsar versions from 2.4.1 before 4.0.14 and from 4.1.0 before 4.2.5.
- 4.0.x version users should upgrade to at least 4.0.14.
- 4.1.x and 4.2.x version users should upgrade to at least 4.2.5.
Users operating versions prior to those listed above should upgrade to the aforementioned patched versions or newer versions.
The currently supported Apache Pulsar release lines are 4.0.x and 5.0.x. The supported versions schedule is available at https://pulsar.apache.org/contribute/release-policy/.
📍 영향받는 시스템
Apache Pulsar 2.4.1 ~ 4.0.13, 4.1.0 ~ 4.2.4
⚔️ 공격 벡터
인증된 사용자가 권한 검증이 누락된 /admin/v2/functions/connectors 또는 /admin/v3/functions/connectors 엔드포인트에 GET 요청을 전송
🛡️ 대응 방법
Apache Pulsar를 4.0.14 또는 4.2.5 이상의 패치된 버전으로 업그레이드하십시오.
🔧 검증 코드
명령어 실행 시 커넥터 목록(JSON)이 정상적으로 출력된다면 취약한 상태이며, 403 Forbidden 에러가 발생해야 안전합니다.
curl -s -u <username>:<password> http://<pulsar-host>:<port>/admin/v2/functions/connectors | jq .