Show HN: Chlibc – glibc를 핫스왑하고 사용자 공간에서 인터핑하는 ptrace 기반 도구
hackernews
|
|
📦 오픈소스
#취약점/보안
원문 출처: hackernews · Genesis Park에서 요약 및 분석
요약
chlibc는 ptrace를 활용해 컨테이너나 환경 변수 해킹 없이 사용자 공간에서 동적 링커와 glibc를 투명하게 교체할 수 있는 64비트 리눅스 도구입니다. 이 도구는 Conda 환경이나 커스텀 glibc 빌드를 사용하여 동적 연결 프로그램을 실행할 수 있으며, x86_64, AMD64, RISC-V 64 아키텍처와 다양한 커널 버전을 지원합니다. 설정은 CONDA_PREFIX나 경로 변수를 통해 자동으로 탐지되며, CMake와 Ninja, pixi를 사용해 재현 가능하게 빌드할 수 있습니다.
본문
A lightweight 64-bit Linux userspace tool that lets you run any dynamically linked program with a custom glibc (Conda, custom build, or alternate sysroot). It uses ptrace to transparently replace the dynamic linker (PT_INTERP ) and libc at every execve — no containers, no binary patching, no LD_* env hacks. | Architecture | Minimum Kernel Version | |---|---| | x86_64 (X64) | Linux >= 2.6.18 | | AMD64 | Linux >= 3.19 | | RISC-V 64 | Linux >= 5.4 | chlibc [args...] Three paths control chlibc's behavior, auto-discovered in priority order: | Path | Variable | Fallback Chain | Purpose | |---|---|---|---| | Interpreter | CHLIBC_INTERP | CHLIBC_GLIBC_HOME → CONDA_PREFIX → dirname($0)/..//sysroot | Target dynamic linker (ld.so ). | | GLIBC Home | CHLIBC_GLIBC_HOME | CONDA_PREFIX → dirname(CHLIBC_INTERP) → dirname($0)/..//sysroot | Custom glibc root directory. Injected as first entry in LD_LIBRARY_PATH . | | Prefix / Scope | CHLIBC_PREFIX | CONDA_PREFIX → dirname($0)/.. | Replacement scope limit. Only binaries under this path (/proc//exe ) are intercepted. | | Variable | Description | |---|---| CONDA_PREFIX | Auto-detects everything (recommended) | CHLIBC_INTERP | Path to target dynamic linker (e.g. ld-linux-x86-64.so.2 ) | CHLIBC_GLIBC_HOME | Root directory of custom glibc | CHLIBC_PREFIX | Only replace when binary is under this path | CHLIBC_LOGGER_FILE | Path to log file. If unset, defaults to stderr (if TTY) or syslog fallback. | export CONDA_PREFIX=/opt/conda/envs/myenv chlibc python chlibc /path/to/script.py Requirements - Linux x64 or MacOS aarch64 - CMake and Ninja - pixi (recommended) ./pixiw run configure ./pixiw run build Using pixi , builds are fully reproducible. cmake --preset clang-x86_64 -S . ./cmake-build --preset clang-x86_64-release
Genesis Park 편집팀이 AI를 활용하여 작성한 분석입니다. 원문은 출처 링크를 통해 확인할 수 있습니다.
공유