
Magento 2 패치 for CVE-2022-24086, CVE-2022-24087. 심층 템플릿 변수 이스케이프를 수행하여 RCE 취약점 및 관련 버그를 수정합니다. Magento를 업그레이드할 수 없거나 공식 패치를 적용할 수 없는 경우 이 패치를 시도해보세요.
Magento 2용 CVE-2022-24086, CVE-2022-24087 패치입니다. 템플릿 변수의 심층 이스케이프를 통해 RCE 취약점 및 관련 버그를 수정합니다. Magento를 업그레이드할 수 없거나 공식 패치를 적용할 수 없는 경우 이 패치를 시도해 보세요.
CVE-2022-24086(CVE-2022-24087 포함)는 2022년 초에 발견되었습니다.
영향을 받는 스토어에는 이 원격 코드 실행(RCE) 취약점이 해결 방법 없이 존재합니다. 2022년 2월에 2개의 공식 격리 패치가 출시되었습니다.
하지만 2024년 후반에도 우리는 여전히 이 문제에 대한 문의를 받고 있으며, 해킹된 스토어에서 이 취약점이 악용된 것이 확인되었습니다. 관찰된 공격은 템플릿 지시문이 포함된 문자열을 입력하여 수행되었습니다. 일반적으로 체크아웃 프로세스를 이용하거나 사용자가 제어할 수 있는 필드가 포함된 이메일 전송을 유발할 수 있는 동작 등을 통해 이루어집니다.
이 광범위한 공격과 일부 스토어가 여전히 영향을 받지 않는 버전으로 업그레이드하거나 2개의 공식 패치를 적용하는 데 어려움을 겪고 있기 때문에 이 패치를 만들었습니다.
이 패치를 확장 모듈로 만들면서 호환성을 염두에 두었습니다. 주로 Magento 2.4 시리즈에서 테스트되었습니다.
공식 문서에서는 "var 지시문이나 매개변수로 사용될 때 변수에서 메서드를 더 이상 호출할 수 없다"고 명시되어 있지만, 확인 결과 최신 버전(2.4.7-p3)에서도 데이터 객체의 'Getter' 메서드 호출과 이메일 템플릿 객체(\Magento\Email\Model\AbstractTemplate)의 getUrl 메서드 호출은 여전히 허용됩니다.
이 패치(확장 모듈)도 위 기능을 유지합니다. 따라서 {{var data_object.something}}와 {{var data_object.getSomething()}}는 모두 사용 가능하며 동일합니다.
getUrl 예시:
{{var this.getUrl($store,'route_id/controller/action',[_query:[param1:$obj.param1,param2:$obj.param2],_nosid:1])}}
요약: 이 확장 모듈 설치 후:
\Magento\Framework\DataObject 또는 그 하위 인스턴스가 아닌 객체는 접근할 수 없습니다.\Magento\Framework\DataObject 및 그 하위 인스턴스에서는 'Getter' 메서드만 허용됩니다.getUrl 메서드는 this에서만 작동합니다.RCE를 막기 위해 LegacyResolver 제거됨.
자식 템플릿을 위해 '서명이 있는 지연 지시문'이 도입되었습니다. 보안 강화 효과는 확실하지 않습니다.
아직 수정되지 않은 버그가 있습니다(#39353).
템플릿 필터링 과정 전에 '심층 템플릿 변수 이스케이프'를 사용합니다. LegacyResolver는 이스케이프된 사용자 데이터만 수신하므로 유지될 수 있습니다.
Magento 2.3 또는 2.4
composer require wubinworks/module-template-filter-patch
이 확장 모듈이 마음에 들거나 도움이 되셨다면, 이 저장소에 ★별★을 눌러주세요.