2026년 5월 보안 릴리스: Express.js multiparty 4.3.0 — 2026년 22주 자바스크립트
JS frameworks, React/Vue/Svelte, and runtime updates Compiled for immediate developer deployment.
calendar_todaysummarizeWeek 22-2026bolt1 CRITICAL
article
2026년 5월 보안 릴리스: Express.js multiparty 4.3.0
TAG: 보안
Express 팀이 multiparty 4.3.0을 릴리스하여 4.2.3 이하 버전에 존재하는 높은 심각도의 서비스 거부 취약점 세 가지를 패치했습니다. CVE-2026-8159는 약 8 KB 크기의 조작된 헤더로 Content-Disposition filename 파서의 정규식 백트래킹을 유발해 Node.js 이벤트 루프를 차단합니다. CVE-2026-8161은 프로토타입 오염을 이용하여 __proto__나 constructor 같은 Object.prototype 속성과 충돌하는 필드명을 전송하면 프로세스가 비정상 종료됩니다. CVE-2026-8162는 malformed percent-encoding이 포함된 filename* 파라미터를 try/catch 없이 decodeURI에 전달해 프로세스를 충돌시킵니다. multiparty를 통해 멀티파트 업로드를 처리하는 모든 서비스는 즉시 4.3.0으로 업그레이드해야 합니다.
Astro 6.4: Pluggable Markdown Pipeline과 Rust 기반 Processor
TAG: 프레임워크
Astro 6.4에는 세 가지 주요 기능이 포함되어 있습니다. 새로운 markdown.processor API를 사용하면 기본 unified (remark/rehype) 파이프라인을 완전히 교체할 수 있으며, 기존 플러그인은 변경 없이 동작합니다. markdown.remarkPlugins 등 기존 최상위 옵션은 deprecated되어 Astro 8.0에서 제거될 예정입니다. 새로운 @astrojs/markdown-satteri 패키지는 Rust로 작성된 Markdown 및 MDX 파이프라인인 Sätteri를 도입했으며, Astro와 Cloudflare 문서 사이트 빌드 시간을 각각 1분 이상 단축했습니다. 또한 @astrojs/cloudflare 어댑터에 cf() 헬퍼가 추가되어 SESSION KV 바인딩, ASSETS 바인딩, locals.cfContext 등의 설정을 자동으로 처리합니다.
Ember 7.0 출시: Deprecated 기능 정리와 Embroider+Vite 기본화
TAG: 프레임워크
Ember 7.0은 6.x 사이클에서 deprecated된 API를 제거하는 정리 메이저 릴리스로, 새로운 공개 API는 추가되지 않았습니다. 주요 제거 항목으로는 import Ember from 'ember', ember-source의 AMD 번들 발행, 그리고 @ember/service의 기존 inject 임포트(service로 대체)가 있습니다. 선행된 6.x 시리즈에서는 Embroider와 Vite가 6.8에서 기본 빌드 시스템이 되었고, strict-mode template-tag 컴포넌트 작성 방식이 기본값이 되었으며, trackedArray, trackedMap, trackedSet 등 추적 가능한 네이티브 컬렉션 타입이 추가되었습니다. 6.12에서 deprecation 경고 없이 실행된다면 7.0으로의 전환이 원활하게 이루어질 수 있으며, 이전 6.12 버전은 이제 LTS 버전으로 지정되었습니다.
Next.js App Router의 Server Actions는 비공개 헬퍼 함수가 아닌 원격으로 호출 가능한 엔드포인트이므로, 프로덕션 API처럼 강화해야 합니다. 이 글은 다섯 가지 계층적 방어책을 다룹니다: TypeScript 타입은 컴파일 후 사라지므로 Zod를 사용한 런타임 입력 검증, ID 열거 공격을 방지하기 위한 명시적 세션 인증 및 리소스 수준 권한 부여, 민감한 데이터가 Server Component에서 클라이언트로 유출되는 것을 막기 위한 DTO 경계와 server-only 패키지 사용, React 19의 실험적 taintUniqueValue 및 taintObjectReference API를 통한 런타임 강제, 그리고 httpOnly/secure/sameSite: strict 쿠키 플래그, CSP nonce, 슬라이딩 윈도우 미들웨어를 통한 속도 제한입니다. 또한 next-safe-action 라이브러리를 통한 인증·검증·타입 응답 표준화와 고위험 작업에 대한 집중식 RBAC 및 개별 속도 제한도 소개합니다.
TanStack Router와 Query: Route Loader와 Global Cache 결합
TAG: 데이터 패칭
TanStack Router는 자체적인 stale-while-revalidate 라우트 캐시를 제공하지만, 이 캐시는 라우트별로 격리되어 다른 라우트에서 접근할 수 없습니다. TanStack Query의 QueryCache는 queryKey로 구별되는 전역 캐시로, 사용자 정보 같은 공유 데이터에 더 적합합니다. 권장 패턴은 라우트 로더에서 ensureQueryData를 호출하여 컴포넌트 번들이 다운로드되기 전에 최대한 일찍 데이터 패칭을 시작하는 것이며, 컴포넌트는 useSuspenseQuery 또는 useQuery로 데이터를 읽습니다. Query가 캐싱을 담당할 때는 Router 캐시 설정(defaultPreloadStaleTime을 0)을 비활성화해야 합니다. TanStack Start에서는 setupRouterSsrQueryIntegration이 서버에서 가져온 데이터를 자동으로 dehydrate하여 클라이언트 캐시에 스트리밍합니다.
AGENTS.md에 규칙을 쓰지 마세요: Agent Hook과 nano-staged를 대신 사용
TAG: AI 도구
Evil Martians는 AGENTS.md에 코드 품질 규칙을 기록하는 것이 신뢰성이 낮다고 주장합니다. LLM은 이 지침을 자주 잊어버리는 반면, 자동화 스크립트는 결정론적이고 토큰도 절약됩니다. 권장 설정은 5분이면 완료됩니다: nano-staged(lint-staged의 24개 대비 의존성 0개)를 설치하고, .nano-staged.json 설정 파일에서 oxfmt와 oxlint를 변경된 파일에 실행하도록 구성한 후, .claude/settings.json에 Claude Code의 Stop 훅을 등록하여 nano-staged --unstaged --quiet --bail을 실행하고 lint 통과 전까지 exit code 2로 에이전트를 차단합니다. oxlint와 oxfmt는 ESLint, Prettier보다 5~10배 빠르며 기존 ESLint 커스텀 플러그인도 지원합니다. jq로 stop_hook_active 플래그를 확인하는 가드 스크립트는 에이전트가 자율적으로 lint 오류를 수정하지 못할 때 무한 루프를 방지합니다.
Julian Burr는 서버 사이드 pull(PHP 템플릿, 전체 페이지 재렌더링)부터 jQuery의 DOM 직접 조작, Knockout, Vue, Svelte, Solid 같은 프레임워크에 이르는 웹 렌더링의 역사를 추적하며 세밀한 반응형 변수인 signals가 등장한 이유를 설명합니다. Signals는 런타임이 의존성을 자동으로 추적하게 하며, computed 값은 상위 signal이 변경될 때만 재계산되고 effect는 읽은 signal이 dirty 상태가 되면 실행됩니다. Burr는 약 30줄의 JavaScript로 minimal signal, computed, effect 구현을 라이브 코딩하여 구독 모델을 명확히 보여줍니다. 또한 React의 pull 기반 virtual DOM과 메모이제이션 방식(useMemo, useCallback, 새 컴파일러)과 대조하며, React 팀이 signals를 실험했지만 현재는 re-render 비용 절감에 집중하고 있다고 설명합니다. 발표 마지막에는 프레임워크 전반에서 이 프리미티브를 표준화해 브라우저가 네이티브로 최적화할 수 있도록 하는 TC39 Signals 제안(현재 Stage 1)을 소개합니다.
Express 팀이 multiparty 4.3.0을 릴리스하여 4.2.3 이하 버전에 존재하는 높은 심각도의 서비스 거부 취약점 세 가지를 패치했습니다. CVE-2026-8159는 약 8 KB 크기의 조작된 헤더로 Content-Disposition filename 파서의 정규식 백트래킹을 유발해 Node.js 이벤트 루프를 차단합니다. CVE-2026-8161은 프로토타입 오염을 이용하여 __proto__나 constructor 같은 Object.prototype 속성과 충돌하는 필드명을 전송하면 프로세스가 비정상 종료됩니다. CVE-2026-8162는 malformed percent-encoding이 포함된 filename* 파라미터를 try/catch 없이 decodeURI에 전달해 프로세스를 충돌시킵니다. multiparty를 통해 멀티파트 업로드를 처리하는 모든 서비스는 즉시 4.3.0으로 업그레이드해야 합니다.
Julian Burr는 서버 사이드 pull(PHP 템플릿, 전체 페이지 재렌더링)부터 jQuery의 DOM 직접 조작, Knockout, Vue, Svelte, Solid 같은 프레임워크에 이르는 웹 렌더링의 역사를 추적하며 세밀한 반응형 변수인 signals가 등장한 이유를 설명합니다. Signals는 런타임이 의존성을 자동으로 추적하게 하며, computed 값은 상위 signal이 변경될 때만 재계산되고 effect는 읽은 signal이 dirty 상태가 되면 실행됩니다. Burr는 약 30줄의 JavaScript로 minimal signal, computed, effect 구현을 라이브 코딩하여 구독 모델을 명확히 보여줍니다. 또한 React의 pull 기반 virtual DOM과 메모이제이션 방식(useMemo, useCallback, 새 컴파일러)과 대조하며, React 팀이 signals를 실험했지만 현재는 re-render 비용 절감에 집중하고 있다고 설명합니다. 발표 마지막에는 프레임워크 전반에서 이 프리미티브를 표준화해 브라우저가 네이티브로 최적화할 수 있도록 하는 TC39 Signals 제안(현재 Stage 1)을 소개합니다.
Astro 6.4: Pluggable Markdown Pipeline과 Rust 기반 Processor
Astro 6.4에는 세 가지 주요 기능이 포함되어 있습니다. 새로운 markdown.processor API를 사용하면 기본 unified (remark/rehype) 파이프라인을 완전히 교체할 수 있으며, 기존 플러그인은 변경 없이 동작합니다. markdown.remarkPlugins 등 기존 최상위 옵션은 deprecated되어 Astro 8.0에서 제거될 예정입니다. 새로운 @astrojs/markdown-satteri 패키지는 Rust로 작성된 Markdown 및 MDX 파이프라인인 Sätteri를 도입했으며, Astro와 Cloudflare 문서 사이트 빌드 시간을 각각 1분 이상 단축했습니다. 또한 @astrojs/cloudflare 어댑터에 cf() 헬퍼가 추가되어 SESSION KV 바인딩, ASSETS 바인딩, locals.cfContext 등의 설정을 자동으로 처리합니다.
Ember 7.0 출시: Deprecated 기능 정리와 Embroider+Vite 기본화
Ember 7.0은 6.x 사이클에서 deprecated된 API를 제거하는 정리 메이저 릴리스로, 새로운 공개 API는 추가되지 않았습니다. 주요 제거 항목으로는 import Ember from 'ember', ember-source의 AMD 번들 발행, 그리고 @ember/service의 기존 inject 임포트(service로 대체)가 있습니다. 선행된 6.x 시리즈에서는 Embroider와 Vite가 6.8에서 기본 빌드 시스템이 되었고, strict-mode template-tag 컴포넌트 작성 방식이 기본값이 되었으며, trackedArray, trackedMap, trackedSet 등 추적 가능한 네이티브 컬렉션 타입이 추가되었습니다. 6.12에서 deprecation 경고 없이 실행된다면 7.0으로의 전환이 원활하게 이루어질 수 있으며, 이전 6.12 버전은 이제 LTS 버전으로 지정되었습니다.
Next.js App Router의 Server Actions는 비공개 헬퍼 함수가 아닌 원격으로 호출 가능한 엔드포인트이므로, 프로덕션 API처럼 강화해야 합니다. 이 글은 다섯 가지 계층적 방어책을 다룹니다: TypeScript 타입은 컴파일 후 사라지므로 Zod를 사용한 런타임 입력 검증, ID 열거 공격을 방지하기 위한 명시적 세션 인증 및 리소스 수준 권한 부여, 민감한 데이터가 Server Component에서 클라이언트로 유출되는 것을 막기 위한 DTO 경계와 server-only 패키지 사용, React 19의 실험적 taintUniqueValue 및 taintObjectReference API를 통한 런타임 강제, 그리고 httpOnly/secure/sameSite: strict 쿠키 플래그, CSP nonce, 슬라이딩 윈도우 미들웨어를 통한 속도 제한입니다. 또한 next-safe-action 라이브러리를 통한 인증·검증·타입 응답 표준화와 고위험 작업에 대한 집중식 RBAC 및 개별 속도 제한도 소개합니다.
TanStack Router와 Query: Route Loader와 Global Cache 결합
TanStack Router는 자체적인 stale-while-revalidate 라우트 캐시를 제공하지만, 이 캐시는 라우트별로 격리되어 다른 라우트에서 접근할 수 없습니다. TanStack Query의 QueryCache는 queryKey로 구별되는 전역 캐시로, 사용자 정보 같은 공유 데이터에 더 적합합니다. 권장 패턴은 라우트 로더에서 ensureQueryData를 호출하여 컴포넌트 번들이 다운로드되기 전에 최대한 일찍 데이터 패칭을 시작하는 것이며, 컴포넌트는 useSuspenseQuery 또는 useQuery로 데이터를 읽습니다. Query가 캐싱을 담당할 때는 Router 캐시 설정(defaultPreloadStaleTime을 0)을 비활성화해야 합니다. TanStack Start에서는 setupRouterSsrQueryIntegration이 서버에서 가져온 데이터를 자동으로 dehydrate하여 클라이언트 캐시에 스트리밍합니다.
AGENTS.md에 규칙을 쓰지 마세요: Agent Hook과 nano-staged를 대신 사용
Evil Martians는 AGENTS.md에 코드 품질 규칙을 기록하는 것이 신뢰성이 낮다고 주장합니다. LLM은 이 지침을 자주 잊어버리는 반면, 자동화 스크립트는 결정론적이고 토큰도 절약됩니다. 권장 설정은 5분이면 완료됩니다: nano-staged(lint-staged의 24개 대비 의존성 0개)를 설치하고, .nano-staged.json 설정 파일에서 oxfmt와 oxlint를 변경된 파일에 실행하도록 구성한 후, .claude/settings.json에 Claude Code의 Stop 훅을 등록하여 nano-staged --unstaged --quiet --bail을 실행하고 lint 통과 전까지 exit code 2로 에이전트를 차단합니다. oxlint와 oxfmt는 ESLint, Prettier보다 5~10배 빠르며 기존 ESLint 커스텀 플러그인도 지원합니다. jq로 stop_hook_active 플래그를 확인하는 가드 스크립트는 에이전트가 자율적으로 lint 오류를 수정하지 못할 때 무한 루프를 방지합니다.
이번 주 JavaScript 카테고리는 두 건의 중요한 보안 권고로 시작됩니다. Express 팀이 multiparty 4.3.0을 릴리스하여 4.2.3 이하 버전에 존재하는 세 가지 고심각도 서비스 거부 CVE(CVE-2026-8159, CVE-2026-8161, CVE-2026-8162)를 패치했습니다. 이 취약점들은 catastrophic regex backtracking, __proto__ 필드명을 통한 prototype pollution, 그리고 try/catch 없는 decodeURI 충돌을 각각 다룹니다. multipart 업로드를 처리하는 모든 서비스는 즉시 업그레이드해야 합니다. 또한 Next.js Server Actions에 대한 심층 분석은 이 엔드포인트가 공개적으로 호출 가능하다는 점을 상기시키며, ID 열거, 데이터 유출, 남용을 방지하기 위해 Zod 검증, 세션 인증, server-only 경계, React 19 taint API, next-safe-action을 통한 속도 제한이 필요하다고 강조합니다.
프레임워크 측면에서는 Astro 6.4가 플러그인 가능한 markdown.processor API를 도입하고 최상위 remarkPlugins 및 rehypePlugins 옵션을 deprecated 처리했으며, Rust 기반의 Sätteri 파이프라인(@astrojs/markdown-satteri)을 도입해 Astro와 Cloudflare 문서 빌드 시간을 1분 이상 단축했습니다. Ember 7.0은 6.x 사이클에서 deprecated된 API를 제거하는 정리 메이저 릴리스로, Embroider와 Vite가 기본 빌드 시스템이 되었으며 6.12가 LTS로 지정되었습니다.
두 가지 아키텍처 관련 내용도 주목받았습니다. TanStack Router와 Query 저자 Dominik Dorfmeister는 route loader에서 ensureQueryData를 실행하고, useSuspenseQuery로 데이터를 읽으며, defaultPreloadStaleTime을 0으로 설정하는 표준 통합 패턴을 정리했습니다. Evil Martians는 AGENTS.md 규칙 대신 ESLint와 Prettier보다 5~10배 빠른oxlint와 oxfmt를 실행하는 nano-staged Claude Code Stop 훅을 사용하도록 권장했습니다. Julian Burr의 NDC Sydney 발표에서는 signals의 원리를 설명하고 현재 TC39 Stage 1인 Signals 제안을 미리 소개했습니다.
Key Takeaways
multiparty를 즉시 4.3.0으로 업그레이드하세요 — CVE-2026-8159, CVE-2026-8161, CVE-2026-8162는 multipart 업로드를 처리하는 모든 Node.js 서비스에 인증 없이 서비스 거부 공격을 허용합니다.
Next.js Server Actions는 공개 엔드포인트입니다. Zod 검증, 세션 인증, server-only 임포트, next-safe-action 속도 제한을 계층적으로 적용하여 일반적인 공격 벡터를 차단해야 합니다.
Astro 6.4의 Rust 기반 Sätteri Markdown 파이프라인은 실제 문서 사이트에서 빌드 시간을 1분 이상 단축했습니다. unified 파이프라인과 최상위 플러그인 옵션은 Astro 8.0을 앞두고 deprecated 처리됩니다.