엔드포인트용 Microsoft Defender에서 Log4Shell 취약성을 관리하는 방법 알아보기
Log4Shell 취약성은 Apache Log4j 2 로깅 라이브러리에 있는 RCE(원격 코드 실행) 취약성입니다. Apache Log4j 2는 일반적으로 많은 소프트웨어 애플리케이션 및 온라인 서비스에서 사용되므로 전 세계 기업에서 복잡하고 위험 수준이 높은 상황을 나타냅니다. "Log4Shell"(CVE-2021-44228, CVE-2021-45046)이라고 하며 공격자가 악용하여 데이터를 추출하고 조직에 랜섬웨어를 배포할 수 있는 새로운 공격 벡터를 소개합니다.
참고
조직 보호를 위한 취약성 및 제품별 완화 권장 사항에 대한 지침 및 기술 정보는 Log4j 2 취약성의 악용을 방지, 감지 및 헌팅하기 위한 블로그 지침 및 Microsoft 보안 대응 센터를 참조하세요.
검색, 모니터링 및 완화 기능 개요
Defender 취약성 관리는 Log4Shell 취약성에 대한 조직의 노출을 식별, 모니터링 및 완화하는 데 도움이 되는 다음 기능을 제공합니다.
- 검색: 검색되었지만 아직 온보딩되지 않은 엔드포인트용 Microsoft Defender 온보딩 디바이스와 디바이스 모두 노출된 디바이스의 검색은 취약한 소프트웨어와 디스크에서 검색된 취약한 파일을 기반으로 합니다.
- 위협 인식: 조직 노출을 평가하기 위한 통합 보기입니다. 이 보기는 디바이스 수준 및 소프트웨어 수준에서 노출을 표시하고, 마지막으로 본 시간, 마지막으로 실행된 시간 및 열린 포트로 실행된 마지막 시간과 같은 취약한 파일에 대한 세부 정보에 대한 액세스를 제공합니다. 이 정보를 사용하여 수정 작업의 우선 순위를 지정할 수 있습니다. 노출된 디바이스와 관련된 데이터가 대시보드에 표시되는 데 최대 24시간이 걸릴 수 있습니다.
- 완화 옵션: 완화 옵션을 적용하여 노출 위험을 낮출 수 있습니다.
- 고급 헌팅: 고급 헌팅을 사용하여 디스크에서 식별된 취약한 log4j 파일에 대한 세부 정보를 반환합니다.
참고
이러한 기능은 Windows 11, Windows Server, Linux 및 macOS와 & Windows 10에서 지원됩니다.
Linux를 지원하려면 엔드포인트용 Microsoft Defender Linux 클라이언트 버전 101.52.57(30.121092.15257.0) 이상이 필요합니다.
macOS를 지원하려면 엔드포인트용 Microsoft Defender macOS 클라이언트 버전 20.121111.15416.0 이상이 필요합니다.
지원되는 버전에 대한 자세한 내용은 지원되는 운영 체제 플랫폼 및 기능을 참조하세요.
노출된 디바이스 검색
Microsoft Defender 포털에서 Log4j 검색을 사용하도록 설정하는 기능과 함께 포함된 Defender 취약성 관리 기능은 Log4Shell 취약성에 노출된 디바이스를 검색하는 데 도움이 됩니다.
온보딩된 디바이스는 취약한 소프트웨어 및 파일을 검색할 수 있는 기존 포함된 Defender 취약성 관리 기능을 사용하여 평가됩니다.
검색되었지만 아직 온보딩되지 않은 디바이스에서 검색하려면 Log4j 검색을 사용하도록 설정해야 합니다. 이렇게 하면 디바이스 검색이 네트워크를 적극적으로 검색하는 것과 동일한 방식으로 프로브가 시작됩니다. 검색에는 온보딩된 여러 엔드포인트(Windows 10+ 및 Windows Server 2019+ 디바이스)와 서브넷 내에서만 검색하여 CVE-2021-44228에 취약하고 원격으로 노출된 디바이스를 검색합니다.
Log4 검색을 사용하도록 설정하려면 다음을 수행합니다.
설정>디바이스 검색>검색 설정으로 이동합니다.
Log4j2 검색 사용을 선택합니다(CVE-2021-44228).
저장을 선택합니다.
이러한 프로브를 실행하면 조사 중인 디바이스 또는 검색 디바이스에 해로운 영향을 주지 않고 표준 Log4j 흐름이 트리거됩니다. 검색 자체는 검색된 디바이스에 여러 HTTP 요청을 보내고 일반적인 웹 애플리케이션 포트(예: 80,8000,8080,443,8443) 및 URL을 대상으로 하여 수행됩니다. 요청에는 프로브된 컴퓨터에서 DNS 요청을 트리거하는 JNDI 페이로드가 있는 HTTP 헤더가 포함됩니다.
예를 들어 사용자 에이전트: ${jndi:dns://192.168.1.3:5353/MDEDiscoveryUser-Agent} 여기서 192.168.1.3은 검색 컴퓨터의 IP입니다.
참고
Log4j2 검색을 사용하도록 설정하면 온보딩된 디바이스가 자체 검색을 사용하여 로컬 취약성을 검색합니다.
취약한 소프트웨어 및 파일 검색
Defender 취약성 관리는 검색에 도움이 되는 검색 계층을 제공합니다.
취약한 소프트웨어: 검색은 Log4j 원격 코드 실행에 취약한 것으로 알려진 설치된 애플리케이션 CPE(Common Platform 열거형)를 기반으로 합니다.
취약한 파일: 메모리의 파일과 파일 시스템의 파일 모두 평가됩니다. 이러한 파일은 알려진 취약한 버전이 있는 Log4j-core jar 파일 또는 취약한 jndi 조회 클래스 또는 취약한 log4j-core 파일이 포함된 Uber-JAR일 수 있습니다. 특히 다음을 수행합니다.
- JAR 파일을 검사하고 다음 파일을 검색하여 JAR 파일에 취약한 Log4j 파일이 있는지 확인합니다. \META-INF\maven\org.apache.logging.log4j\log4j\log4j-core\pom.properties - 이 파일이 있는 경우 Log4j 버전을 읽고 추출합니다.
- 는 "/log4j/core/lookup/JndiLookup.class" 문자열이 포함된 경로를 찾아 JAR 파일 내의 JndiLookup.class 파일을 검색합니다. JndiLookup.class 파일이 있는 경우 Defender 취약성 관리는 이 JAR에 pom.properties에 정의된 버전이 있는 Log4j 파일이 포함되어 있는지 확인합니다.
- 다음 문자열이 포함된 경로를 검색하여 중첩된 JAR 내에 포함된 취약한 Log4j-core JAR 파일을 검색합니다.
- lib/log4j-core-
- WEB-INF/lib/log4j-core-
- App-INF/lib/log4j-core-
이 표에서는 지원되는 플랫폼 및 버전 검색 기능에 대해 설명합니다.
기능 | 파일 형식 | Windows 10 이상, server2019+ |
Server 2012R2, server2016 |
Server 2008R2 | Linux + macOS |
---|---|---|---|---|---|
메모리에서 검색 | Log4j-core | 예 | 예[1] | - | 예 |
Uber-JARs | 예 | 예[1] | - | 예 | |
디스크의 모든 파일 검색 | Log4j-core | 예 | 예[1] | 예 | - |
Uber-JARs | 예 | 예[1] | - | - |
(1) Windows Server 2012 R2 및 2016에 KB5005292 설치된 경우 기능을 사용할 수 있습니다.
Log4Shell 노출 및 완화 옵션에 대해 알아보기
Microsoft Defender 포털에서 취약성 관리>약점으로 이동합니다.
CVE-2021-44228을 선택합니다.
취약성 페이지 열기를 선택합니다.
Log4Shell 취약성 완화
log4Shell 취약성은 기본 구성으로 Log4j 버전 2.10 - 2.14.1에서 JNDI 조회를 방지하여 완화할 수 있습니다. 이 완화 작업을 만들려면 위협 인식 대시보드에서 다음을 수행합니다.
취약성 세부 정보 보기를 선택합니다.
완화 옵션을 선택합니다.
노출된 모든 디바이스에 완화를 적용하거나 특정 온보딩된 디바이스를 선택할 수 있습니다. 프로세스를 완료하고 디바이스에 완화를 적용하려면 완화 작업 만들기를 선택합니다.
완화 상태
완화 상태는 JDNI 조회를 사용하지 않도록 설정하는 해결 방법 완화가 디바이스에 적용되었는지 여부를 나타냅니다. 노출된 디바이스 탭에서 영향을 받는 각 디바이스에 대한 완화 상태를 볼 수 있습니다. 이렇게 하면 완화 상태에 따라 디바이스의 완화 및/또는 패치의 우선 순위를 지정하는 데 도움이 될 수 있습니다.
다음 표에서는 잠재적인 완화 상태를 나열합니다.
완화 상태 | 설명 |
---|---|
해결 방법 적용됨 |
Windows: 최신 디바이스를 다시 부팅하기 전에 LOG4J_FORMAT_MSG_NO_LOOKUPS 환경 변수가 관찰되었습니다. Linux + macOS: 실행 중인 모든 프로세스는 환경 변수에서 LOG4J_FORMAT_MSG_NO_LOOKUPS=true입니다. |
다시 부팅 보류 중인 해결 방법 | LOG4J_FORMAT_MSG_NO_LOOKUPS 환경 변수가 설정되었지만 다음 재부팅이 검색되지 않았습니다. |
적용되지 않음 |
Windows: LOG4J_FORMAT_MSG_NO_LOOKUPS 환경 변수가 관찰되지 않았습니다. Linux + macOS: 실행 중인 모든 프로세스가 환경 변수에서 LOG4J_FORMAT_MSG_NO_LOOKUPS=true인 것은 아니며, 완화 작업이 디바이스에 적용되지 않았습니다. |
부분적으로 완화됨 | Linux + macOS: 디바이스에서 완화 작업이 적용되었지만 실행 중인 모든 프로세스가 환경 변수에서 LOG4J_FORMAT_MSG_NO_LOOKUPS=true인 것은 아닙니다. |
해당 없음 | 완화의 버전 범위에 없는 취약한 파일이 있는 디바이스입니다. |
알 수 없음 | 현재 완화 상태를 확인할 수 없습니다. |
참고
디바이스의 업데이트된 완화 상태를 반영하는 데 몇 시간이 걸릴 수 있습니다.
Log4Shell 취약성에 적용된 완화 되돌리기
완화를 되돌려야 하는 경우 다음 단계를 수행합니다.
Windows의 경우:
관리자 권한으로 실행하는 PowerShell 창을 엽니다.
다음 명령을 실행합니다.
[Environment]::SetEnvironmentVariable("LOG4J\_FORMAT\_MSG\_NO\_LOOKUPS", $null,[EnvironmentVariableTarget]::Machine)
변경 내용은 디바이스가 다시 시작되면 적용됩니다.
Linux의 경우:
/etc/environment 파일을 열고 LOG4J_FORMAT_MSG_NO_LOOKUPS=true 줄을 삭제합니다.
/etc/systemd/systemd/system.conf.d/log4j_disable_jndi_lookups.conf 파일을 삭제합니다.
/etc/systemd/user.conf.d/log4j_disable_jndi_lookups.conf 파일을 삭제합니다.
변경 내용은 디바이스가 다시 시작되면 적용됩니다.
macOS의 경우:
파일 setenv를 제거합니다. 다음 폴더의 LOG4J_FORMAT_MSG_NO_LOOKUPS.plist:
- /Library/LaunchDaemons/
- /Library/LaunchAgents/
- /Users/[username]/Library/LaunchAgents/ - 모든 사용자
변경 내용은 디바이스가 다시 시작되면 적용됩니다.
Apache Log4j 보안 권장 사항
Apache log4j와 관련된 활성 보안 권장 사항을 보려면 취약성 세부 정보 페이지에서 보안 권장 사항 탭을 선택합니다. 이 예제에서 Apache Log4j 업데이트를 선택하면 추가 정보가 포함된 다른 플라이아웃이 표시됩니다.
수정 요청을 선택하여 수정 요청을 만듭니다.
Microsoft Defender 포털에서 취약성 살펴보기
노출된 디바이스, 파일 및 소프트웨어가 발견되면 Microsoft Defender 포털에서 다음 환경을 통해 관련 정보가 전달됩니다.
소프트웨어 인벤토리
소프트웨어 인벤토리 페이지에서 CVE-2021-44228 을 검색하여 Log4j 소프트웨어 설치 및 노출에 대한 세부 정보를 확인합니다.
약점
약점 페이지에서 CVE-2021-44228 을 검색하여 Log4Shell 취약성에 대한 정보를 확인합니다.
고급 헌팅 사용
다음 고급 헌팅 쿼리를 사용하여 디바이스에 설치된 소프트웨어의 취약성을 식별할 수 있습니다.
DeviceTvmSoftwareVulnerabilities
| where CveId in ("CVE-2021-44228", "CVE-2021-45046")
다음 고급 헌팅 쿼리를 사용하여 디바이스에 설치된 소프트웨어의 취약성을 식별하여 디스크의 파일 수준 결과를 표시할 수 있습니다.
DeviceTvmSoftwareEvidenceBeta
| mv-expand DiskPaths
| where DiskPaths contains "log4j"
| project DeviceId, SoftwareName, SoftwareVendor, SoftwareVersion, DiskPaths