Offcanvas

개발자 / 보안 / 애플리케이션

‘로그4j’ 사태, 아직 끝나지 않았다··· 앱 개발자가 해야 할 3가지

2021.12.31 David Strom  |  InfoWorld
이미 위험에 처했을지도 모르는 이유, 로그4j 취약점을 탐지 및 완화하는 방법, 앞으로 코드 보안을 개선하는 방법을 자세하게 살펴본다. 

이달 초 보안 연구진은 수만 개의 웹 애플리케이션에서 사용되는 ‘로그4j’ 자바 소프트웨어에서 취약점을 발견했다. 이 코드는 마인크래프트(Minecraft)부터 스팀(Steam), 아이클라우드(iCloud), 포티넷(Fortinet), 레드햇(Red Hat)까지 모든 소비자 및 기업 시스템에서 널리 사용되고 있다. 한 전문가는 수백만 개의 엔드포인트가 위험에 처할 수 있다고 추정했다.
 
ⓒGetty Images

로그4j는 솔라윈즈와 카세야 등 일련의 소프트웨어 공급망 공격 중 가장 최근에 발생한 일이다. 로그4j 취약점이 밝혀진 이후 많은 보안업체 및 애널리스트가 무엇을 해야 하는지 여러 정보를 공개했다. 이를테면 거진 최후의 날에 가까운 시나리오를 게시한 사람도 있었고, 덜 심각하게 전망하는 사람도 있었다. 

체크포인트 소프트웨어 테크놀로지스(Check Point Software Technologies)에 따르면 고객층의 절반가량에서 취약점 공격이 발견됐다. 콘트라스트 시큐리티(Contrast Security)는 자바 애플리케이션의 58%에 취약한 버전이 존재하지만 실제로 로그4j를 사용하는 경우는 37%에 불과한 것으로 조사됐다고 전했다. 

4가지 문제는 CVE-2021-44228, CVE-2021-45046, CVE-2021-4104, CVE-2021-45105다. 美 사이버보안 및 인프라 보안국(Cybersecurity and Infrastructure Security Agency; CISA)은 영향을 받은 애플리케이션 목록다양한 벤더 블로그 링크를 포함한 웹 페이지를 공개하고 지속적으로 업데이트하고 있다. 

이 문제는 원격 코드 실행을 허용하는 JDNI(Java Naming and Directory Interface) 및 JM어펜더(JMSAppender) 이벤트 메시지와 같은 로깅 소프트웨어의 여러 기능과 관련돼 있다. 이러한 취약점이 위험한 이유는 공격자가 원격 액세스를 확보하는 데 많은 전문지식을 필요로 하지 않기 때문이다. 마지막 취약점은 서비스 거부 상태를 나타낸다. 그리고 최근 블루미라(Blumira)는 웹소켓(WebSockets)을 사용하여 전체 표면을 넓히는 새로운 공격 벡터를 발견했다.

아직 로그4j 사태는 끝나지 않았다. 분명한 것은 애플리케이션 개발자가 단기적 그리고 장기적으로 해야 할 일이 있다는 점이다. 

이미 위험에 처했을 수 있다
미티가(Mitiga)의 COO 에리얼 판즈는 “조직이 이미 과거에 로그4j를 사용한 해킹을 당했는지 확인해야 한다. 공격자들이 이미 안에 있을지도 모른다”라고 경고했다. 

IT 관리자 존 크로닌은 몇 가지 질문을 던졌다. “어떤 서버가 로그4j를 사용하고 있는지 알고 있는가? 해당되는 서버 목록을 작성하는 데 얼마나 걸리는가? 당장 패치할 수 있는가? 자동화된 도구가 있는가? 아니면 누군가 모든 서버에 로그인하여 수동으로 해야 하는가? 사용량이 가장 많은 시간에 라이브 프로덕션 서버를 패치하는 프로세스가 있는가?”

보안 애널리스트들은 지난 2021년 12월 1일 LDAP, RMI, DNS, HTTP를 포함한 광범위한 네트워크 프로토콜을 사용하는 취약점 공격을 발견했다. 이 익스플로잇은 숨겨진 암호화폐 채굴기, 비트디펜더(Bitdefender)에서 콘사리(Khonsari)라고 부르는 새로운 랜섬웨어군, 미라이(Mirai) 봇넷을 연결시키는 코드 등 다양한 멀웨어를 설치했다. 그리고 설상가상으로 여러 연구진은 중국, 북한, 터키, 이란의 정부 지원 해커들이 감행한 취약점 공격을 보고했다.

즉각적인 방어 계획
첫 번째 방어선은 최신 로그4j 버전으로 업그레이드하는 것이다. 처음에 아파치는 여전히 취약점이 있는 것으로 밝혀진 패치를 릴리즈했다. 최신 버전은 자바 8 이상을 실행한다면 로그4j v.2.17.0이고, 웹 앱 인프라에서 자바 7을 구동한다면 로그4j v.2.12.2다. 

이는 기본적으로 JNDI를 끄고, 메시지 조회 액세스를 제거한다. 둘 다 취약점의 핵심이다. JNDI를 비활성화하면 앱에서 문제가 발생할 수 있기 때문에 프로덕션 시스템에서 구현하기 전에 신중하게 테스트해야 한다. 애플리케이션에 필요하지 않은 자바 기반 로깅을 중단할 수도 있다. 물론 배포 전에 다시 한번 테스트해야 한다. 

마인크래프트 서버를 운영하고 있는 사람들은 마인크래프트 v.1.8.8 이상 버전을 사용하는지 확인해야 한다. 이 버전들이 취약하다. 마이크로소프트는 이 문제를 해결한 마인크래프트 v.1.18.1을 릴리즈했다. 즉시 업그레이드하거나, 문제를 해결한 신뢰할 수 있는 다른 서버를 찾아야 한다.

사용할 수 있는 탐지 도구
다음은 실행 중인 애플리케이션이나 소스 파일에서 취약한 코드를 찾는 데 사용할 수 있는 스캐너 목록이다. 해당 코드가 프로덕션 인스턴스에 배포됐는지 확인해야 한다.

• 퀄리스(Qualys)는 웹 애플리케이션 스캐너의 30일 무료 체험판을 제공하며, 블로그에서 사용법 설명을 확인할 수 있다.

• 체크포인트(Check Point)는 CGAS(CloudGuard AppSec) 스캐너의 30일 무료 체험판을 제공하고 있다.

• CERT는 윈도우, 파이썬, 배시를 사용하여 작성된 일련의 스캐너를 제공한다.

• 버프 스위트(Burp Suite)를 사용한다면 IBM의 X포스(X-Force)에 무료 스캐너가 있고, 사일런트시그널(SilentSignal)에 플러그인이 있다.

• 화이트소스(WhiteSource)는 무료 스캐너를 제공한다.

• 제이프로그(JFrog)는 자바 코드 라이브러리를 검사할 수 있는 파이썬 기반 스캐너 엑스레이(Xray)를 무료로 지원한다. 

• 오르카 시큐리티(Orca Security)는 AWS, 애저, 구글 클라우드 환경을 스캔할 수 있는 무료 온라인 도구 그리고 자사 플랫폼의 30일 무료 체험판을 제공한다.

코딩 보안을 개선하기 위한 장기적 전략
1. 코드 종속성을 이해하라: 로그4j의 문제점 중 하나는 (이것이) 수많은 자바 라이브러리에 포함돼 있다는 것이다. 코드에 이전 버전이 있다면 이를 사용해 실행 중인 것이 무엇인지 파악해야 한다. 만약 아파치 프레임워크인 스트럿츠2(Struts2), 플룸(Flume), 두보(Dubbo), 카프카(Kafka), 솔라(Solr), 드루이드(Druid), 핑크(Fink) 등을 사용하고 있다면 이에 포함된 로그4j 라이브러리를 업그레이드해야 한다. 

한편 스트럿츠와 관련해 지난 2017년 발생한 취약점 공격으로 에퀴팩스(Equifax)의 데이터베이스가 해킹되면서 1억 4,000만 명 이상의 고객 개인정보가 유출됐다.

위핵퍼플(WeHackPurple)의 타냐 장카는 종속성 그래프(dependencyGraph), 스닉(Snyk), OWASP의 종속성 체크(Dependency-Check)를 사용해야 한다고 권고했다. 종속성이 발견되는 경우 즉시 패치할 수 없다면 로그4j를 호출하는 코드를 제외한다.

2. 웹 애플리케이션 방화벽(WAF)의 메커니즘을 이해하라: WAF가 없다면 지금이 이를 구축해야 할 때다. 코드가 WAF 뒤에 배포돼 있다면 탐지 규칙을 켜고, 공급업체가 최신 취약점을 모두 다루도록 규칙을 업데이트했는지 확인해야 한다. 한편 해당 결함이 발표된 이후, 연구진은 제안된 WAF 필터링 규칙을 우회하는 중첩되고 및 난독화된 페이로드를 구축하는 여러 방법을 선보였다. 패스틀리는 WAF의 효율성을 테스트하는 방법을 설명했다.

3. 로그4j 취약점 완화 및 패치 도구를 활용하라: 많은 기업이 이미 로그4j 취약점을 완화하는 도구를 제공했다. 살펴볼 만한 도구는 다음과 같다. 

• 사이버리즌(Cybereason)은 이 코드를 작성했다(링크 참조). 루나섹(LunaSec)은 이를 개선하여 라이브 서버에서 공개 서비스로 호스팅했다.

• AWS의 코레토 팀은 로그4j 패치를 위한 자바 에이전트를 개발했다. 해당 에이전트는 깃허브에서 다운로드받을 수 있다

• 콘트라스트 시큐리티는 탐지 및 패치를 모두 제공하는 세이프 로그4j(SafeLog4j)를 제공한다. 이는 WAF 우회 공격도 지원한다. 

• 시스코는 시큐어 엔드포인트(Secure Endpoint)의 30일 무료 체험판을 제공하고 있다. 

• 컨테이너를 사용한다면 별도의 보호 제품이 필요하다. 예를 들어 레드햇은 쿠버네티스용 어드밴스드 클러스터 시큐리티(Advanced Cluster Security)를 업데이트했고, 팔로알토 네트웍스는 프리즈마 클라우드(Prisma Cloud)를 업데이트했다.

ciokr@idg.co.kr
CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.