Fork me on GitHub

2021-09-14のJS: Node v16.9.0(Corepack)、Spook.js(Same-Siteでのサイドチャネル攻撃)

Edit on GitHub 編集履歴を見る

JSer.info #557 - Node.js 16.9.0リリース。

プロジェクトごとにnpm/yarn/pnpmなどのパッケージマネージャを切り替えて利用できるCorepackのサポートが実験的に追加されています。Corepackが有効時は、どのパッケージマネージャを使うかをpackage.jsonpackageManager フィールドで指定して、透過的にインストールや実行できるようになります。

また実験的であるため、利用するにはcorepack enable yarnなどのコマンドがオプトインで必要となっています。

その他には、V8 9.3へアップデートしObject.hasOwnとError Causeをサポート、stream.composeの追加などが含まれています。


Spook.jsという、投機的実行を利用したsame-siteでのサイドチャネル攻撃についての論文が公開されています。

以前、GoogleがSpectreの概念を説明するものとしてhttps://leaky.page/というサイトを公開しています。

Spook.jsは、これをより実践的に検証した論文で、BitbucketやTumblrなどのユーザーコンテンツがサブドメインにあるサイト同士でのデモ、Google Chromeの拡張機能同士でのデモといったeTLD+1が一致するsame-siteでのサイドチャネル攻撃について書かれています。

詳細は論文にかかれていますが、Chromeではそれぞれのサイトをプロセス分離することでプロセス間のサイドチャネル攻撃を防ぐようになっています。一方でメモリが圧迫されている際にeTLD+1が一致するSame-Siteを開いた場合に、サイト分離はしないため、このケースにおいてサイト間でのサイドチャネル攻撃ができるという話になっています。

Same-SiteかどうかはPublic Suffix Listを元に決めるため、Bitbucket(bitbucket.io)に関してはPublic Suffix Listに加えることでCross-Siteと認識させることで、この問題を防いでいます。

また拡張機能のPage(chrome-extension://)における問題は、Chrome 92で拡張同士はSame-Siteなどの条件とは関係なくプロセスを共有しないことで、この問題が修正されています。

Spook.jsは、投機的実行を扱ったサイドチャネル攻撃について詳しく書かれているので興味がある人は読んでみるとよさそうです。


ヘッドライン


Node v16.9.0 (Current) | Node.js

nodejs.org/en/blog/release/v16.9.0/

node.js ReleaseNote

Node v16.9.0リリース。
プロジェクトごとにnpm/yarn/pnpmなどのパッケージマネージャを切り替えてインストールできるCorepackのサポート。
V8 9.3へアップデートしObject.hasOwnとError Causeをサポート、stream.composeの追加など


Release 3.0.1 · prisma/prisma

github.com/prisma/prisma/releases/tag/3.0.1

database JavaScript library ReleaseNote

Prisma 3.0.1リリース。3からSemverにそったリリースとなった。
Referential Actions、Named Constraints、Microsoft SQL/Azure SQL、Node-APIなどがGAとなった。
破壊的な変更としてprisma db seedの仕組みの変更、nullをクエリに指定できなくしてJsonNull/DbNull/AnyNullのいずれかを使うようにする変更も含まれる。


Ember 3.28 and 4.0 Beta Released

blog.emberjs.com/ember-3-28-released/

Ember ReleaseNote

Ember 3.28 and 4.0 Betaリリース。


Prettier 2.4: new bracketSameLine option and TypeScript 4.4 support! · Prettier

prettier.io/blog/2021/09/09/2.4.0.html

JavaScript Tools ReleaseNote

Prettier 2.4リリース。
TypeScript 4.4サポート、jsxBracketSameLineオプションをbracketSameLineオプションに置き換えなど


Nightwatch v2.0-alpha is Released | Nightwatch.js Blog

nightwatchjs.org/blog/nightwatch-v2-alpha-is-released.html

E2E JavaScript library ReleaseNote Selenium

Nightwatch v2.0-alphaリリース。
selenium-webdriverを利用するように、WebDriver Actions APIのサポート、Chrome Dev Tools Protocolのサポート。
.ensure assertionの追加、perform()などでWebDriver objectを直接扱えるように、Async/Awaitの対応改善など


Time for a review of Firefox 92 - Mozilla Hacks - the Web developer blog

hacks.mozilla.org/2021/09/time-for-a-review-of-firefox-92/

Firefox ReleaseNote

Firefox 92リリース。
CSSのaccent-colorsize-adjustをサポート、Stage 4 Object.hasOwnのサポートなど。
また、selectionchangeイベントでinputtextarea内の選択範囲の変更も検知するようになるなど


Release Workbox v6.3.0 · GoogleChrome/workbox

github.com/GoogleChrome/workbox/releases/tag/v6.3.0

ServiceWorker library JavaScript ReleaseNote

Workbox 6.3.0リリース。
integrity属性が指定されているリソースに対するprecachingの修正、IDBの書き込みに{ durability: 'relaxed' }を使うように。
BroadcastCacheUpdateにnotifyAllClientsオプションの追加、Vary:ヘッダに対するデバッグログを追加など


アーティクル


What’s New With DevTools: Cross-Browser Edition — Smashing Magazine

www.smashingmagazine.com/2021/09/devtools-cross-browser-edition/

browser debug article

ブラウザごとの開発者ツールの機能紹介記事


Migrating Notion's marketing site to Next.js

www.notion.so/blog/migrating-notion-marketing-to-next-js

React Next.js article

Notion マーケティングサイトをNext.jsへ移行した話。
Reactで書かれたアプリケーションのコードとマーケティングサイトのコードを共有することで組み込みのデモがうごかせるようになった話。
ルーティングでの切り替えとテスト、CSSの対応などについて


JavaScript Eventing Deep Dive

web.dev/eventing-deepdive/

JavaScript DOM article

Event Capturing/Event Bubbling phaseの動きについての記事。
それぞれphaseにおいてEventの流れを止めるstopPropagation()stopImmediatePropagation()preventDefault()の動作についての解説。


Journey with Icons Continues

antfu.me/posts/journey-with-icons-continues

JavaScript React Vue article

Viteでアイコンコンポーネントをオンデマンドでビルドして利用できるunplugin-iconsについて。
アイコンのデータにはIconifyを使い、アイコンコンポーネントをロードした際にVite側でSVGベースのアイコンコンポーネントを作成して返す仕組みについて。


Introducing Flow Enums. As announced in an earlier post, Flow… | by George Zahariev | Flow | Sep, 2021 | Medium

medium.com/flow-type/introducing-flow-enums-16d4239b3180

flowtype article

FlowTypeに導入されたenumについて


フロントエンドのテストは皆のためのもの | POSTD

postd.cc/frontend-testing-is-for-everyone/

testing article

Front-End Testing is For Everyoneの翻訳記事。
テストがチェックする範囲とチェックするツールについてまとめたもの。
ユニットテスト、結合テスト、E2Eテスト、アクセシビリティテスト、ビジュアルリグレッションテスト、パフォーマンステストについて書かれている。


スライド、動画関係


Spook.js

www.spookjs.com/

Chrome security paper

leaky.page が同じページ内での話だったの対して、ウェブサイト間や拡張機能間まで話を広げたSpectreについての論文。
Chromeはメモリを圧迫するとeTLD+1の範囲でプロセスがまとまる。まとまったプロセス内でV8の癖を使って投機的実行攻撃して別サイトのメモリデータを読み込むという話。


ソフトウェア、ツール、ライブラリ関係


wizardpisces/tiny-sass-compiler: Another sass compiler write from scatch,runnable on both node and browser

github.com/wizardpisces/tiny-sass-compiler

Sass JavaScript Tools CSS

JavaScriptで書かれたSassコンパイル。
ブラウザとNode.jsで動作する。


書籍関係


TypeScriptハンズオン | 掌田津耶乃 | 工学 | Kindleストア | Amazon

www.amazon.co.jp/dp/B09D76MB7B/

TypeScript book

ハンズオン形式のTypeScript入門書


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