30억 장치에서 임의의 코드를 실행할 수 있는 Java

면책 사항
이 글이 소개한 내용은 교육 목적이나 취약성의 구조를 이해하고 전달하며 계발하기 위해 만들어졌다.
절대 남용하지 마세요.
기재된 코드를 집행할 때 발생하는 손해는 일체 책임을 지지 않는다.
이해한 사람만 아래로 굴러주세요.
경과
2021/12/9에서 유명한 로그 출력 라이브러리log4j의 2세대가 임의의 코드를 실행할 수 있음을 보고했다.
Apache Log4j2 jndi RCE #apache #rce https://t.co/ZDmc7S9WW7 pic.twitter.com/CdSlSCytaD — p0rz9 (@P0rZ9) December 9, 2021


※ 위에서 설명한 대로 특정 문자열을 출력하고, 드로잉 도구(draw.exe)를 실행합니다.


마인크래프트(Java 버전)의 채팅 기능에서 이 취약한 공격을 이용해 패치를 수정하는 데 바쁘다고 한다.br/>



log4j는



자바 언어로 웹 응용 프로그램이나 시스템을 구축할 때의 로그인 라이브러리입니다br/>
Apache 재단 OSS를 지원하는 단체에서 제공, 유지 보수br/>
가져오기도 쉽습니다. 설정 파일에 따라 상세한 로그 설정을 할 수 있습니다. 일본을 제외한 전 세계 시스템에서도 1p>


원인


출력 문자열의 로그 기능이 왜 문제가 되었는지
log4j2 다른 기록 라이브러리와 달리 확인 문자열 중 특정한 문자열의 경우 변수로 바꾸는 기능이 있다.(lookup이라고 하는 것 같다)


위만 해도 문제없지만 이번에 남용된 구조Jdni Lookup는 인터넷을 통해 변수를 검색하는 구조입니다.br/>
검색된 값이 서버에서 실행되기 때문에 서버에서 임의의 프로그램을 실행할 수 있습니다p>


구조


는 단지 하나의 예일 뿐이지만, 나는 그림으로 구조를 표시해 보았다br/>



부식 9450; 전제2


  • 사용자가 입력한 문자열을 그대로 출력하는
  • 시스템 속성의 log4j2.formatMsgNoLookups가 잘못되었습니다
  • 시스템 속성의 com.sun.jndi.ldap.object.trustURLCodebase 유효


① 공격 코드 입력


채팅 등 로그 입력값을 직접 출력하는 기능에 대해 임의의 코드를 입력합니다.



② 중간 서버 액세스


서버(Minecraft)는 Jndi Lookup 기능을 사용하여 공격자가 준비한 중계 서버에 변수를 검색합니다br/>
트렁크 서버는 공격자가 준비한 웹 서버로도 리디렉션됩니다.



③ 웹 서버로 리디렉션


웹 서버에서 요청 경로에 기재된 값과 일치하는 프로그램 파일을 되돌려줍니다.Java의 경우.class 파일이죠.



④ 악성 프로그램의 실행


.class 서버 실행 파일에 기재된 내용입니다.여기 와서 뭘 당할지 모르겠어요.p>


검증


상기 메커니즘을 이용하여 현지 환경에서 취약성을 검증하였습니다


  • 사용 환경(OS): MacBook
  • Mincraft3(왼쪽): Eclipse2021-03(4.19.0)
  • 중계 서버 (오른쪽 위):marshalsec.jndi.LDAPRefServer
  • 웹 서버(오른쪽 아래): 파이톤HTTP.Serverモジュール
  • 악성 프로그램(왼쪽 아래): 서버 내의 Calculator.app(계산기) 시작


대책


이 취약성은 CVE-2021-44228로 정의됩니다.글의 내용을 요약합니다.


  • log4j-apilog4j-core의 버전을 2.15.0
  • 로 설정
  • 시스템 속성 활성화log4j2.formatMsgNoLookups
  • 시스템 속성 해제com.sun.jndi.ldap.object.trustURLCodebase
  • 클래스 경로에서 JndiLoop 클래스 제거

log4j를 사용하지 않기 위해 시스템 수정 방법이 비현실적이라고 생각하기 때문에 임의의 방법으로 해결할 필요가 있다p>

자신의 클럽에서 노는 아이들 또는 상기 관련 서버 운영자br/>
빨리 처리하십시오.



총결산


제가 이렇게까지 열정을 쏟고 기사를 쓸 줄은 몰랐어요.br/>
자바를 사랑하는 IT 강사로서 IT 엔지니어를 양성하고 이 소동이 빨리 가라앉고 안심하고 수업을 했으면 좋겠다

그래서 Java남에게 말하고 싶지 않다p>





  1. iCloud, Steam 등 세계적으로 사용자가 많은 서비스에도 영향을 미친다https://www.itmedia.co.jp/news/articles/2112/10/news157.html



  2. NIST https://nvd.nist.gov/vuln/detail/CVE-2021-44228  



  3. Minecraft를 사용할 수 없기 때문에 간단한 웹 응용 프로그램으로 제작




좋은 웹페이지 즐겨찾기