티스토리 뷰
프레임워크 EOL·EOS 총정리 (2026) — Spring Boot·.NET·Django·React 지원 종료일 확인 방법
실더 2026. 9. 14. 08:46
Log4Shell 이후로 애플리케이션이 무엇을 쓰고 있는지 모른다는 것이 얼마나 위험한지는 모두가 알게 됐습니다. 그런데 “어떤 라이브러리를 쓰는가”는 SCA 도구가 알려줘도, “그 버전이 아직 지원을 받는가”는 별도로 확인해야 합니다.
결론부터 말하면 프레임워크 EOL은 취약점 목록에 나타나지 않습니다. 지원이 끝난 버전은 새 CVE가 발견돼도 번호가 붙지 않거나, 붙어도 패치가 나오지 않습니다. 스캐너가 조용하다고 안전한 것이 아니라, 아무도 찾아보지 않는 상태일 수 있습니다.
이 글은 주요 프레임워크의 지원 종료일과 공식 확인처를 정리한 참조표입니다. 개발 부서에 버전 업 요청을 보낼 때 근거로 쓰시면 됩니다.
🧭 EOL, EOS, EOSL — 용어부터 정리
프레임워크는 상용 연장 지원(Extended Support)을 제공하는 제품이 많아 특히 구분이 중요합니다.
| 용어 | 의미 | 실무 판단 |
|---|---|---|
| EOAS | 기능 개선·일반 버그 수정 중단 | 보안 패치는 아직 나옵니다. “계획 수립” 단계. |
| EOL / EOS | 보안 패치 포함 모든 지원 중단 | 실질적 마지노선. 이후 CVE는 영구 미조치로 남습니다. |
| EOSL / ESU | 유상 연장 보안 업데이트 | 계약이 있어야 패치를 받습니다. 날짜만 보면 안 됩니다. |
| EOO | 신규 주문·판매 종료 | 지원은 계속되나 증설이 막힙니다. |
📌 흩어진 EOL 날짜를 한 화면에서 보는 법
벤더별 라이프사이클 페이지를 하나씩 찾는 대신 endoflife.date 를 쓰면 470여 개 제품의 지원 일정을 같은 형식으로 볼 수 있습니다. 오픈소스 프로젝트이고 각 페이지에 벤더 원본 링크가 붙어 있어 교차 확인이 쉽습니다.
| 용도 | 주소 |
|---|---|
| 제품 페이지 | endoflife.date/spring-boot |
| 이 분류 전체 | endoflife.date/tags/framework |
| JSON API (인증 불필요) | endoflife.date/api/v1/products/spring-boot/ |
| 캘린더 구독 | endoflife.date/calendar/spring-boot.ics |
⚠️ 감사 증적에는 벤더 원본 문서를 인용하세요. endoflife.date는 커뮤니티가 관리하는 2차 자료라 드물게 반영이 늦습니다. 빠르게 훑을 때는 이 사이트, 보고서에 넣을 때는 아래 ‘근거 문서’ 링크를 쓰는 조합이 가장 실용적입니다.
☕ Java 진영 — Spring 계열
Spring은 OSS 지원 1년 + 상용 연장 지원(Commercial) 구조입니다. 무상 지원이 끝난 버전을 계속 쓰려면 상용 구독이 필요하고, 구독 없이 쓰면 그 시점부터 보안 패치를 받지 못합니다.
| 제품 · 버전 | 출시일 | 보안 지원 종료 (EOL) | 연장 지원 | 상태 |
|---|---|---|---|---|
| Spring Boot 4.1 | 2026.06.30 | 2027.07.31 | 2028.07.31 | 임박 |
| Spring Boot 4.0 | 2025.11.30 | 2026.12.31 | 2027.12.31 | 임박 |
| Spring Boot 3.5 | 2025.05.31 | 2026.06.30 | 2032.06.30 | 종료 |
| Spring Boot 3.4 | 2024.11.30 | 2025.12.31 | 2026.12.31 | 종료 |
| Spring Boot 3.3 | 2024.05.31 | 2025.06.30 | 2026.06.30 | 종료 |
| Spring Framework 7.0 | 2025.11.30 | 2027.07.31 | 2028.07.31 | 임박 |
| Spring Framework 6.2 | 2024.11.30 | 2026.06.30 | 2032.06.30 | 종료 |
| Spring Framework 6.1 | 2023.11.30 | 2025.06.30 | 2032.06.30 | 종료 |
| Spring Framework 5.3 | 2020.10.31 | 2024.08.31 | 2029.06.30 | 종료 |
| Spring Security 7.1 | 2026.06.09 | 2027.07.31 | 2028.07.31 | 임박 |
| Spring Security 7.0 | 2025.11.17 | 2026.12.31 | 2027.12.31 | 임박 |
| Spring Security 6.5 | 2025.05.19 | 2026.06.30 | 2032.06.30 | 종료 |
표의 ‘연장 지원’ 열이 상용 구독 기준 종료일입니다. Spring Boot 3.x 계열은 대부분 무상 지원이 이미 끝났습니다. 개발 부서가 “아직 지원됩니다”라고 답한다면 상용 구독 여부를 함께 확인하세요.
로그·웹 계층 — Log4j, Struts
Log4j 2.x는 아직 유지되고 있지만 1.x는 2015년에 종료됐습니다. 아직 1.x가 남아 있는 시스템이 있다면 그 자체가 조치 대상입니다. Struts 2.5도 2024년 4월에 지원이 끝났습니다.
| 제품 · 버전 | 출시일 | 보안 지원 종료 (EOL) | 연장 지원 | 상태 |
|---|---|---|---|---|
| Apache Log4j 2.x | 2014.07.12 | 미정 | — | 지원 |
| Apache Struts 7 | 2024.12.11 | 미정 | — | 지원 |
| Apache Struts 6 | 2022.06.02 | 미정 | — | 지원 |
| Apache Struts 2.5 | 2016.05.05 | 2024.04.30 | 미정 | 종료 |
🔷 Microsoft .NET
.NET(Core 계열)은 짝수 버전이 LTS(3년), 홀수 버전이 STS(18개월)입니다. 운영 시스템에 홀수 버전을 올리면 1년 반마다 올려야 합니다. .NET Framework(4.x)는 Windows에 종속되어 별도 주기를 따릅니다.
| 제품 · 버전 | 출시일 | 보안 지원 종료 (EOL) | 연장 지원 | 상태 |
|---|---|---|---|---|
| .NET 10 (LTS) | 2025.11.11 | 2028.11.14 | — | 지원 |
| .NET 9 (STS) | 2024.11.12 | 2026.11.10 | — | 임박 |
| .NET 8 (LTS) | 2023.11.14 | 2026.11.10 | — | 임박 |
| .NET 7 | 2022.11.08 | 2024.05.14 | — | 종료 |
| .NET 6 (LTS) | 2021.11.08 | 2024.11.12 | — | 종료 |
| .NET Framework 4.8.1 | 2022.08.09 | 미정 | — | 지원 |
| .NET Framework 4.8 | 2019.04.18 | 미정 | — | 지원 |
| .NET Framework 4.6.2 | 2016.08.02 | 2027.01.12 | — | 임박 |
🐍 Python · PHP 웹 프레임워크
Django는 LTS 버전만 3년을 받고 나머지는 약 16개월입니다. Laravel은 버그 수정 18개월 + 보안 수정 24개월, Symfony는 LTS가 4년입니다.
| 제품 · 버전 | 출시일 | 일반 지원 종료 | 보안 지원 종료 (EOL) | 연장 지원 | 상태 |
|---|---|---|---|---|---|
| Django 6.1 | 2026.08.05 | 2027.04.30 | 2027.12.31 | — | 지원 |
| Django 6.0 | 2025.12.03 | 2026.08.04 | 2027.04.30 | — | 임박 |
| Django 5.2 (LTS) | 2025.04.02 | 2025.12.03 | 2028.04.30 | — | 지원 |
| Django 5.1 | 2024.08.07 | 2025.04.02 | 2025.12.03 | — | 종료 |
| Django 4.2 (LTS) | 2023.04.03 | 2023.12.04 | 2026.04.07 | — | 종료 |
| Laravel 13 | 2026.03.17 | 2027.09.30 | 2028.03.17 | — | 지원 |
| Laravel 12 | 2025.02.24 | 2026.08.13 | 2027.02.24 | — | 임박 |
| Laravel 11 | 2024.03.12 | 2025.09.03 | 2026.03.12 | — | 종료 |
| Symfony 8.1 | 2026.05.29 | 2027.01.31 | 2027.01.31 | — | 임박 |
| Symfony 7.4 (LTS) | 2025.11.27 | 2028.11.30 | 2029.11.30 | — | 지원 |
| Symfony 6.4 (LTS) | 2023.11.29 | 2026.11.30 | 2027.11.30 | — | 지원 |
| Symfony 5.4 (LTS) | 2021.11.29 | 2024.11.30 | 2029.02.28 | — | 지원 |
🟨 JavaScript · 프런트엔드
이 계열은 공식 EOL 정책이 없는 프로젝트가 많습니다. React와 jQuery가 대표적인데, “종료를 발표하지 않았다”와 “보안 패치가 나온다”는 다른 이야기입니다. 실제로는 최신 메이저 버전에만 패치가 들어간다고 보는 것이 안전합니다.
| 제품 · 버전 | 출시일 | 보안 지원 종료 (EOL) | 연장 지원 | 상태 |
|---|---|---|---|---|
| Node.js 26 (LTS) | 2026.05.05 | 2029.04.30 | — | 지원 |
| Node.js 24 (LTS) | 2025.05.06 | 2028.04.30 | — | 지원 |
| Node.js 22 (LTS) | 2024.04.24 | 2027.04.30 | 미정 | 임박 |
| Node.js 20 | 2023.04.18 | 2026.04.30 | 미정 | 종료 |
| Angular 22 | 2026.06.03 | 2028.06.30 | 미정 | 지원 |
| Angular 21 | 2025.11.19 | 2027.06.30 | 미정 | 임박 |
| Angular 20 | 2025.05.28 | 2026.11.28 | 미정 | 임박 |
| Angular 19 | 2024.11.19 | 2026.05.19 | 미정 | 종료 |
| Next.js 16 | 2025.10.22 | 미정 | — | 지원 |
| Next.js 15 | 2024.10.21 | 2026.10.21 | — | 임박 |
| Next.js 14 | 2023.10.26 | 2025.10.26 | — | 종료 |
| Vue 3.5 | 2024.09.03 | 미정 | — | 지원 |
| React 19 | 2024.12.05 | 미정 | — | 지원 |
| React 18 | 2022.03.29 | 미정 | — | 지원 |
| jQuery 4 | 2026.01.17 | 미정 | — | 지원 |
| jQuery 3 | 2016.06.09 | 미정 | 미정 | 지원 |
AngularJS(1.x)는 2021년 12월에 완전히 종료됐습니다. 레거시 관리자 화면에서 아직 발견되는 경우가 있는데, 상용 연장 지원 업체가 별도로 존재할 뿐 원 프로젝트의 패치는 나오지 않습니다.
🔐 암호 라이브러리 — OpenSSL
가장 우선순위가 높은 항목입니다. OpenSSL은 LTS 지정 버전만 5년, 나머지는 2년입니다. 애플리케이션이 시스템 OpenSSL을 쓰는지 자체 번들을 쓰는지부터 확인해야 합니다.
| 제품 · 버전 | 출시일 | 보안 지원 종료 (EOL) | 연장 지원 | 상태 |
|---|---|---|---|---|
| OpenSSL 4.0 | 2026.04.14 | 2027.05.14 | — | 임박 |
| OpenSSL 3.6 | 2025.10.01 | 2026.11.01 | — | 임박 |
| OpenSSL 3.5 (LTS) | 2025.04.08 | 2030.04.08 | — | 지원 |
| OpenSSL 3.4 | 2024.10.22 | 2026.10.22 | — | 임박 |
| OpenSSL 3.0 (LTS) | 2021.09.07 | 2026.09.07 | 미정 | 종료 |
🚨 앞으로 12개월 안에 지원이 끝나는 프레임워크
릴리스 주기가 몇 주인 라이브러리는 제외했습니다. 이 표의 항목은 개발 부서에 버전 업 요청을 보내야 하는 대상입니다.
| 제품 | 버전 | 마지막 패치 제공일 | 남은 기간 | 비고 | 상태 |
|---|---|---|---|---|---|
| Qt | 6.11 | 2026.09.22 | 8일 | 2027.03.23 | 임박 |
| Quarkus | 3.27 | 2026.09.24 | 10일 | 미정 | 임박 |
| Qt | 6.10 | 2026.10.07 유상 연장(ESU) 종료 |
23일 | 이미 종료 2026.04.07 | 임박 |
| Electron | 42 | 2026.10.20 | 1개월 | — | 임박 |
| Next.js | 15 | 2026.10.21 | 1개월 | — | 임박 |
| OpenSSL | 3.4 | 2026.10.22 | 1개월 | — | 임박 |
| OpenSSL | 3.6 | 2026.11.01 | 2개월 | — | 임박 |
| Ruby on Rails | 8.0 | 2026.11.07 | 2개월 | — | 임박 |
| Microsoft .NET | 9 | 2026.11.10 | 2개월 | — | 임박 |
| Microsoft .NET | 8 | 2026.11.10 | 2개월 | — | 임박 |
| Angular | 20 | 2026.11.28 | 2개월 | 미정 | 임박 |
| Spring Boot | 4.0 | 2026.12.31 | 3개월 | 2027.12.31 | 임박 |
| Spring Boot | 3.4 | 2026.12.31 유상 연장(ESU) 종료 |
3개월 | 이미 종료 2025.12.31 | 임박 |
| Spring Security | 7.0 | 2026.12.31 | 3개월 | 2027.12.31 | 임박 |
| Spring Security | 6.4 | 2026.12.31 유상 연장(ESU) 종료 |
3개월 | 이미 종료 2025.12.31 | 임박 |
| Electron | 43 | 2027.01.05 | 4개월 | — | 임박 |
| Microsoft .NET Framework | 4.6.2 | 2027.01.12 | 4개월 | — | 임박 |
| Symfony | 8.1 | 2027.01.31 | 4개월 | — | 임박 |
| Laravel | 12 | 2027.02.24 | 5개월 | — | 임박 |
| Electron | 44 | 2027.03.02 | 6개월 | — | 임박 |
| Quarkus | 3.33 | 2027.03.25 | 6개월 | 미정 | 임박 |
| Django | 6.0 | 2027.04.30 | 7개월 | — | 임박 |
| Node.js | 22 | 2027.04.30 | 7개월 | 미정 | 임박 |
| OpenSSL | 4.0 | 2027.05.14 | 8개월 | — | 임박 |
| Angular | 21 | 2027.06.30 | 9개월 | 미정 | 임박 |
| Spring Boot | 4.1 | 2027.07.31 | 10개월 | 2028.07.31 | 임박 |
🔗 제품별 EOL·EOS 공식 확인처
| 제품 | 요약 확인 (한 화면) | 근거 문서 (벤더 원본) |
|---|---|---|
| Spring Boot | endoflife.date | 공식 지원 정책 |
| Spring Framework | endoflife.date | 공식 지원 정책 |
| Spring Security | endoflife.date | 공식 지원 정책 |
| Microsoft .NET | endoflife.date | 공식 지원 정책 |
| Microsoft .NET Framework | endoflife.date | 공식 지원 정책 |
| Django | endoflife.date | 공식 지원 정책 |
| Laravel | endoflife.date | 공식 지원 정책 |
| Symfony | endoflife.date | 공식 지원 정책 |
| Ruby on Rails | endoflife.date | 공식 지원 정책 |
| Node.js | endoflife.date | 공식 지원 정책 |
| Angular | endoflife.date | 공식 지원 정책 |
| React | endoflife.date | 공식 지원 정책 |
| Vue | endoflife.date | 공식 지원 정책 |
| Next.js | endoflife.date | 공식 EOL 문서 없음 |
| jQuery | endoflife.date | 공식 지원 정책 |
| Bootstrap | endoflife.date | 공식 지원 정책 |
| OpenSSL | endoflife.date | 공식 지원 정책 |
| Apache Log4j | endoflife.date | 공식 지원 정책 |
| Apache Struts | endoflife.date | 공식 EOL 문서 없음 |
| Hibernate ORM | endoflife.date | 공식 지원 정책 |
| Quarkus | endoflife.date | 공식 지원 정책 |
| Electron | endoflife.date | 공식 지원 정책 |
| Qt | endoflife.date | 공식 지원 정책 |
🛠 의존성 버전 확인 방법
| 생태계 | 확인 명령 | 비고 |
|---|---|---|
| Java (Maven) | mvn dependency:tree |
전이 의존성까지 나옵니다 |
| Java (Gradle) | gradle dependencies |
|
| Node.js | npm ls --all |
npm audit 와 함께 사용 |
| .NET | dotnet list package --include-transitive |
|
| Python | pip list --format=freeze |
pip-audit 병행 권장 |
| PHP | composer show --tree |
|
| Ruby | bundle list |
SBOM을 생성해두면 이 작업이 훨씬 수월해집니다. CycloneDX나 SPDX 형식으로 뽑아두고 endoflife.date API와 대조하면 “취약점은 없지만 지원이 끝난 컴포넌트” 목록을 자동으로 만들 수 있습니다. 이 목록이 SCA 도구가 놓치는 사각지대입니다.
💬 자주 나올 질문
Q. 취약점 스캔에서 아무것도 안 나오는데 굳이 올려야 하나요?
올려야 합니다. 지원이 끝난 버전은 새 취약점이 발견돼도 조사·공표·패치 과정이 돌지 않습니다. 스캐너가 조용한 것은 안전하다는 뜻이 아니라 아무도 찾아보지 않는다는 뜻일 수 있습니다. 게다가 EOL 상태에서 긴급 취약점이 터지면 그때는 선택지가 “며칠 안에 메이저 업그레이드”뿐입니다.
Q. 개발 부서가 “동작에 문제없다”고 합니다.
동작 여부와 지원 여부는 다른 문제입니다. 요청할 때는 “현재 버전 / 지원 종료일 / 이전 대상 버전 / 예상 작업량” 네 가지를 표로 만들어 보내는 편이 효과적입니다. 막연한 “올려주세요”보다 “Spring Boot 3.3은 2025년 6월에 무상 지원이 끝났고 3.5 또는 4.0이 이전 대상입니다”가 훨씬 빠르게 진행됩니다.
Q. 상용 연장 지원을 사면 되는 것 아닌가요?
유효한 선택지입니다. 다만 세 가지를 확인하세요. 연장 지원에도 종료일이 있고, 보통 보안 수정만 제공하며, 비용이 업그레이드 공수보다 큰 경우가 많습니다. 한두 해 시간을 버는 용도로는 합리적이지만 영구 해법은 아닙니다.
Q. React처럼 EOL이 없는 프로젝트는 어떻게 판단하나요?
“종료 발표가 없다”를 “지원된다”로 해석하면 안 됩니다. 판단 기준은 최근 보안 패치가 그 메이저 버전에 실제로 들어갔는가입니다. 저장소의 릴리스 노트와 보안 권고를 확인해서, 최신 메이저에만 패치가 들어가고 있다면 이전 버전은 사실상 종료로 보고 계획을 세우는 편이 안전합니다.
🎉 정리
- 프레임워크 EOL은 취약점 목록에 나타나지 않는다. 스캐너가 조용한 것과 안전한 것은 다르다.
- Spring은 무상 1년 + 상용 연장 구조다. “지원된다”는 답변에는 상용 구독 여부를 함께 확인한다.
- .NET은 짝수가 LTS(3년), 홀수가 STS(18개월)다. 운영 시스템에 홀수 버전은 피한다.
- OpenSSL이 최우선이다. 시스템 것을 쓰는지 자체 번들인지부터 확인한다.
- AngularJS·Struts 2.5·Log4j 1.x는 이미 완전히 종료됐다. 발견되면 즉시 조치 대상이다.
- EOL 없는 프로젝트는 최근 패치 유입으로 판단한다. 발표가 없다고 지원되는 것이 아니다.
- SBOM + API 대조로 사각지대를 만든다. “취약점은 없지만 지원이 끝난 컴포넌트” 목록이 핵심이다.
📚 이 시리즈의 다른 글
분류별로 나눠 정리했습니다. 필요한 분류만 골라 보셔도 됩니다.
| 시리즈 구성 | 상태 |
|---|---|
| 01. 애플리케이션 · 개발도구 | https://sitview.tistory.com/193 |
| 02. 데이터베이스 | https://sitview.tistory.com/194 |
| 03. 단말기 · 하드웨어 | https://sitview.tistory.com/195 |
| 04. 프레임워크 · 라이브러리 | 지금 보는 글 |
| 05. 언어 · 런타임 | https://sitview.tistory.com/197 |
| 06. 운영체제 | https://sitview.tistory.com/198 |
| 07. 서버 애플리케이션 | https://sitview.tistory.com/199 |
| 08. 클라우드 관리형 서비스 | https://sitview.tistory.com/200 |
🔗 참고
'정보보안 > Infra' 카테고리의 다른 글
- Total
- Today
- Yesterday
- 전자금융취약점분석평가
- 샤이니헌터스
- 정보보안
- 암호화폐보안
- 공급망공격
- awssap
- AI보안
- KISA
- 해킹주의
- 2단계인증
- 스마트폰보안
- 세븐일레븐해킹
- 개발자보안
- 보안뉴스
- 취약점
- 개인정보보호
- 전자금융기반시설취약점분석평가
- 보안꿀팁
- 사이버보안
- 개인정보유출
- cve
- 해킹예방
- 전자금융기반시설
- 금취분평
- SAP
- 악성코드
- ASV
- AWS
- 랜섬웨어
- 보안상식
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |