보안정보

[CVE-2020-10549] rConfig snippets SQL Injection

침해사고분석팀 2021.03.26

WINS MOBILE

 

rConfig 3.9.6 이하의 버전에서 SQL Injection 취약점이 존재합니다.
 
rConfig는 PHP 기반의 오픈소스 네트워크 기기 구성 관리 유틸리티로, 예약 관리 작업, 정책 모니터링, 네트워크 장치에 대한 시스템 백업 및 보고 등의 기능을 지원합니다.
 
해당 취약점은 /snippets.inc.php 경로의 searchField 파라미터의 유효성 검사가 충분하지 않아 발생합니다.
 
공격 성공 시, 원격의 공격자는 SQL쿼리를 조작하여 DB에 접근할 수 있습니다.

 

 

취약점 설명

 

NVD - CVE-2020-10549

CVSS v2.0 Severity and Metrics:

Base Score: 7.5 HIGH

 

 

[그림1. NVD 내역]

 

 

 

취약점 분석

 

취약점은 /snippets.inc.php 파일에서 발생합니다.

 

snippets.php가 HTTP 요청을 수신할 때 요청을 처리하기 위해 다른 PHP 스크립트(snipppets.inc.php)를 불러오게 되는데, 요청을 처리할 때 다음과 같은 SQL 구문을 생성하게 됩니다.

 

WHERE [searchColumn] [searchOption] [searchField] ...

 

[searchColumn]은 HTTP 요청의 searchColumn 매개변수 값이며, 동시에 snippets 데이터베이스의 테이블 이름입니다.

 

[searchOption]은 SQL 연산자 "LIKE", "NOT LIKE", "=", 혹은 빈 문자열 중 하나입니다.

 

[searchField]는 searchField 매개변수 값에서 파싱됩니다.

 

snippets.inc.php는 SQL WHERE절을 구성하기 전에 searchColumn 및 searchField 매개변수를 검증하지 않습니다. 

 

따라서 공격자는 HTTP 요청의 searchColumn 또는 searchField 매개 변수에 임의의 SQL 명령을 포함하여 테이블을 생성, 조회하거나 삭제할 수 있습니다.

 

기본적으로 rConfig는 사용자가 /snipets.php에 액세스하기 위한 인증을 필요로 하지만, /snippets.inc.php에 대한 액세스는 제한하지 않기 때문에, 인증되지 않은 공격자는 /snippets.inc.php 페이지를 통해 공격을 수행할 수 있습니다.

 

 

공격 분석

 

CVE-2020-10549의 공격 패킷은 다음과 같습니다.

[그림2. 공격 패킷]

 

공격 성공 시, 임의의 코드 실행 및 정보 유출이 발생할 수 있습니다.

 

 

취약점 대응 방안

 

1. 최신 버전 사용

rConfig 3.9.x 버전 패치가 중단되었기 때문에 rConfig v5로 업데이트한다.

https://www.rconfig.com/#whyrconfig

 

 

2. WINS Sniper 제품군 대응 방안

 

[6085] rConfig snippets.inc.php searchField SQL Injection