Show Menu
화제×

AEM의 정리 문제 완화

개요

Adobe의 AEM 팀은 CVE-2015-7501에 설명된 취약점 완화를 지원하기 위해 오픈 소스 프로젝트 NotSoSerial ​와 긴밀히 협력하고 있습니다. NotSoSerial는 Apache 2 라이선스에 따라 라이선스가 부여되고 자체 BSD 유사 라이선스에 따라 라이선스가 부여된 ASM 코드를 포함합니다 .
이 패키지에 포함된 에이전트 jar는 Adobe에서 수정한 NotSoSerial 배포입니다.
NotSoSerial는 Java 수준 문제에 대한 Java 수준 솔루션이며 AEM에 고유하지 않습니다. 객체를 역직렬화하려는 시도에 프리플라이트 검사가 추가됩니다. 이 검사는 방화벽 스타일 허용 목록 및/또는 차단 목록에 대해 클래스 이름을 테스트합니다. 기본 블록 목록의 클래스 수가 제한되어 있으므로 시스템 또는 코드에 영향을 주지 않을 수 있습니다.
기본적으로 에이전트는 현재 알려진 취약점 클래스에 대해 블록 목록 검사를 수행합니다. 이 블록 목록은 이 유형의 취약점을 사용하는 현재 악용 목록으로부터 사용자를 보호하기 위한 것입니다.
이 문서의 에이전트 구성 섹션에 있는 지침에 따라 블록 목록 및 허용 목록을 구성할 수 있습니다.
상담원은 최근에 알려진 취약한 계층들을 완화시키기 위해 노력하고 있다. 프로젝트에서 신뢰할 수 없는 데이터를 역직렬화하는 경우 서비스 거부(DoS) 공격, 메모리 부족 공격 및 알 수 없는 향후 역직렬화 악용에 취약할 수 있습니다.
Adobe는 공식적으로 Java 6, 7 및 8을 지원하지만 NotSoSerial도 Java 5를 지원한다는 점을 이해합니다.

에이전트 설치

이전에 AEM 6.1용 직렬화 핫픽스를 설치한 경우 java 실행 라인에서 에이전트 시작 명령을 제거하십시오.
  1. com.adobe.cq.cq-serialization-tester 번들을 설치합니다.
  2. 번들 웹 콘솔( https://server:port/system/console/bundles
  3. 직렬화 번들을 찾아 시작합니다. 이 자동 로드는 NotSoSerial 에이전트를 동적으로 자동 로드해야 합니다.

응용 프로그램 서버에 에이전트 설치

NotSoSerial 에이전트는 응용 프로그램 서버용 AEM의 표준 배포에 포함되지 않습니다. 그러나 AEM jar 배포에서 추출하여 애플리케이션 서버 설정과 함께 사용할 수 있습니다.
  1. 먼저 AEM 빠른 시작 파일을 다운로드하고 추출합니다.
    java -jar aem-quickstart-6.2.0.jar -unpack
    
    
  2. 새로 압축을 푼 AEM 빠른 시작 위치로 이동한 후 crx-quickstart/opt/notsoserial/ 폴더를 AEM 애플리케이션 서버 설치 crx-quickstart 폴더에 복사합니다.
  3. 서버를 실행 중인 사용자 /opt 로 소유권 변경:
    chown -R opt <user running the server>
    
    
  4. 이 문서의 다음 섹션에 표시된 대로 에이전트가 제대로 활성화되었는지 구성 및 확인합니다.

에이전트 구성

대부분의 설치에는 기본 구성이 적합합니다. 여기에는 알려진 원격 실행 취약점 클래스의 블록 목록과 신뢰할 수 있는 데이터의 역직렬화가 비교적 안전해야 하는 패키지의 허용 목록이 포함됩니다.
방화벽 구성은 동적이며, 다음 방법으로 언제든지 변경할 수 있습니다.
  1. 웹 콘솔( https://server:port/system/console/configMgr
  2. 방화벽 구성 역직렬화 검색 및 클릭
    다음 위치의 URL에 액세스하여 구성 페이지에 직접 액세스할 수도 있습니다.
    • https://server:port/system/console/configMgr/com.adobe.cq.deserfw.impl.DeserializationFirewallImpl
이 구성에는 허용 목록, 차단 목록 및 역직렬화 로깅이 포함됩니다.
목록 허용
In the allow listing section, these are classes or package prefix that will be allowed for deserialization. 자신의 클래스를 역직렬화하는 경우 클래스 또는 패키지를 이 허용 목록에 추가해야 합니다.
블록 목록
블록 목록 섹션에는 역직렬화에 허용되지 않는 클래스가 있습니다. 이러한 클래스의 초기 집합은 원격 실행 공격에 취약하다고 발견된 클래스로 제한됩니다. 나열된 항목 허용 전에 블록 목록이 적용됩니다.
진단 로깅
진단 로깅의 섹션에서 역직렬화가 발생할 때 여러 옵션을 선택하여 기록할 수 있습니다. 처음 사용할 때만 기록되며 이후 사용 시 다시 기록되지 않습니다.
기본적으로 class-name-only 는 deserialize되고 있는 클래스를 알려 줍니다.
첫 번째 deserialization 시도의 java 스택을 기록할 전체 스택 옵션을 설정하여 deserialization이 진행되고 있는 위치를 알려줍니다. 사용으로부터 역직렬화를 찾아 제거하는 데 유용합니다.

에이전트의 활성화 확인

다음 URL에서 URL을 찾아 역직렬화 에이전트의 구성을 확인할 수 있습니다.
  • https://server:port/system/console/healthcheck?tags=deserialization
URL에 액세스하면 에이전트와 관련된 상태 확인 목록이 표시됩니다. 상태 검사가 전달되고 있는지 확인하여 에이전트가 제대로 활성화되었는지 확인할 수 있습니다. 장애가 발생한 경우 에이전트를 수동으로 로드해야 할 수 있습니다.
에이전트 문제 해결에 대한 자세한 내용은 아래의 동적 에이전트 로드 시 오류 처리를 참조하십시오.
허용 목록 org.apache.commons.collections.functors 에 추가하는 경우 상태 검사가 항상 실패합니다.

다이내믹 에이전트 로드 오류 처리

로그에 오류가 노출되거나 확인 단계에서 에이전트를 로드하는 데 문제가 감지되면 에이전트를 수동으로 로드해야 할 수 있습니다. 동적 로딩 도구를 사용할 수 없으므로 JDK(Java Development Toolkit) 대신 JRE(Java Runtime Environment)를 사용하는 것도 좋습니다.
에이전트를 수동으로 로드하려면 아래 지침을 따르십시오.
  1. 다음 옵션을 추가하여 CQ jar의 JVM 시작 매개변수를 수정합니다.
    -javaagent:<aem-installation-folder>/crx-quickstart/opt/notsoserial/notsoserial.jar
    
    
    이 작업을 수행하려면 -nofork CQ/AEM 옵션뿐만 아니라 해당 JVM 메모리 설정과 함께 -nofork CQ/AEM 옵션도 사용해야 합니다. 이는 에이전트가 잘못된 JVM에서 활성화되지 않기 때문입니다.
    NotSoSerial 에이전트 jar의 Adobe 배포는 AEM 설치 crx-quickstart/opt/notsoserial/ 폴더에서 찾을 수 있습니다.
  2. JVM 중지 및 다시 시작