Fork me on GitHub

2025-09-09のJS: Zod 4.1.0、`debug`や`chalk`パッケージの侵害、monorepoなアプリを`node --experimental-strip-types`へ移行

Edit on GitHub 編集履歴を見る

JSer.info #747 - Zod 4.1.0がリリースされ、新しいCodecs APIが追加されました。

スキーマの定義に加えて、データのencode/decodeを定義できるCodecs APIが新たに追加されています。また、.safeExtend()メソッド、z.has()z.hex()の新しいバリデーション関数も追加されています。


debugchalkなどの著名なnpmパッケージが侵害され、マルウェアを含むバージョンが公開されるという問題が発生しました。
現在はnpm registryから該当バージョンは削除されています。

影響を受けたパッケージには[email protected][email protected][email protected]などが含まれており、該当のバージョンではブラウザで動作するマルウェアが仕込まれていました。現在は該当バージョンがnpm registryから削除されています。

マルウェアとなったバージョンが依存に入ってるかは、次のコマンドで確認できます。

マルウェアがnode_modulesやビルドファイルなどにないかは、次のコマンドで確認できます。

# ripgrepが必要です
rg -uu --max-columns=80 --glob '*.js' _0x112fa8 

今回の問題では、パッケージオーナーはnpmの2要素認証を有効にしていましたが、攻撃者はフィッシング(フィッシングサイト上でTOTPも入力させる)を利用して有効なnpm tokenを取得し、悪意のあるバージョンを公開したようです。


次の記事では、npmのTrusted PublishingとOIDCを使い、CIからnpm tokenを使わずにパッケージを公開する方法が紹介されています。

npm Trusted Publishingの設定方法、GitHub ActionsでのOIDC設定、単体/monorepoパッケージの運用方法、GitHubのProtectionの設定などについても解説されています。
また、npmのRequire two-factor authentication and disallow tokensの設定について書かれています。
"Require two-factor authentication and disallow tokens" が有効なパッケージは、パッケージの公開にも2要素認証が必要になるため、npmのアカウントを乗っ取られた場合にも複数回のMFA認証が必要となり、被害を軽減できる可能性があります。


Node.jsとTypeScriptで書かれたmonorepoアプリケーションをnode --experimental-strip-typesへ移行した事例が紹介されています。

monorepoとnode_modules内のコードに対して--experimental-strip-typesが効かない問題を、--conditionsフラグでパス解決を調整することで解決しています。ESMへの移行、stub作成、CommonJSの対応、erasableSyntaxOnly設定による未対応構文の対応などを行っています。TypeScriptコードを直接実行できるようにした具体的な手順が詳しく説明されています。

Node.js v22.18.0 (LTS)--experimental-strip-typesはフラグが外れ、デフォルトでNode.jsがTypeScriptファイルを実行できるようになっています。


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

JSer.info Sponsors

JSer.info SponsorsGitHub SponsorsとしてJSer.infoを支援してくれている方々です。


ヘッドライン


Release v4.1.0 · colinhacks/zod

github.com/colinhacks/zod/releases/tag/v4.1.0

JavaScript TypeScript library ReleaseNote

zod 4.1.0リリース。
encode/decodeを定義するCodecs APIを追加、.safeExtend()を追加、z.has()/z.hex()を追加など


Fresh 2.0 Graduates to Beta, Adds Vite Support | Deno

deno.com/blog/fresh-and-vite

deno vite ReleaseNote

Fresh 2.0 Betaリリース。
Viteを使ったHMRの対応、reactのaliasの対応、<Head>の追加など


Nuxt 4.1 · Nuxt Blog

nuxt.com/blog/v4-1

Vue library ReleaseNote

Nuxt v4.1リリース。
Import Mapを使ったchunkのキャッシュの改善、実験的なRolldownのサポート、getLayerDirectoriesの追加など


アーティクル


fetch() では Host ヘッダーを設定できないし話はそこまで単純じゃない - Object.create(null)

susisu.hatenablog.com/entry/2025/08/31/190757

browser Fetch nodejs article

Fetch APIとHostヘッダーについて。
サーバサイドの実行環境であるNode.js/Deno/Claudflare Workersなどの挙動について


tsx と Node.js Type Stripping の違い - mizdra's blog

www.mizdra.net/entry/2025/08/28/122040

TypeScript article

tsxパッケージとNode.jsのType Strippingの挙動の違いについて


Why I Won’t Use JSDOM | Epic Web Dev

www.epicweb.dev/why-i-won-t-use-jsdom

JavaScript DOM test article

JSDOMの制限とブラウザでのコンポーネントテストについて


npm Trusted PublishingでOIDCを使ってトークンレスでCIからnpmパッケージを公開する | Web Scratch

efcl.info/2025/09/07/npm-oidc/

npm security article

npm Trusted PublishingとOIDCによるトークンレスなCI/CDからのnpmパッケージ公開について。
設定手順、ブラウザで完結するリリースフロー、
新規/既存/monorepoパッケージの運用方法、GitHubのProtectionの設定などについて


npm debug and chalk packages compromised

www.aikido.dev/blog/npm-debug-and-chalk-packages-compromised

npm security article

debugchalkなど著名なnpmパッケージにブラウザで動作するマルウェアを含むバージョンが公開された問題について。

現在はnpm registryから該当のバージョンは削除されている。
次のパッケージのバージョン影響を受けていた。


Bringing Node.js HTTP servers to Cloudflare Workers

blog.cloudflare.com/bringing-node-js-http-servers-to-cloudflare-workers/

cloudflare nodejs article

Cloudflare WorkersのNode.js http serverの対応について。


How we migrated our Rush.js monorepo to Node type stripping — Calm Blog

blog.calm.com/engineering/how-we-migrated-our-rushjs-monorepo-to-node-type-stripping

nodejs TypeScript article

TypeScriptで書かれたNode.jsアプリケーションのコードベースをどのようにtype strippingに移行したかについて。
monorepoとnode_modulesにコードがあるため、node --experimental-strip-typesが効かないが、--conditionsで参照するパスを解決している。
ESMへの移行、stub、CJSの対応、erasableSyntaxOnlyで未対応の構文の対応などを行い、node --experimental-strip-typesで実行できるようにした話。


スライド、動画関係


1から理解するWeb Push - Speaker Deck

speakerdeck.com/dora1998/1karali-jie-suruweb-push

browser WebPlatformAPI slide

Web PushとPush Serviceについて。
Web Pushがどのように動いてるのか、ブラウザベンダーのPush Serverの実装についてなど


書籍関係


JavaScript/TypeScript実力強化書 | 技術評論社

gihyo.jp/book/2025/978-4-297-15194-2

JavaScript TypeScript book

2025年9月29日発売
JavaScript/TypeScriptについての書籍


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