: javax.mail → jakarta.mail 교체
개요
시스템 취약점 점검 과정에서 다음과 같은 라이선스 취약점이 검출되었다.
Package License Category Severity Target
| javax.mail:mail | GPL-2.0-with-classpath-exception | restricted | HIGH | Java |
GPL-2.0 라이선스란?
GPL-2.0(GNU General Public License v2.0)은 오픈소스 라이선스 중에서도 강력한 의무사항을 지닌 라이선스다. 핵심 의무사항은 다음과 같다.
- 소스 코드 공개 의무 : GPL 2.0 코드를 사용하여 개발된 결과물을 배포할 경우, 수정된 부분을 포함한 전체 소스 코드를 반드시 제공해야 한다.
- 라이선스 유지 : 파생된 프로그램은 반드시 GPL 2.0 라이선스를 유지해야 한다.
- 고지 의무 : 저작권 및 라이선스 고지사항을 원본 그대로 유지해야 한다.
- 배포 시 소스 제공 : 바이너리(실행 파일) 배포 시, 소스 코드 또는 소스 코드를 얻을 수 있는 정보를 함께 제공해야 한다.
GPL의 전염성
GPL 라이선스의 가장 중요한 특징은 전염성(Copyleft) 이다. GPL로 된 코드를 포함하거나 결합한 프로그램은 전체가 GPL로 공개되어야 한다.
즉, javax.mail:mail 라이브러리를 사용하는 솔루션은 전체 소스코드를 외부에 공개해야 하는 치명적인 리스크를 안게 된다.
문제 확인
build.gradle에서 다음 의존성이 확인되었다.
implementation 'javax.mail:mail:1.4.7'
이 라이브러리가 GPL-2.0 라이선스 취약점의 원인이었다.
조치 방법: jakarta.mail로 교체
아래와 같이 라이브러리를 교체한다.
// 기존
implementation 'javax.mail:mail:1.4.7'
// 변경
implementation 'org.eclipse.angus:jakarta.mail:2.0.5'
교체 이유
jakarta.mail 역시 GPL-2.0 라이선스를 포함하고 있다. 그러나 동시에 GNU General Public License version 2 + Classpath Exception 라이선스도 함께 보유하고 있다.
Classpath Exception이 핵심이다. 이 예외 조항은 GPL 코드를 클래스패스(classpath)로 연결하여 사용할 경우, GPL의 전염성이 적용되지 않도록 해준다. 즉, 해당 라이브러리를 사용하더라도 전체 소스코드를 공개하지 않아도 된다.
정리
구분 javax.mail:mail:1.4.7 org.eclipse.angus:jakarta.mail:2.0.5
| 라이선스 | GPL-2.0 | GPL-2.0 + Classpath Exception |
| 소스코드 공개 의무 | 있음 | 없음 |
| 상용 솔루션 사용 | 위험 | 안전 |
GPL 라이선스 계열 라이브러리를 도입할 때는 반드시 Classpath Exception 포함 여부를 확인해야 한다. 예외 조항 하나의 유무가 소스코드 전체 공개 여부를 결정짓는 만큼, 라이선스 검토는 개발 초기 단계부터 꼼꼼히 이루어져야 한다.
'WEB' 카테고리의 다른 글
| 쿠키(Cookie) 와 세션(Session) (0) | 2021.01.07 |
|---|