업데이트 설치 후 해결됨CVE-2014-0160(오픈SSL힘든 노력버그), libssl을 사용할 수 있는 모든 것을 다시 시작할 때 주의해야 했습니다. Apache 및 VPN 소프트웨어와 같은 많은 서비스에는 여전히 오래된 취약한 libssl이 로드되어 있었고 패키지 관리자는 문제를 해결하려고 시도하지 않았습니다.
이로 인해 생각이 들었습니다. 공유 라이브러리를 업데이트한 후 현재 실행 중인 프로그램이 이전 버전의 라이브러리에 연결되어 있는지 어떻게 안정적으로 확인할 수 있습니까? 로드 중인 특정 공유 라이브러리의 인스턴스가 현재 디스크에 있는 동일한 인스턴스인지 확인하기 위해 링커 수준이나 파일 설명자 수준에서 실행 중인 프로세스를 조사하는 방법이 있어야 한다고 확신합니다.
답변1
이 작업을 수행하는 두 가지 방법을 찾았습니다.
- Debian 전용, 프로세스에서 가장 많이 삭제/교체된 파일을 나열합니다.(에 있는 것과 같이 일시적인 것으로 알려진 일부 파일 제외
/tmp
): 이debian-goodies
패키지에는 디스크에서 사라지거나 교체된 열린 파일을 찾기checkrestart
위해 출력을 가져와 옵션은 관련 파일을 식별합니다.lsof
-v
일반, 수동을 사용하면 걱정되는 파일을 지정할 수 있습니다.출력을 보고
lsof
삭제되거나 대체된 파일에 대한 열린 파일 핸들을 식별할 수 있습니다. 출력에서 이러한 파일은lsof -nnP
네 번째 열에서 로 식별되는 것으로 나타납니다. 특정 라이브러리(이 경우 OpenSSL)에 대한 오래된 핸들을 찾는 등의 작업을DEL
수행할 수 있습니다 .lsof -nnP | grep DEL.*libssl.so
이는 사용 중인 특정 버전의 lsof와 패키지 관리자의 동작에 따라 크게 달라질 수 있으므로 주의해서 진행하세요.pluto 3592 root DEL REG 202,0 98831 /lib/i386-linux-gnu/libssl.so.1.0.0 pluto 3604 root DEL REG 202,0 98831 /lib/i386-linux-gnu/libssl.so.1.0.0
답변2
Linux에서의 빠르고 더러운 방법(감사해요 라켄슈타인):
grep '/usr/lib/libssl1.*(deleted)' /proc/*/maps
정확한 구문 분석을 위해 옵션을 호출 lsof
하여 -F
구문 분석 가능한 출력을 얻을 수 있습니다. f
삭제된 파일을 필터링하기 위한 필드( fDEL
) 및 n
파일 경로를 가져오기 위한 필드를 포함합니다 . 아래 코드 조각은 개행 문자가 포함된 파일 이름을 차단합니다.
lsof -F pfn | awk '
/^p/ {pid=substr($0,2)}
/^fDEL$/ {getline; if (/n\/usr\/lib\/libssl1\.0\.1.*(deleted)$/) print pid}
'