Fork me on GitHub

2023-07-20: vm2 개발종료, Storybook 7.1, Fresh 1.3

Translator: rewrite0w0 Edit on GitHub See Revisions

JSer.info #652 - Node.js의 node:vm 모듈은 Sandbox(신용할 수 없는 코드 실행하는 환경)으로 이용할 수 없습니다만, vm2node:vm를 Wrap해서 Sandbox를 제공했던 모듈이었습니다.

vm2이 구조적으로 수정할 수 없는 곳에서 Sandbox 취약성이 발견되었기에, 유지보수 종료 선언했습니다. 취약성에 대한 자세한 정보는 아직 공개되어있지 않습니다만, Sandbox를 깨트리는 취약성으로, PoC는 8월즈음 공개될 예정입니다.

Sandbox 기능이 필요하다면, QuickJS를 WebAssembly로 컴파일한 quickjs-emscripten이나 V8의 Isolate를 사용한isolated-vm로 이행하길 권장하고 있습니다.
proxy-agents(PAC파일을 평가하기 위해 vm2 이용했었습니다)는 quickjs-emscripten으로 이행했습니다.

vm2node:vm 상에서 실행하는 코드에서 호스트 환경을 참조하지 못하도록 패치로 막는 접근을 취하고 있어습니다.(📝 node:vm를 사용한 적이 있는 사람 대상 이야기. context로 넘겨 객체에 Proxy를 사용, 특정 프로퍼티를 참조하지 못하게 하기 등)
손쉽지만, 막지 못하는 구멍이 생기거나 빠지는 것이 있었던 접근법이었습니다.

이런 Sandbox에는 어떤 접근법이 있는가에 대해서는 다음 글이 흥미로울 것 입니다.


Storybook 7.1가 출시되었습니다.

Storybook상에서 온보딩 추가, Emotion 등 스타일링 라이브러리 리셋 자동화, Vue 지원 개선이 포함되어있습니다.
또한 지금까지 커뮤니티에서 개발한 Figma design addon를 코어 Addon으로 관리하기 시작했습니다.


Deno의 웹 프레임워크니 Fresh 1.3가 출시되었습니다.

비동기 루트 컴포넌트 지원, 플러그인이 라우팅이나 미들웨어를 정의할 수 있도록, _500.tsx 에러페이지 지원, ErrorBoundary 지원이 추가되었습니다.
또한, 파일 하나에서 여러 islands를 export 할 수 있게끔 되었으며, Deno.serve 지원도 추가되었습니다.


To support JSer.info


헤드라인


ECMAScript proposal updates @ 2023-07 | ECMAScript Daily

ecmascript-daily.github.io/ecmascript/2023/07/14/ecmascript-proposal-update

ECMAScript proposal news

2023년 7월 TC39 Meeting에서 ECMAScript Proposal 스테이지 변경 정리


Discontinued · Issue #533 · patriksimek/vm2

github.com/patriksimek/vm2/issues/533

node.js security library issue news

Node.js의 vm 모듈을 사용해서 Sandbox 실현했던 vm2가 구조적으로 Sandbox Escape 취약점이 있어, 유지보수가 종료되었다는 공지.
취약성 PoC는 2023년 8월즈음에 공개하기에, isolated-vm 같은 모듈로 이행하기 권하고 있다.


Release v0.18.13 · evanw/esbuild

github.com/evanw/esbuild/releases/tag/v0.18.13

JavaScript bundler ReleaseNote

esbuild v0.18.13 출시.
DEV: doAnExpensiveCheck() 같은 라벨 지정한 처리를, --drop-label으로 삭제할 수 있도록.


Release Notes for Safari Technology Preview 174 | WebKit

webkit.org/blog/14390/release-notes-for-safari-technology-preview-174/

safari ReleaseNote

Safari Technology Preview 174 출시.
Canvas 자체 설정된 합산 메모리 사용량 제한 삭제.


Node v18.17.0 (LTS) | Node.js

nodejs.org/en/blog/release/v18.17.0

node.js ReleaseNote

Node.js v18.17.0 출시.
URL 파서 Ada 2.0로 업데이트, URL.canParse 지원, Web Crypto API 사양과 호환성 향상


Release 1.0.3 · kamranahmedse/driver.js

github.com/kamranahmedse/driver.js/releases/tag/1.0.3

JavaScript ReleaseNote library

사이트 투어해주는 Driver.js 1.0 출시.
TypeScript으로 재작성, SVG를 페이지 상 올려 하이라이트 표시할 수 있도록 구현 변경, 문서 갱신


Storybook 7.1

storybook.js.org/blog/storybook-7-1/

JavaScript CSS debug Tools ReleaseNote

Storybook 7.1 출시.
온보딩 추가, Emotion 등 스타일링 라이브러리 리셋 자동화, Vue 지원 개선.
Figma design addon 코어로 다룸


Chrome 116 beta - Chrome Developers

developer.chrome.com/en/blog/chrome-116-beta/

Chrome ReleaseNote

Chrome 116 beta 출시.
CSS Motion Path, displaycontent-visibility에 키프레임 애니메이션 지원.
AbortSignal.any() 지원, Fetch API getReader({mode: 'byob'}) 지원, Document Picture-in-Picture 지원.
Permissions Policy Origins에 * wildcard 지정 지원.
Origin Trial으로 COOP의 restrict-properties 지원, EditContext API 지원


Fresh 1.3 – Simplified Route Components and More

deno.com/blog/fresh-1.3

deno library ReleaseNote

Fresh 1.3 출시.
비동기 루트 컴포넌트 지원, 플러그인이 라우팅이나 미들웨어 정의할 수 있도록, _500.tsx으로 에러페이지 지원, ErrorBoundary 지원.
파일 하나에서 여러 islands를 export 할 수 있도록, Deno.serve 지원


Release v0.18.14 · evanw/esbuild

github.com/evanw/esbuild/releases/tag/v0.18.14

esbuild ReleaseNote

esbuild v0.18.14 출시.
CSS Modules 지원의 일환으로, global-css loader와 local-css loader 추가, CSS에서 :local():global() 지원.


읽을거리


URL.canParse

davidwalsh.name/url-canparse

JavaScript URL article

URL이 paser할 수 있는가 판정하는 URL.canParse 메서드에 대하여


How React 18 Improves Application Performance – Vercel

vercel.com/blog/how-react-18-improves-application-performance

React article

React 18のTransitions, Suspense, Server Components 관련하여


Security alert: social engineering campaign targets technology industry employees - The GitHub Blog

github.blog/2023-07-18-security-alert-social-engineering-campaign-targets-technology-industry-employees/

Github security npm article

채용담당자나 개발자 사칭, 비밀 레포지토리에 초대, 레포지토리 clone해 설치하면 감염시키는 멀웨어 삽입하는 공격이 증가하고 있다는 이야기.
マルウェア는 npm install할 때, 다운로드 및 실행되는 구조


소프트웨어, 도구, 라이브러리


coderaiser/putout: 🐊 Pluggable and configurable JavaScript Linter and code transformer with built-in ESLint and Babel support for js, jsx typescript, flow, markdown, yaml and json. Write declarative codemods in a simplest possible way 😏

github.com/coderaiser/putout

JavaScript AST Tools

Babel와 ESLint를 기반으로 한 codemod 툴킷.
빌트인 규칙으로 CommonJS to ESM 같은 다수 변환 규칙을 가지고 있으며, 이를 관리하는 구조와 플러그인을 제공한다.


Pull Request to this article
JSer.info Slackに参加する