SW/JavaScript

Next.js 보안 취약점 2025 사건 정리: 내 앱도 위험할까?

얇은생각 2025. 4. 29. 07:30
반응형

Next.js 보안 구멍 사건: 나만 멘붕인가요, 아니면 다 같이 놀란 건가요?

진짜 솔직히 말하면, 지난 금요일은 그냥 '그날'이었습니다. 아무 생각 없이 평소처럼 코드 푸시하고 배포했는데, 갑자기 트위터가 난리 나고, 슬랙에도 경고가 쏟아지기 시작했죠. "Next.js에서 심각한 보안 취약점 발견!" 진짜요? 금요일인데요?

배포하고 집 가는 길에 치맥 생각하면서 룰루랄라했는데, 알고 보니 내 앱이 뚫릴 수도 있는 상황이었다니. 진짜 웃프죠.

 

Next.js 보안 취약점 2025 사건 정리: 내 앱도 위험할까?

 

도대체 무슨 일이 있었던 거야?

  • Next.js에서 심각도 9.1 수준의 보안 취약점이 발견됨
  • 공격자가 인증 없이 앱에 접근할 수 있는 구조적 결함이었음
  • 단순한 요청 헤더 조작만으로 프리미엄 기능을 사용할 수 있었음
  • 개발자 입장에서 심리적 충격이 컸던 사건임

 

정리하자면, 이번에 발견된 건 단순한 버그가 아니라 심각도 9.1짜리 보안 취약점이었어요. 공격자가 인증도, 권한도 없이 미들웨어를 무시하고 원하는 대로 앱을 이용할 수 있는, 말 그대로 "뚫린 거"였죠.

예를 들어 내가 만든 SaaS 앱에 이런 로직이 있다면:

if (!user.hasPaid) {
  redirect('/pricing');
}

 

이 코드를 무시하고 그냥 프리미엄 기능까지 다 써버릴 수 있는 거예요. 별다른 해킹 기술도 필요 없고, 요청에 헤더 하나 추가하는 것만으로 가능했다는 게 더 무섭죠.

이걸 알았을 땐, 진짜 머릿속이 하얘졌어요. '내가 지금까지 만들어놓은 보안 시스템이 허무하게 무너지는 건가?' 싶었죠.

 

어떻게 이런 일이 가능했을까?

  • Next.js의 미들웨어는 요청 처리 중간에 개입해 보안을 유지하는 역할을 함
  • 공격자는 x-middleware-subrequest 헤더에 미들웨어 이름을 넣어 이를 우회할 수 있었음
  • 미들웨어 이름은 일반적으로 예측하기 쉬움
  • 실제로도 이미 악용됐을 가능성이 있어 소름 끼치는 상황

 

Next.js에서는 미들웨어라는 걸 통해 요청을 가로채서 처리할 수 있잖아요. 로그인 여부 체크하고, 특정 조건에 따라 리디렉션도 하고요. 이게 원래는 보안상 중요한 역할을 하는 건데...

문제는 어떤 헤더를 사용하면 원하는 미들웨어를 그냥 건너뛸 수 있다는 점이었어요. 공격자가 그 미들웨어의 이름만 알아내면, x-middleware-subrequest라는 헤더에 이름을 넣기만 하면 됩니다. 생각보다 이름 맞히는 것도 어렵지 않대요.

처음 들었을 땐 황당했어요. 이게 진짜 현실에서 가능한 일인가 싶었거든요. 근데 가능했어요. 그리고 이미 누군가는 이걸로 장난쳤을 수도 있다는 생각에 소름이 쫙.

 

커뮤니티 반응? 말 그대로 난장판!

  • 일부 개발자들이 React와 Next.js를 비판하는 계기로 삼음
  • Cloudflare는 자사 플랫폼으로의 이전을 홍보하며 기회를 활용함
  • Vercel CEO는 Cloudflare의 과거 실수를 언급하며 방어
  • 트위터는 밈과 논쟁으로 가득했고, 개발자들은 불안감을 느낌

 

이 소식이 퍼지자마자, 일부 개발자들은 물 만난 고기처럼 React, Next.js 까기 시작했고요. Cloudflare는 기다렸다는 듯이 "우리 플랫폼으로 옮기세요~" 하고 마케팅 때리기 시작했죠. 그 와중에 Vercel CEO는 Cloudflare의 과거 사고를 들먹이며 반격.

그리고 트위터는... 네, 뭐 그 특유의 밈과 키보드 배틀로 가득 찼죠. 저는 옆에서 구경하면서 치킨 먹었는데, 그 와중에도 우리 앱 생각에 마음이 편치 않았어요.

 

그런데 왜 이렇게 패치가 늦었을까?

  • 문제는 2월 27일에 보고되었지만, 3월 18일에야 패치됨
  • 3주 가까이 걸린 대응 속도는 개발자들에게 실망을 줌
  • 빠른 대응이 필요한 상황에서 너무 느린 조치였다는 비판이 있음

 

더 열받는 건 이게 2월 27일에 보고됐는데, 3월 18일에야 패치가 됐다는 거예요. 거의 3주 가까이요. 이 정도로 심각한 문제였는데도요.

솔직히 개발자 입장에서 보면, "이거 그냥 방치한 거 아니야?" 싶은 생각이 들어요. 저도 개발자지만, 이런 상황에서는 빠르게 움직였어야죠. 믿고 있던 프레임워크한테 뒤통수 맞은 기분이랄까...

 

나는 괜찮은 걸까? (빠른 체크리스트!)

간단하게 확인해봅시다:

  • ❌ Next.js 미들웨어 안 씀 → 오케이, 걱정 마세요.
  • ❌ 직접 호스팅 안 함 → 괜찮아요, 아마도요.
  • ✅ 미들웨어 사용 + 직접 서버 운영 중 → 위험합니다. 진지하게 대응 필요해요.
  • ✅ Vercel이나 Netlify 쓰고 있고 아직 업데이트 안 했음 → 지금 당장 업데이트 버튼 누르세요!

 

해당되는 항목 있다면, 진심으로 말하는데 지금 바로 조치하세요. 제발요.

 

왜 이렇게 위험한가요? 단순하지만 무섭습니다

  • 공격 방식이 매우 단순하고 누구나 쉽게 실행 가능함
  • 미들웨어 이름과 헤더 조작만으로 보안이 무력화됨
  • Cloudflare도 차단 규칙을 만들었지만, 다른 서비스에 부작용을 줘 결국 철회함

 

무슨 거창한 해킹 기술이 필요한 것도 아니고, 툴도 안 써요. 그냥 헤더 하나, 미들웨어 이름 하나만 있으면 끝.

Cloudflare조차 이걸 막기 위해 규칙 하나 만들었다가, Supabase 같은 다른 서비스에 문제 생겨서 결국 다시 철회했대요. 이게 얼마나 파급력이 컸는지 짐작 가시죠?

 

해결책은? 직접 호스팅 + 자유로운 선택!

  • 직접 VPS를 사용해 서버를 구성하면 외부 취약점에서 더 자유로울 수 있음
  • Hostinger 같은 서비스는 저렴한 비용으로 VPS 제공
  • Coolify 같은 도구로 셋업이 간편해짐
  • 자기만의 환경을 구축하고 통제할 수 있는 장점이 있음

 

이런 사건을 겪고 나니까, "아, 나도 내 서버 직접 운영해볼까?" 이런 생각이 들더라고요.

Hostinger 같은 데서는 만 원도 안 되는 돈으로 VPS 하나 만들 수 있어요. 리눅스 서버 띄우고, 내가 필요한 도구만 딱딱 설치해서 쓰면 됩니다. 간섭 없고, 예측 가능한 요금제에, 원하는 대로 셋팅 가능하죠.

Coolify 같은 자동화 도구 쓰면 더 쉽고요. 진짜 복잡할 줄 알았는데 해보니까 생각보다 덜 귀찮더라고요.

 

마무리하며... 느낀 점들

  • 이번 사건은 보안에 대한 경각심을 일깨운 계기였음
  • Next.js는 여전히 유용하지만 맹신하면 안 된다는 교훈을 줌
  • 보안은 개발자가 주체적으로 챙겨야 한다는 자각 필요

 

이번 사건, 저한텐 하나의 경고장이었어요. “믿는 도끼에 발등 찍힌다”는 말, 개발에도 적용되는구나 싶었죠.

Next.js는 여전히 좋다고 생각해요. 쓰기 편하고 빠르고, 생태계도 탄탄하고요. 근데 이런 일이 또 생긴다면? 그땐 준비되어 있어야죠.

 

그래서 전 이렇게 정리해봤어요:

  • 보안 업데이트는 미루지 말자.
  • 인증 로직, 미들웨어 믿지 말고 직접 꼼꼼히 확인하자.
  • 금요일 배포는 진짜 다시 한 번 생각해보자. 제발.

이 글이 누군가에겐 도움이 되길 바랍니다. 저처럼 멘붕 오지 않게요.

반응형