이 High Sierra 보안 버그에서 부작용으로 생성 된 루트 계정을 비활성화하거나 제거하려면 어떻게합니까?


40

이 기사 는 잠금 해제를 요구할 때 루트를 입력하면 모든 사용자가 시스템 환경 설정을 잠금 해제 할 수 있는 버그에 대해 설명합니다 . 다음과 같이 경고합니다.

직접 확인하지 않아도됩니다. 이렇게하면 사용 중지하지 않은 경우 다른 사람이 이용할 수있는“루트”계정이 생성됩니다.

이 기사에서는 열렬한 엔지니어가 문제를 재현하여 루트 계정을 제거하거나 비활성화해야하는 경우 수행 할 작업에 대해 설명하지 않습니다.

이 계정을 어떻게 안전하게 비활성화하거나 제거 할 수 있습니까?

이 Apple 페이지 는 계정을 비활성화하는 방법을 설명하지만 결함이 계정을 다시 활성화 할 수 있기 때문에 결함을 방지하지 못합니다. 보안 버그가 수정되면 루트가 비활성화 된 상태에서 시스템을 정상 상태로 복원합니다.

2017-11-29 16:43 UTC 업데이트

관리자 암호를 제공하지 않고 관리자 인증을 우회하지 못하도록 macOS High Sierra를 업데이트하려면 Security Update 2017-001의 보안 내용을 참조하십시오 .


이 질문의 제목은 계정을 제거하거나 비활성화하지 않기 때문에 현재 언급 된 XY입니다.
Monty Harder

답변:


40

사용 가능한 패치, 여기를 클릭하거나 컴퓨터에서 업데이트하십시오.

흥미롭게도 OSX의 베타 및 개발자 버전에는 아직까지 알려진 패치가 없습니다. 이 답변을 들으면 바로이 답변을 업데이트하겠습니다.

위의 패치를 다운로드하십시오. 역사를 위해 포스트의 나머지 부분을 떠나기 :-)

CVE는 CVE-2017-13872 이며 NIST는 가까운 시일 내에 분석업데이트 할 것입니다.

패치없이 관련된 원래 답변

먼저 GUI를 통해 루트 계정을 비활성화 하지 마십시오 . "비활성화 된"루트 계정이 문제의 원인입니다.

당신은해야 가능 루트 사용자를 하고 그것을 암호를 제공합니다. 입니다 중요한 취약점은 원격으로도 사용할 수 있기 때문에, VNC 애플 원격 데스크톱을 통해 (몇 가지 이름) (다른 소스) .

이를 수행하는 두 가지 기본 방법이 있습니다. GUI와 터미널.

먼저 GUI

루트 계정을 활성화하려면 "Directory Utility"(예 : cmd + space)로 이동하여 검색하십시오. 잠금을 눌러 "관리자 모드"의 잠금을 해제 한 다음 편집-> "루트 사용자 활성화"를 통해 루트 계정을 활성화하십시오.

루트를 활성화하는 방법

루트 암호를 요청해야하므로 이제 일반 암호를 입력하십시오 (따라서 잊지 마십시오). 암호를 요구하지 않으면 위의 편집-> "루트 암호 변경 ..."을 사용하십시오.

단말기

말기 사용자 인 경우 다음을 사용하십시오.

sudo passwd -u root
## Enter passwords as needed.... 
## (if you are using the terminal you should know what you are doing...)

이것은 터미널로 충분합니다 .GUI 방식의 문제는 터미널에 필요하지 않은 계정으로 암호를 설정해야한다는 것입니다.

노트

루트 계정에 암호가 설정되어 있어도 루트 계정을 비활성화하면 컴퓨터가 취약 해집니다. 루트 계정을 비활성화하는 작업은 범인으로 보입니다. 반복해서, "passwd"를 사용하는 터미널만을 통한 "ok"(GUI를 통해서만이 상태에 도달 할 수는 없지만) GUI를 사용하는 경우 루트 사용자가 활성화 되고 암호 가 있어야합니다 . "디렉토리 유틸리티"의 "루트 사용자 비활성화"는 루트 계정의 암호를 제거하여 취약한 암호가없는 루트 계정을 제공하는 것으로 보입니다.

시스템 로그인 창에서 "root"로 로그인을 시도하면 이전에 비활성화 된 경우 root 계정이 활성화됩니다. 즉, 루트 계정이 비활성화되어 있으면 시스템 로그인 창에서 루트 액세스 권한을 얻으려면 루트를 두 번 입력해야합니다. 첫 번째 시도에서 루트 계정이 활성화되어 있습니다 (를 통해 설정하지 않은 경우 암호 없음 passwd). 두 번째로 당신은 통과하려고합니다.

이 문제는 Apple 지원 포럼에서 언급 된 2017-11-13 (11 월 13 일) 이후 공개 된 것으로 보입니다 .

내가 틀렸다는 것을 증명해주세요. 지금 틀 렸음을 정말로 감사합니다.

무서운 업데이트

비밀번호가없는 루트 계정을 활성화 한 후 (즉, 시스템 환경 설정 패널을 통해 "잠금"을 클릭하고 빈 비밀번호로 "루트"를 한 번, 두 번 또는 세 번 (초기 상태에 따라 다름) 입력 한 경우) 로그온 할 수 있습니다 "루트"및 빈 암호 (!)를 사용하여 기본 로그인 화면에서 컴퓨터. SSH / Telnet은 작동하지 않지만 Apple Remote Desktop, Screen Sharing 및 VNC는 취약합니다.

따라서 네트워크 관리자의 경우 패킷을 일시적으로 다음 포트로 삭제하는 것이 좋습니다.

  • 가장 일반적인 VNC 포트를 얻으려면 5900-5905 (닌자 안전). VNC는 기본적으로 5900에서 시작하며 여러 디스플레이를 사용하는 경우 (흔하지는 않지만) 위쪽으로 열거됩니다. 화면 공유 및 애플은 원격 데스크톱 이러한 포트 (사용하는 것 애플 소프트웨어 포트의 목록 )
  • Apple Remote Desktop 용 3283 및 5988 ( Apple 소프트웨어 포트 목록 )

추가 자료 :

이 문제를 다루는 다른 출처를 참조하려는 용감한 시도. 더 많은 답변이 있으면 수정하고 업데이트하십시오.


5
자아 답변이 왜 틀렸는 지 봅니다. 결함 자체가 계정을 다시 활성화하기 때문에이 결함이 수정 될 때까지 루트를 비활성화하면 아무 효과가 없습니다. 의견을 제시 할 수 있도록 의견을 제시하십시오!
Freiheit

1
나는 맥 사람이 아니지만 * nix 세계에서 루트 암호를 비활성화하는 것이 안전한 암호를 갖는 것보다 덜 안전해서는 안됩니다. 실제로 비밀번호를 비활성화하고 쉘을 /dev/nullroot 로 설정하는 것이 매우 일반적 입니다. 이런 방식으로 루트 계정에 대한 액세스 su는 해당 권한이있는 사용자의 syscall을 통해 발생합니다 .
crasic

1
@crasic AFAIK OSX는 시스템 로그인 창에서 이상한 일을합니다. 그들은 일반적으로 계정을 사용하거나 시도하면 루트를 구체적으로 사용합니다. 그리고이 행동에 대한 문서는 사실상 없습니다. BSD 사양 (예 : 명령 줄 / bash 사용법)은 문제가되지 않습니다.
flindeberg 5

따라서 터미널 명령을 사용하면 루트를 활성화하지 않고 루트 비밀번호를 설정할 수 있습니다. 가장 안전한 옵션 인 것 같습니다.
wisbucky

1
@ jcm Nah, 실제로 텍스트를 조금 움직 인 후에는 매우 나쁜 말이 아닙니다. 나는 그것을 조금 정리하려고 노력할 것이다.
flindeberg

10

공식 패치를 설치할 수 없거나 패치 가 효과가 있다고 믿지 않으려면

High Sierra에서만 루트 사용자를 비활성화하지 않습니다.

Mac을 보호하려면 긴 보안 암호로 루트를 활성화하십시오.

macOS에 대해 다음 풀 포인트 릴리스가 출시 될 때까지 10.13.2 일 때까지이를 변경하지 않습니다.


조치를 취하지 않으면 루트 사용자는 기본적으로 비활성화되며 Mac이 올바르게 패치되지 않으면 나빠집니다.

원하는 경우 Apple에 공식 패치 또는 수정 사항이있을 때까지 선택적으로 쉘을 강화하십시오.

다음은 임의의 루트 비밀번호를 설정하고 루트 쉘을 변경 / 설정 /usr/bin/false하여 비밀번호를 추측하더라도 루트 쉘이 로그인 할 수 없도록 하는 훌륭한 스크립트 입니다.

기본적으로 세 가지 주요 작업을 수행합니다.

rootpassword=$(openssl rand -base64 32)
/usr/bin/dscl . -passwd /Users/root "$rootpassword"
/usr/bin/dscl . -create /Users/root UserShell /usr/bin/false

UserShell 작성은 쉘이 설정되어 있지 않은 경우 전체 스크립트는 기존 쉘을 검사하여이를 쉘 -change대신 사용 -create합니다.

macOS High Sierra의 루트 취약점으로부터 어떻게 자신을 보호합니까?


1
일반적으로 이와 같이 비밀번호를 저장하지 않는 것이 좋습니다. dcsl man 페이지가 나왔다 "명령의 일부로 암호를 제공하지 않고 안전하게하라는 메시지가 표시됩니다"
조쉬 캐스 웰

1
@JoshCaswell 동의-변수를 내 보내지 않고 생성하기 때문에 스크립트에 넣는 것이 좋습니다. 다행 인 것은 애플이 공식적으로 패치를 해킹하여 생필품을 짧게 만들 수 있다는 점입니다. 우리는이 암호를 함대 전체에서 동일한 암호를 하드 코딩하거나 암호를 전혀 사용하지 않는 데 큰 도움이됩니다. 그것은 해결책이 아닌 타협이었습니다.
bmike

순수한 호기심으로 답이 끝날 때 왜이 질문에 대한 링크가 있습니까?
reirab

1
@reirab 완전히 엉망. 올바른 링크를 수정하려면 편집을 참조하십시오. 감사!
bmike


0

루트 사용자로 로그인하고 비밀번호를 강력한 것으로 변경해야합니다. 실제로 기존 루트 계정을 사용하지 않고 새 계정을 만드는 경우 먼저 해당 계정을 삭제해야합니다.


내 답변을 참조하십시오. 강력한 암호를 설정하라는 조언은 합리적이지만 계정을 완전히 비활성화하면 훨씬 더 강력한 보호처럼 보이고 OS X를 기본 상태로 복원합니다. support.apple.com/en-us/HT204012 . 루트 계정이 다시 활성화 된 경우에도 설명 된 버그를 악용하지 않도록 강력한 암호 보호 기능을 설정합니까?
Freiheit

High Sierra, 10.13.0 및 10,13.1에서는 루트 계정을 비활성화 하지 않는 것이 좋습니다. 문제는 루트가 비활성화되어 있고 로그인 창을 사용 하여 루트 로 로그인하려고하면 로그인 창이 빈 암호로 루트 계정을 활성화 한다는 것 입니다. 루트가 이미 강력한 비밀번호로 사용 가능한 경우, 로그인 창은 비밀번호를 지우지 않습니다. 유일한 완화 방법은 강력한 암호로 루트 를 활성화 하는 것 입니다.
브라이언 라이터

0

Apple은이 문제를 해결하기 위해 업데이트를 릴리스했습니다.

보안 업데이트 2017-001 https://support.apple.com/en-us/HT208315

또한 Mac 컴퓨터에 대한 무단 액세스를 방지하려면 루트 사용자 계정을 활성화하고 루트 사용자에 대한 암호를 특별히 설정해야합니다.

https://support.apple.com/en-ph/HT204012

루트 사용자 계정이 이미 활성화 된 경우 빈 암호 취약점이 설정되지 않도록 암호를 변경하십시오.


0

아니! 루트 계정을 제거하지 마십시오!

우선, root모든 버전의 macOS, Mac OS X, Mac OS 및 심지어 고대 버전의 운영 체제에도 존재합니다. macOS는 최근 취약점으로 인해이 계정을 만들지 않았습니다. 우연히 노출되었을뿐입니다.

제거 root하는 것은 매우 나쁜 생각이며 그 이유를 알려 드리겠습니다.

중요한 서비스 (GUI를 실행하는 WindowServer 등) 를 실행하기에 충분한 권한이있는 계정이 없기 때문에 macOS를 완전히 손상 시킬 수 있습니다 . 실마리가없는 사용자가를 제거하지 못하도록하는 보호 장치가 있으며 root이를 우회해서는 안됩니다.

시스템에서 가장 중요한 프로세스 인 활동 모니터를 사용하여 가장 중요한 프로세스를 누가 실행하는지 확인하십시오 .

kernel_task 및 launchd도 소유

이봐, root다시 우리의 친절한 이웃 이야! 첫 번째 프로세스 (PID 0 사용)는 실제로 커널에 의해 제어되며 어쨌든 전체 권한을 갖지만 아마도 자식 프로세스 launchd(로그인 창 및 창 서버 자체와 같은 서비스 시작에 책임)는의 권한으로 시작됩니다 root. 경우 root존재하지 않았다,이 프로세스가 시작되지 않을 것이다, 또는 아무 권한이 없을 것이다.

루트 계정 보안

다른 답변은 Apple에서 발표 한 패치를 제공하여 문제를 해결해야합니다. 그러나 설치할 수 없거나 설치하지 않으려는 경우 ...

비활성화 된 계정 (루트)이 오래된 해시로 잘못 감지되어 macOS가 입력 한 비밀번호를 "업그레이드"로 다시 해시하기 때문에 작동합니다. 여전히 올바르지 않다고 말하지만 다음에는 해시가 일치하므로 (macOS가 변경했기 때문에) 당신을 들여 놓을 것입니다.

보안을 유지하려면 root디렉토리 유틸리티를 사용해야합니다. 액세스하는 두 가지 방법이 있습니다.

  1. 스포트라이트를 사용하십시오. Spotlight를 사용하여 디렉토리 유틸리티 시작
  2. Finder를 사용하십시오. Finder를 열고 Command + Shift + G를 누르십시오 (또는을 선택 /System/Library/CoreServices/Applications/하고을 입력 한 다음 Go를 누르거나 Enter를 누르십시오). 그런 다음 거기에서 디렉토리 유틸리티를여십시오.이동 선택 갈 곳 선택 디렉토리 유틸리티 열기

디렉토리 유틸리티를 연 후에는 잠금을 클릭하여 변경하십시오

그런 다음 편집 메뉴 에서 Change Root Password또는 Enable Root User을 선택하십시오 . Change Root Password루트 계정이 이미 강력한 암호로 활성화되어 있기 때문에 표시 됩니다.

루트 비밀번호 변경 선택

비밀번호를 선택하면 빈 비밀번호가 더 이상 작동하지 않습니다.

비밀번호 선택

축하합니다! 더 이상 루트 핵에 취약하지 않습니다.


"순수한 추측으로 추측하면 올바른 암호를 입력했기 때문에 시스템은 아마도 루트 계정을 다시 활성화 할 것입니다 (이 경우에는 비어 있음)."-정확하지 않습니다. 이전 해싱 메커니즘을 사용하여 비밀번호를 업데이트하는 마이그레이션 경로가 !있으며 UNIX 유형으로 인식 할 수있는 올바르게 처리되지 않습니다 .
찰스 더피

근본 원인 분석에 대해서는 objective-see.com/blog/blog_0x24.html 을 참조하십시오 .
찰스 더피

맞아-그래서 내 추측은 정확하지 않았다. 비활성화 된 계정에 오래된 해시가있는 것으로 잘못 감지되었으므로 빈 암호를 "업그레이드"로 다시 해시합니까? 제가 맞습니까?
Dev

이론적 으로이 코드 경로에서해야 할 일은 이전 해시 알고리즘이 입력 한 암호의 유효성을 검사 한 다음 새 해시 (이전 암호와 일치하는 것으로 알려진 입력 된 암호)로 업데이트하는 것입니다. 실제로는 "ShadowHash"필드에서 이전 해시를 검색해야하는 함수의 오류를 확인하지 않습니다 (또는 반환 값만 확인하지만 반환에 사용 된 참조 별 값은 확인하지 않음). 비교 결과)를 입력 한 다음 암호에서 새 해시를 생성합니다 (비어 있음 여부).
Charles Duffy

... 그래, 당신은 맞습니다. :)
Charles Duffy 2012
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.