🇰🇷 한글 설명
setuid-root 권한을 가진 worker-launcher 바이너리가 디렉터리 권한을 조정하는 과정에서 심볼릭 링크를 이용한 경로 재해석 취약점이 존재합니다. 공격자는 중간 디렉터리를 심볼릭 링크로 교체하여 호스트의 임의 파일에 대해 lchown 또는 chmod 작업을 수행할 수 있습니다.
💡 쉬운 설명
관리자 권한으로 실행되는 프로그램이 파일을 처리할 때, 중간에 가짜 연결 통로(심볼릭 링크)를 만들어 시스템의 중요한 파일을 마음대로 수정하게 만드는 공격입니다. 이를 통해 일반 사용자가 시스템 전체의 권한을 탈취할 위험이 있습니다.
🇺🇸 원문 (English)
Description
The setuid-root `worker-launcher` binary adjusts ownership and permissions of worker directories by walking
the tree with FTS and calling `lchown` and `chmod` on each entry's full pathname while running with an
effective uid of 0. Both syscalls re-resolve the path at the time of the call, after FTS has classified the
entry, and the trees being walked are owned and writable by the untrusted topology user.
A tenant running code on a supervisor node could therefore replace an intermediate directory component with
a symbolic link between classification and the privileged operation, redirecting the root-owned `lchown` or
`chmod` at an arbitrary file on the host. The operation is repeatable at will, since crashing a worker
forces a relaunch and blob updates re-run the walk, so a failed attempt costs the attacker nothing.
This crosses the boundary that `supervisor.run.worker.as.user` and container isolation are intended to
enforce. It is the same defect class as the Hadoop container-executor issues from which this code derives.
Mitigation
Upgrade to 3.1.0, where the privileged walk operates on file descriptors it has already stat'd rather than
on pathnames re-resolved at call time.
Users who cannot upgrade immediately should not run untrusted topology code on supervisors configured with
`supervisor.run.worker.as.user`, since the launcher is the boundary being crossed. Note that the launcher
must be rebuilt and reinstalled after upgrading; replacing the Java artifacts alone is not sufficient.
Credit
The ASF -- found using Claude agents to study the security of open-source projects, validated and reported by Apache Storm.
📍 영향받는 시스템
Apache Storm (3.1.0 미만 버전)
⚔️ 공격 벡터
신뢰할 수 없는 사용자가 디렉터리 구조 내에 심볼릭 링크를 삽입하여 privileged syscall의 대상을 조작함
🛡️ 대응 방법
Apache Storm을 3.1.0 이상 버전으로 업그레이드하고 launcher를 재빌드 및 재설치해야 함
🔧 검증 코드
설치된 패키지 목록에서 storm 버전을 확인하여 3.1.0 미만인지 확인합니다.
rpm -qa | grep storm || dpkg -l | grep storm