보안정보

[CVE-2019-19208] Codiad Web IDE Code Injection

침해사고분석팀 2021.06.12

 

 

Codiad Web IDE에 PHP Code injection 취약점이 존재합니다.

 

Codiad Web IDE는 설치 공간이 작고 요구사항이 최소화된 웹 기반의 IDE 프레임워크이다. 큰 오버헤드없이 개발에 사용할 수 있다는 것이 장점이다.

 

해당 취약점은 /components/install/process.php 경로에서 timezone 파라미터 값에 대한 부적절한 유효성 검사로 인해 발생합니다. 원격의 공격자는 악의적으로 조작된 요청을 전송하여 공격할 수 있습니다. 

 

공격 성공 시, 임의의 코드가 실행될 수 있습니다.

 

 

 

취약점 설명

 

NVD - CVE-2019-19208

CVSS v2.0 Severity and Metrics:

Base Score: 7.5 HIGH

 
 
 
 
 
[그림1. NVD 내역]
 
 
 
 

취약점 분석

 

취약점이 발생하는 경로인 /components/install/process.php 파일에서 취약한 부분을 보면 다음과 같습니다.

 

 

 

[ 그림2. Codiad process.php 코드-1 ]

 

 

[ 그림3. Codiad process.php 코드-2 ]

 

 

 

$timezone 변수는 그림2 163라인과 같이 “‘ . $_POST[‘timezone’] . ‘“ 의 형태로 data_default_timezone_set()함수의 인자로 들어갑니다. 그리고 그림2의 135라인에서 알 수 있듯이, 해당 값은 $config_data 변수의 값이 됩니다. 그 후, 그림3의 191라인에서 config.php 파일에 $config_data의 값을 저장한다는 것을 알 수 있습니다. 

 

이 때, /components/install/process.php의 timezone 파라미터 값을 악의적으로 조작한 요청을 보낸다면 config.php 파일에 php 코드를 삽입할 수 있습니다. 또한, 삽입된 코드를 통해 임의의 코드가 실행될 수 있습니다.

 

취약한 버전은 2.8.4 이며, 아직 알려진 패치 사항은 없습니다.

 

 

 

공격 분석 및 테스트

 

CVE-2019-19208의 공격 패킷은 다음과 같습니다.

 

 

 

[그림4. 취약한 패킷-1]

 

 

 

PoC 코드를 통해 조작된 패킷을 보면 그림4와 같습니다. 

 

해당 패킷에서 timezone 파라미터가 조작된 것을 볼 수 있습니다. 이 값은 그림2의 코드 163라인에 다음과 같이 코드가 삽입됩니다. 즉, config.php 파일은 data_default_timezone_set()함수 호출 후 cmd 파라미터의 값을 인자로 system함수를 실행하는 WebShell 기능을 하게 됩니다.

 

 

 

취약점 대응 방안

 

1. 최신 버전 사용

 

아직 알려진 패치 사항은 없다.

https://github.com/Codiad/Codiad

 

 

2. WINS Sniper 제품군 대응 방안

 

[5472]  Codiad Web IDE process.php timezone Code Injection