|
[CVE-2020-10549] rConfig snippets SQL Injection 침해사고분석팀 2021.03.26 |
|
|
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
|