이것UNIX 및 Linux 시스템 관리 매뉴얼설명하다:
Man은 해당 디렉토리에 쓰기가 가능한 경우 /var/cache/man 또는 /usr/share/man에 형식화된 페이지의 캐시를 유지하지만 이는 보안상 위험합니다. 대부분의 시스템은 설치 시 매뉴얼 페이지를 미리 포맷하거나(catman 참조) 전혀 포맷하지 않습니다.
여기서 "보안 위험"이란 무엇입니까?
지적한 바와 같이, 누군가 맨 페이지를 변경하여 (초보) 사용자가 필요하지 않은 것을 실행하도록 속일 수 있다는 분명한 보안 위험이 있습니다.울리히 슈바르츠의 답변하지만 저는 이것을 활용할 수 있는 다른 방법을 찾고 있습니다. 감사해요!
답변1
다음과 같은 위험 때문에 다른 사용자도 사용할 매뉴얼 페이지의 내용(또는 실제로 모든 데이터)을 사용자가 조작하도록 허용하는 것은 안전하지 않습니다.캐시 중독. 오래된 BOFH 농담은 다음과 같습니다.
시스템에 대한 모든 것을 처음부터 배우려면 다음과 같이 Read Manual 명령과 Read Faster 스위치를 사용하십시오.
rm -rf /
(확실하게,원하지 않는다이 명령을 실행하세요. ) 그러나 맨페이지 캐시를 제어하는 경우 캐시된 가짜 맨페이지를 보기 위해 입력할 수 있습니다 . 이는 실제로 "rm - 파일 또는 디렉토리 삭제" 대신 "rm - 수동 읽기"임을 man rm
알려줍니다 . rm
심지어쉘의 출력 터미널 이스케이프 시퀀스에 코드 삽입.
답변2
문제의 시스템이 웹 서버라고 가정합니다. 또한 서버 관리자가 시스템에 설치된 일부 소프트웨어를 웹 페이지를 통해 일반(또는 회사 인트라넷)에 공개한다고 가정합니다. 이미지 리사이저, 계산기 또는 사전만큼 간단할 수 있습니다.
소프트웨어 설치 시 관련된 매뉴얼 페이지가 있는 경우, 관리자(훌륭하고 사려 깊은 사람)는 이러한 매뉴얼 페이지를 웹 서비스 사용자에게 제공하는 것도 좋은 생각이라고 결정할 수 있습니다.
따라서 웹페이지의 도움말 아이콘은 하나 이상의 도움말을 가져오는 스크립트를 실행합니다.캐시됨— 매뉴얼 페이지를 작성하여 사용자의 브라우저로 보냅니다.
캐시 디렉터리에 대한 쓰기 액세스 권한이 있는 사람이나 코드는 이러한 파일을 다음과 같이 수정할 수 있습니다.
- 사용자의 브라우저에 접속하여 실행될 임의의 Javascript를 삽입합니다.
- 모든 액세스 사용자로부터 원격 측정 데이터를 수집하고 나중에 처리/분석하기 위해 일부 저장소로 전달합니다.
- 인증 자격 증명을 수집합니다. 시스템에서 권한이 있는 사용자(예: 관리자)의 자격 증명도 수집할 수 있습니다.
상상력과 느슨한 도덕/윤리를 가진 사람이라면 누구나 위의 내용을 다양한 방식으로 남용할 수 있습니다.
답변3
보안 취약점은 디렉터리가 누구나 쓰기 가능하도록 설정될 때마다 발생합니다. 디렉토리의 의도된 목적이 무엇인지, 디렉토리를 손상시키는 방법을 무시하고 단지 쓰기 가능하게 만드는 것은 문제입니다.
카탈로그 기능과 관련되지 않은 몇 가지 가능한 문제는 다음과 같습니다.
- 사용자가 쓸 수 있는 파일 시스템에 다른 디렉터리가 없는 경우 이는 모든 사용자가 해당 파일 시스템에서 사용할 수 없는 공간을 사용할 수 있는 방법을 제공합니다.
- 모든 사용자는 이 디렉터리에 파일을 저장하여 파일 시스템을 채워 서비스 거부 공격을 일으킬 수 있습니다. /var/log와 동일한 파일 시스템인 경우 로그에 기록되지 않을 수 있습니다.
- 파일은 의도한 위치를 벗어나 이 디렉터리에 숨겨질 수 있습니다. 이는 계정 삭제 후에도 지속될 수 있으며, 파일 시스템이 이상하게 가득 차면 찾기 어려울 수 있습니다.
- 향후 캐시된 파일과 동일한 이름을 가진 파일이나 디렉터리를 생성하면 디렉터리가 의도한 목적에 따라 올바르게 작동하지 못할 수 있습니다(파일 내용 자체가 악의적이지 않더라도). 이러한 파일에 대한 권한을 조정하면 자동 복구가 더 어려워질 수 있습니다.
답변4
대부분의 최신 배포판은 적절한 패키지가 설치될 때 사전 캐시 매뉴얼 페이지(troff를 사용하여 처리됨)입니다. 이것은 문제가 되지 않습니다.
문제는 원본 man 파일이 존재하지만 캐시가 비어 있는 경우(즉, 캐시 파일이 미리 생성되지 않은 경우) 발생합니다.
이 문제를 해결하는 방법에는 두 가지가 있습니다.
- troff를 통해 매뉴얼 페이지 실행매번사용자로서
- troff를 통해 매뉴얼 페이지를 한 번 실행하십시오.뿌리캐시 디렉토리에 저장
루트로 실행하려면 setuid가 필요합니다. 보안상 취약점이 있는 경우아무것예를 들어 명령줄 구문 분석을 통해 공격자는 높은 권한을 얻을 수 있습니다.
관련 소스는 다음과 같습니다.https://git.savannah.gnu.org/cgit/man-db.git/tree/src/man.c
다행스럽게도 모든 주요 배포판은 이제 매뉴얼 페이지를 사전 캐시하므로 걱정할 필요가 없습니다.