1P by neo 6일전 | ★ favorite | 댓글 1개
  • CVE-2025-29927

  • Next.js 버전 15.2.3이 보안 취약점(CVE-2025-29927)을 해결하기 위해 출시됨. next startoutput: 'standalone'을 사용하는 모든 자체 호스팅 Next.js 배포는 즉시 업데이트할 것을 권장함.

  • 타임라인

    • 2025-02-27T06:03Z: GitHub 비공개 취약점 보고를 통해 Next.js 팀에 공개됨
    • 2025-03-14T17:13Z: Next.js 팀이 보고서 검토 시작
    • 2025-03-14T19:08Z: Next.js 15.x에 대한 패치 배포
    • 2025-03-14T19:26Z: Next.js 14.x에 대한 패치 배포
    • 2025-03-17T22:44Z: Next.js 14.2.25 출시
    • 2025-03-18T00:23Z: Next.js 15.2.3 출시
    • 2025-03-18T18:03Z: GitHub에서 CVE-2025-29927 발행
    • 2025-03-21T10:17Z: 보안 권고문 발표
    • 2025-03-22T21:21Z: Next.js 13.5.9 출시
    • 2025-03-23T06:44Z: Next.js 12.3.5 출시
  • 취약점 세부 사항

    • Next.js는 무한 루프를 방지하기 위해 내부 헤더 x-middleware-subrequest를 사용함. 보안 보고서에 따르면, 미들웨어 실행을 건너뛰어 중요한 검사를 우회할 수 있는 가능성이 있음.
  • 영향 범위

    • 영향을 받는 경우

      • 미들웨어를 사용하는 자체 호스팅 Next.js 애플리케이션 (next startoutput: 'standalone')
      • 인증 또는 보안 검사를 위해 미들웨어에 의존하는 경우
      • Cloudflare를 사용하는 애플리케이션은 관리형 WAF 규칙을 활성화할 수 있음
    • 영향을 받지 않는 경우

      • Vercel에 호스팅된 애플리케이션
      • Netlify에 호스팅된 애플리케이션
      • 정적 내보내기로 배포된 애플리케이션 (미들웨어 실행되지 않음)
  • 패치된 버전

    • Next.js 15.x: 15.2.3에서 문제 해결됨
    • Next.js 14.x: 14.2.25에서 문제 해결됨
    • Next.js 13.x: 13.5.9에서 문제 해결됨
    • Next.js 12.x: 12.3.5에서 문제 해결됨
    • 안전한 버전으로 패치가 불가능한 경우, 외부 사용자 요청이 x-middleware-subrequest 헤더를 포함하지 않도록 방지할 것을 권장함
  • 우리의 보안 책임

    • Next.js는 2016년 이후 16개의 보안 권고문을 발표함. GitHub 보안 권고문과 CVE는 소프트웨어의 취약점을 사용자, 공급업체, 회사에 알리는 업계 표준임. 파트너와의 소통에서 부족한 점을 보완하기 위해 파트너 메일링 리스트를 개설함. partners@nextjs.org로 연락하여 포함될 수 있음.
Hacker News 의견
  • Next의 미들웨어 시스템은 문제가 많으며, 처음부터 다시 구현하는 것이 좋을 것 같음

    • 여러 미들웨어를 체인으로 연결하는 공식적인 방법이 없음
    • 주요 함수들이 정적 멤버로 되어 있어, 서드파티 미들웨어 사용 시 문제가 발생할 수 있음
    • 미들웨어와 라우트 핸들러 간의 통신 방법이 부족함
    • 헤더를 통해 데이터를 전달하는 방법은 안전하지 않음
    • 자동 캐싱을 포기해야 하는 문제도 있음
    • 요청의 실제 호스트명을 얻기 어려움
  • 미들웨어 시스템의 보안 문제에 대한 다른 기사 발견

    • 헤더를 통한 통신 방식이 사용자 입력 검증과 분리되어 있음
    • 사용자로부터의 모든 헤더를 허용하는 것은 위험할 수 있음
    • 서버 디자인의 문제를 해결하기 위한 프레임워크의 지원이 필요함
  • Next.js의 보안 취약점에 대한 정보

    • 특정 헤더를 추가하면 서버가 잘못된 응답을 할 수 있는 취약점이 있었음
    • 이 취약점에 대한 CVE가 없으며, 어떤 버전이 영향을 받는지 명확하지 않음
    • Next.js의 지원 정책에 따라 특정 버전만 패치가 제공됨
  • Next.js의 보안 문제 해결 지연에 대한 우려

    • 보고 후 2주 이상이 지나서야 문제 해결이 시작됨
    • 문제의 심각성이 제대로 전달되지 않았을 가능성 있음
  • Next.js의 복잡성에 대한 비판

    • React는 많은 가치를 제공했지만, Next는 복잡성을 더할 뿐임
    • 파일 기반 라우팅과 서버 사이드 렌더링은 특정 상황에서만 유용함
  • 보안 취약점의 간단한 실행 가능성

    • 특정 헤더를 추가하면 인증을 우회할 수 있는 문제
  • Next.js의 내부 헤더 사용 문제

    • 재귀 요청을 방지하기 위한 내부 헤더가 있음
    • 이 헤더를 통해 중요한 검증을 우회할 수 있는 가능성 있음
  • Next.js의 자가 호스팅 선택에 대한 불안감

    • HN의 댓글을 읽을수록 선택에 대한 불안감이 커짐
  • 보안 문제 해결 지연에 대한 우려

    • 13일 동안 문제 해결이 지연된 것은 큰 문제임