1. Apache Commons Fileupload [1]

- 파일 업로드 기능을 서블릿 및 웹 애플리케이션에 추가하기위한 패키지

 

2. 취약점 [2]

[사진 1] https://nvd.nist.gov/vuln/detail/CVE-2023-24998

- 취약한 버전의 Apache Commons FileUpload에서 requestpart에 대해 제한을 두지 않아 발생하는 서비스 거부 취약점

제품명 영향받는 버전
Apache Commons FileUpload 1.0-beta-1 ~ 1.4
Apache Tomcat 11.0.0-M1
10.1.0-M1~ 10.1.4
9.0.0-M1~ 9.0.70
8.5.0~ 8.5.84

 

2.1 분석

- 자바에서 Annotation은 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술 [3][4]

- Annotation의 용도는 다음과 같음

컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공

② 소프트웨어 개발 툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보를 제공

실행시(런타임시)특정 기능을 실행하도록 정보를 제공

 

- 취약점에 악용된 RequestPart 또한 Annotation으로 "multipart/form-data" 요청의 일부를 메서드 인수와 연결하는 데 사용하는 어노테이션임

[사진 2] @RequestPart Annotation

 

- FileUploadBase.java의 내용을 확인해보면 처리할 요청 부분의 수를 제한하지 않는 것으로 판단됨. [5]

- 따라서 공격자는 악의적인 업로드 또는 일련의 업로드로 DoS를 트리거할 수 있음

[사진 3] src/main/java/org/apache/commons/fileupload/FileUploadBase.java

3. 대응방안

① 벤더사에서 제공하는 최신 업데이트 적용 [8][6][7]

제품명 영향받는 버전 패치 버전
Apache Commons FileUpload 1.0-beta-1 ~ 1.4 1.5
Apache Tomcat 11.0.0-M1 11.0.0-M3
10.1.0-M1~ 10.1.4 10.1.5
9.0.0-M1~ 9.0.70 9.0.71
8.5.0~ 8.5.84 8.5.85

 

- 업데이트를 확인해보면 fileCountMax 변수를 이용해 파일 업로드 횟수에대한 제한을 적용한 것으로 판단됨.

 

Update packaged renamed fork of Commons File Upload · apache/tomcat@8a2285f

Show file tree Showing 8 changed files with 116 additions and 14 deletions.

github.com

 

Add a new limit for the number of files uploaded per request (#185) · apache/commons-fileupload@e20c049

Back port

github.com

 

4. 참고

[1] https://commons.apache.org/proper/commons-fileupload/index.html
[2] https://nvd.nist.gov/vuln/detail/CVE-2023-24998
[3] https://velog.io/@gillog/Spring-Annotation-%EC%A0%95%EB%A6%AC
[4] https://velog.io/@hwan2da/Spring-RequestBody-vs-RequestParam-vs-RequestPart-vs-ModelAttribute
[5] https://archive.apache.org/dist/commons/fileupload/source/
[6] https://archive.apache.org/dist/tomcat/
[7] https://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi
[8] https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71001&menuNo=205020
[9] https://blog.alyac.co.kr/5086

+ Recent posts