Fork me on GitHub

2023-07-20のJS: vm2の開発終了、Storybook 7.1、Fresh 1.3

Edit on GitHub 編集履歴を見る

JSer.info #652 - Node.jsのnode:vmモジュールはSandbox(信用できないコードの実行環境)としては利用できませんが、vm2node:vmをラップして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のサポートなどが追加されています。
また、1ファイルから複数のislandsをexportできるように、Deno.serveのサポートなども追加されています。


JSer.infoをサポートするには

JSer.info Sponsors

JSer.info SponsorsGitHub Sponsorsとして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のサポート。
1ファイルから複数の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がパースできるかを判定する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など多数の変換ルールを持っているが、それらを管理するツールとプラグインの仕組みを提供する。


この記事へ修正リクエストをする
JSer.info Slackに参加する