/ tmp noexec를 마운트하는 것이 얼마나 유용합니까? 계정이 있지만 다른 쓰기

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

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

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

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



답변

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

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

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

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

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

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


답변

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

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

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

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


답변

/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";};


답변

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


답변

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

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

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

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

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

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

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

이건 어때:

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

무엇을 기다립니다?

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


답변

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

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


답변