기술 · 실용 가이드
ld.so의 “object from LD_PRELOAD cannot be preloaded”: 라이브러리를 바꾸기 전에 주입자를 찾으세요
이 경고는 동적 로더가 요청된 객체를 거부했다는 사실만 증명합니다. 누가 요청했는지 보존하고 모든 프리로드 출처와 ELF 경계를 확인한 뒤 소유 설정만 수정하세요.

메시지는 대상 프로그램이 완전히 시작되기 전에 동적 로더가 냅니다. 추가 객체가 요청됐지만 무시됐다는 뜻이지 모든 공유 라이브러리가 없다는 뜻은 아닙니다.
소유자-객체 원장을 만들고 프로세스 환경, 런처, 서비스, /etc/ld.so.preload 중 요청자를 찾은 뒤 경로, ELF, 매핑, 보안 실행 증거를 분류합니다.
1. 정확한 경고와 실행 문맥을 고정합니다
객체 토큰, 괄호 사유, 정확한 명령, 실행 경로, 사용자, 작업 디렉터리, 시간을 보존합니다. cannot open, failed to map, 보안 모드 제거는 다른 결론입니다.
안전할 때만 한 번 재현하고 셸, 래퍼, 서비스, 컨테이너, 권한 프로그램 중 어디서 났는지 적습니다. 소유자를 모르는 패키지부터 재설치하지 마세요.
2. 모든 프리로드 소유자를 찾습니다
프로세스 환경, 셸 시작 파일, 래퍼, 서비스 Environment/EnvironmentFile, 컨테이너 설정을 보고 /etc/ld.so.preload를 별도로 확인합니다.
한 셸에서 unset해도 남는 경고는 다른 소유자의 증거입니다. 편집 전에 값과 출처를 보존하세요.
3. 경로, 접근, ELF 정체를 분류합니다
로더가 해석한 토큰의 존재, 형식, 소유권, 권한, 마운트를 기록합니다. 디렉터리, 끊긴 링크, 읽을 수 없는 파일, 분리된 토큰은 유효한 객체가 아닙니다.
file과 readelf로 실행 파일과 객체의 ELF 클래스, 데이터 인코딩, OS/ABI, 머신을 비교합니다. 검사하려고 신뢰할 수 없는 객체를 실행하지 마세요.
4. 매핑, 재배치, 보안 실행을 분리합니다
경로와 ELF가 맞으면 같은 비권한 테스트에서 세그먼트 매핑, 의존성, 재배치, 심볼, 버전 진단을 수집합니다.
set-ID나 capability가 있는 실행은 LD_PRELOAD를 제한합니다. 권한을 낮추거나 임의 객체를 신뢰 경로로 복사해 우회하지 마세요.
5. 소유 설정을 고치고 검증합니다
입증된 셸, 래퍼, 서비스, 컨테이너, /etc/ld.so.preload만 수정합니다. 패키지 소유와 ABI를 확인한 뒤 복원하세요.
같은 실행 파일을 무주입으로 먼저 시험하고 필요하면 검증된 객체를 주입합니다. 경고, 로드 상태, 기능, 다른 프로세스 영향을 확인합니다.
