/ tmp noexec를 마운트하는 것이 얼마나 유용합니까?


39

많은 사람들 ( Sebianing Debian Manual 포함 ) 은 옵션 세트를 /tmp사용하여 마운트 할 것을 권장 noexec,nodev,nosuid합니다. 이는 일반적으로 누군가가 파일을 작성할 수있게하는 공격의 에스컬레이션 또는 합법적 인 계정이 있지만 다른 쓰기 가능한 공간이없는 사용자의 공격을 에스컬레이션하는 것을 방지함으로써 '심층 방어'전략의 한 요소로 제시됩니다.

그러나 시간이 지남에 따라 noexec몇 가지 잠재적 인 이유로 쓸모없는 조치 인 논쟁 (대부분 데비안 / 우분투 개발자 콜린 왓슨)이 나타났습니다 .

  1. 사용자는 /lib/ld-linux.so <binary>동일한 효과를 얻기 위해 실행할 수 있습니다 .
  2. 사용자는 직접 실행할 수없는 스크립트에서 시스템 제공 인터프리터를 계속 실행할 수 있습니다.

이러한 주장을 감안할 때 더 많은 구성 (예 : debconf실행 가능한 임시 디렉토리 등)이 필요하고 편의성이 상실 될 수 있습니다. 이것이 가치있는 보안 조치입니까? 우회를 가능하게하는 다른 구멍은 무엇입니까?


1
@neoice : / tmp를 실행할 수없는 경우 응용 프로그램이 때때로 중단 될 수 있다고 들었습니다. 나는 그것이 실제로 일어나는 것을 아직 보지 못했습니다. TuxGuitar-1.2를보십시오. noexec 옵션없이 / tmp를 마운트하지 않으면 시작되지 않습니다. 라이브러리의 압축을 풀고로드하려고하기 때문입니다.

VMware의 Site Recovery Manager는 "/ tmp"에서 스크립트를 실행합니다. vCenter Site Recovery Manager (2021083)에서 복구 계획의 페일 오버 또는 테스트 페일 오버 중 IP 사용자 지정이 실패 함 : kb.vmware.com/selfservice/microsites/…

1
snappy라는 압축 유틸리티는 / tmp에 .so 파일을 삭제하고 noexec가 마운트되어 있으면 실행할 수 없다는 것을 알고 있습니다. (이것은 cassandra와 kafka에서 기본적으로 사용됩니다) IMHO 이것은 / tmp noexec를 마운트하지 않는 이유보다는 snappy를 사용하지 않는 이유입니다.
jorfus

답변:


31

지금까지 내가 찾은 유틸리티에 대한 인수는 다음과 같습니다.

최신 커널은 /lib/ld-linux.so취약점을 해결하여 noexec파일 시스템 에서 실행 가능한 페이지를 매핑 할 수 없게합니다 .

사람들이 주장 할 수있는 것보다 적은 수의 사람이 있다고 생각하지만, 통역가들은 여전히 ​​여전히 우려 사항입니다. 내가 생각해 낼 수있는 이유는 특정 기형의 syscall을 만드는 데 의존하는 수많은 권한 상승 취약점이 있었기 때문입니다. 침입자가 바이너리를 제공하지 않으면 사악한 syscall을 만드는 것이 훨씬 어려울 것입니다. 또한 스크립트 인터프리터는 권한이 없어야합니다 (이전에는 때때로 suid perl과 같은 경우가 아니 었습니다). 따라서 공격에 유용하려면 자체 취약점이 필요합니다. 분명히, 적어도 일부 익스플로잇을 실행하기 위해 Python을 사용할 있습니다.

많은 '통조 된'악용은에서 실행 파일을 작성하고 실행하려고 시도 할 수 /tmp있으므로 noexec스크립트 공격에 취약 할 가능성을 줄입니다 (예 : 취약성 공개와 패치 설치 사이의 창에서).

따라서로 마운트하면 여전히 보안상의 이점이 /tmp있습니다 noexec.

에서 설명한 바와 같이 데비안의 버그 추적기 설정 APT::ExtractTemplates::TempDirapt.conf없는 디렉토리 noexec은 debconf의 우려를 미연에 방지 할 루트에 접근.


그러나 / tmp를 실행할 수없는 경우 응용 프로그램이 가끔 중단되는 것으로 들었습니다. 나는 그것이 실제로 일어나는 것을 아직 보지 못했습니다.
neoice

질문에 링크 된 매뉴얼에서 언급했듯이 대안을 설정하지 않고 Debconf 패키지 사전 구성을 망칠 수 있습니다.
Phil Miller

2
예, noexec는 보안에 매우 좋은 추가 계층이며 그로 인해 혼란을 일으키는 것을 보지 못했습니다. 패키지 설치는 유일한 것이며 여기에서 답변을 통해 해결할 수 있습니다. 별칭 업데이트 = "다시 마운트 / tmp를 && apt-get을 업데이 트를 && -o NOEXEC 업그레이드 && 마운트있는 apt-get 다시 마운트 / tmp를, -o 간부 마운트"내 솔루션으로이 같은 별칭이
의 Janne Pikkarainen

1
드문 일이지만 패키지 설치 컨텍스트 외부에서 / tmp에서 무언가를 실행하도록 작성된 패키지가 존재합니다 (예 : 벨기에 전자 신분증을 사용하기위한 미들웨어의 현재 버전).
equaeghe

equaeghe : 어떤 패키지입니까? 아마도 버그로보고되어야합니다. 그것을 사용하는 방법에 보안 취약점이 있음을 확신합니다.
Phil Miller

7

많은 데비안 패키지는 패키지를 설치하기 위해 / tmp를 실행할 수 있어야합니다. 이들은 종종 버그로 표시됩니다 ( '정상'/ 'wishlist'심각도).

https://www.google.com/#q=site:bugs.debian.org+noexec+/tmp

오늘 업데이트 된 커널을 안정적인 브랜치에 설치하는 동안이 오류가 발생했습니다.

따라서 Debian (& 파생 상품?)이 / tmp를 noexec에 마운트 할 준비가되지 않은 것 같습니다 ...


6

/etc/apt.conf에 다음을 추가하거나 /etc/apt/apt.conf.d/50remount

DPkg::Pre-Install-Pkgs {"mount -o remount,exec /tmp";};
DPkg::Post-Invoke {"mount -o remount /tmp";};

6
PATH가 수정 된 경우 로 교체 mount했습니다 /bin/mount. 당신은 절대 알 수 없습니다.
Lekensteyn

4

구현하도록 선택할 수있는 대부분의 추가 보안 조치에 대한 해결 방법이 있지만 가장 우회적 인 보안 조치 (예 : / tmp noexec 마운트 또는 대체 포트에서 SSH 실행)도 기본값을 사용하는 자동 또는 스크립트 공격을 순서대로 차단합니다. 작동합니다. 그것은 결정적이고 지식이 풍부한 공격자로부터 당신을 보호하지는 않지만, 99 %가 넘는 시간에, 당신은 결정력이 있거나 지식이 풍부한 공격자에 대해 속지 않을 것입니다. 대신 자동 공격 스크립트로부터 자신을 방어하게됩니다.


2

첫 번째 : 다양한 공격 사례를 다룹니다 . 알려진 문제가 몇 가지 있기 때문에이 기능을 끄는 것은 이상합니다. / dev / shm 또는 / tmp에 코드를 다운로드하는 공격자는 일반적인 일입니다.

심층 방어는 가장 일반적인 웨이 포인트를 확보하는 것입니다. 각 웨이 포인트는 시스템을 더 생존 가능하게 만듭니다. 안전하지 않음. 그러나 기회 도있을 것 입니다. 보조 페이로드를 가져올 수 없으면 얻을 가능성이 매우 높습니다.

  • iptables 사용자 제한 사항에 의해 중지 될 수도 있습니다.
  • SELinux에 의해 중지 될 수도 있습니다.
  • 쉽게 액세스 할 수있는 다른 악용으로 인해 중지 되지 않을 수도 있습니다 .

요점은 당신이 쉽게 할 수있는 한 어렵게 만들고 공격의 99 %를 차단하는 것입니다.

둘째 : 데이터를 / tmp에 남겨두고 나쁜 습관 (임시에서 물건을 실행하고 주요 응용 프로그램을 tmpdir 대신 / tmp를 통해 설치)을 중지합니다. 사용자 정의 설치 프로그램은 일반적으로 TMPDIR을 이해합니다 . 그렇지 않은 경우에도 : 특정 시점 조치로 설치 시간이 보안 문제를 영구적으로 해제하는 유효한 이유는 아닙니다 .

셋째 : / tmp ( "기능")의 익명 네임 스페이스를 고려할 때 실제로 거기에 넣거나 실행하는 것을 제한하려고합니다.

넷째 : 편의성은 이와 관련이 없습니다. 우리가 돈을 위해 서버를 운영한다고 가정하면, 우리는이 일에 책임이 있습니다. "아, 내년에 소프트웨어를 업데이트 할 때 몇 분이 더 필요하기 때문에 / tmp를 잠그지 않았습니다." 분명히 협박과 괜찮은 것 사이에있는 것은이 것이 아닙니다. 좋은 이유? 나는 그렇게 생각하지 않습니다.

이건 어때:

"우리는 적들이 예고없이 공격 할 수 있다는 것을 배웠습니다. 그들은 또한 수백 마리의 스파이를 사용하여 음식을 독살 할 수있었습니다. 그래서 우리는 군인들에게 총을주는 것을 중단했습니다."

무엇을 기다립니다?

시스템을 확보하기 위해 더 많은 노력, 경험 및 운이 필요하고 사람들이 돈과 수명이 제한적이며 가족과 함께 시간을 보내고 싶다는 것을 알고있는 다른 조치가 있습니다 . 쉬운 물건을 건너 뛰지 마십시오.


1

설치하려면 / tmp가 실행 가능한 응용 프로그램이 있습니다. 이전 작업에서 관리자가 도착하기 전에 / tmp noexec를 설정했지만 db2 패키지가 설치되지 않음을 발견했습니다. 다른 곳에서 db2 패키지를 untar하더라도 설치 프로시 저는 일부 파일을 / tmp에 복사하고이를 실행할 수있을 것으로 예상합니다. 물론 권한이 거부되어 실패했습니다. 파일 시스템이 noexec에 마운트되어 있다는 것을 모르면 약간 오도 될 수 있습니다. noexec없이 / tmp를 다시 마운트 한 후에 만 ​​설치를 계속할 수있었습니다.

어쨌든 요점은 적어도 하나의 상용 제품에는 / tmp를 noexec에 마운트하지 않아야하고 다른 제품도있을 수 있다는 것입니다. 나는 그것에 대한 설득력있는 이유를 찾지 못했습니다. 더 나은 보안을 원한다면 selinux를 대신 사용하십시오.


noexec / tmp에 의해 중지 될 Samba 취약점에 대한 익스플로잇 분석 : bobao.360.cn/learning/detail/4168.html (Chrome의 Google 번역이 권장됩니다. 초기 익스플로잇 및 페이로드의 큰 부분 ...) mount -o remount,exec /tmp당신이 물건을 설치해야 할 때 작동합니다 (예, ... 주변의 일을 사소한, 그러나 많은 공격자는 귀찮게하지 않는 것)
게르트 반 베르그 덴
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.