JSer.info #365 - GoogleのProject Zeroチームより、投機的実行を利用したサイドチャネル攻撃に関する脆弱性としてMeltdown and Spectreが公開されました。
ブラウザは任意のJavaScriptを実行でき、かつSharedArrayBuffer
やperformance.now()
など精度の高いタイマーをもつためこのサイドチャネル攻撃の影響受けます。本来は、ブラウザは一種Sandbox内で任意のJavaScriptを独立して実行する仕組みを持ちSandbox外の状態は観測できません。しかし、SpectreによってSandbox外の状態を観測できる可能性がでてきたためです。
そのためChrome、Firefox、MSEdge、Safariではそれぞれ一時的にSharedArrayBufferの無効化、performance.now()
の精度を下げる軽減策が導入されています。
(fantastictimers.pdfではSharedArrayBuffer
を高精度のタイマーとして使えることについて書かれています)
- Actions required to mitigate Speculative Side-Channel Attack techniques - The Chromium Projects
- Mitigations landing for new class of timing attack | Mozilla Security Blog
- Mitigating speculative execution side-channel attacks in Microsoft Edge and Internet Explorer - Microsoft Edge Dev BlogMicrosoft Edge Dev Blog
- What Spectre and Meltdown Mean For WebKit | WebKit
どのブラウザも今回の変更は一時的な対策であるとして、SharedArrayBuffer
については再度有効化する目標について書かれています。
関連: 高精度のタイマーを使ってのサイドチャネル攻撃について。
- IAIK/ChromeZero: Google Chrome extension implementing JavaScript Zero
- jszero.pdf
- fantastictimers.pdf
- ecmascriptsharedmem/TimingAttack.md at master · tc39/ecmascriptsharedmem
- Flush+Reload
- sec15-paper-gruss.pdf
BundlerかつTask RunnerであるFuseBox 3.0がリリースされました。
- FuseBox 3.0 — faster than ever – fusebox – Medium
- fuse-box/version3changelog.md at master · fuse-box/fuse-box
Code Splittingをデフォルトでサポート、TypeScriptをソースにTree Shakingをサポートするためにts:main
のサポート。
パフォーマンスの改善、ウェブサイトのデザイン更新などが行われています。
Vue版Next.jsであるNuxt.js 1.0がリリースされました。
Node.js 8.0.0未満のサポートを終了。
今後はドキュメンテーション、パフォーマンス、TypeScriptサポートの改善などを行っていくロードマップについて書かれています。
JSer.infoをサポートするには
- 😘 知り合いにJSer.infoをおすすめする
- ❤️ GitHub Sponsorsで@azuのスポンサーになる
- 🐦 X(Twitter)で@jser_infoをフォローする
JSer.info Sponsors
JSer.info SponsorsはGitHub SponsorsとしてJSer.infoを支援してくれている方々です。
ヘッドライン
Node v8.9.4 (LTS) | Node.js
nodejs.org/en/blog/release/v8.9.4/
Node.js 8.9.4リリース。
npm 5.6.0の同梱など
Actions Required to Mitigate Speculative Side-Channel Attack Techniques - The Chromium Projects
sites.google.com/a/chromium.org/dev/Home/chromium-security/ssca
Chrome、Firefox、MSEdge、SafariなどのブラウザはMeltdown/Spectre(CPUプロセッサに関する脆弱性)を受ける。
そのためSharedArrayBufferの無効化や軽減策としてperformance.now()
などの挙動を変更する
- Mitigations landing for new class of timing attack | Mozilla Security Blog
- Meltdown and Spectre
- Mitigating speculative execution side-channel attacks in Microsoft Edge and Internet Explorer - Microsoft Edge Dev BlogMicrosoft Edge Dev Blog
- What Spectre and Meltdown Mean For WebKit | WebKit
browserify/changelog.markdown at v15.0.0 · browserify/browserify
github.com/browserify/browserify/blob/v15.0.0/changelog.markdown
Browserify 15.0.0リリース。
Node.js 4未満のサポート終了、module-deps
の依存を更新、browserify
organizationに移動など
Dev.Opera — What’s new in Chromium 63 and Opera 50
Opera 50 (based on Chromium 63)リリース。
Dynamic import、Async Iterator/Generator、Promise#finally
、Intl.PluralRules
のサポートなど
ESLint v4.15.0 released - ESLint - Pluggable JavaScript linter
eslint.org/blog/2018/01/eslint-v4.15.0-released
ESLint 4.15.0リリース。
CLIEngine#getRules()
で設定されたルールの取得、messageId
の追加など開発者向けの機能追加など
アーティクル
ECMAScript 2015以降のJavaScriptの`this`を理解する | Web Scratch
efcl.info/2018/01/04/what-is-this/
JavaScriptのthis
についての解説記事。
状況によって異なる値を参照するthis
は、どのような仕組みでその値を決まっているかについて。
関数やArrow Functionでの仕組みの違いなどについて
FuseBox 3.0 — faster than ever – fusebox – Medium
medium.com/fusebox/fusebox-3-0-faster-than-ever-5fae4254556c
FuseBox 3.0リリース。
Code Splittingをデフォルトでサポート、TypeScriptをソースにTree Shakingをサポートするためにts:main
のサポート。
パフォーマンスの改善、ウェブサイトのデザイン更新など
New flexbox guides on MDN – Mozilla Hacks – the Web developer blog
hacks.mozilla.org/2018/01/new-flexbox-guides-on-mdn/
FlexboxのガイドがMDNに追加された
🐛🔨 The Contributors Guide to webpack — Part 1 🎨 🖼
medium.com/webpack/the-contributors-guide-to-webpack-part-1-a0410cc82ca4
webpackのアーキテクチャの解説をする連載。
webpack関係のツール、プラグインのエコシステムや動作の仕組み、モジュール依存関係グラフの構築などについて
Using React Fragments for the first time
javascriptplayground.com/react-fragments/
React 16で導入されたFragmentについての記事。
どのような問題を解決するのかや気をつけるべき点、ユースケースについて
What’s New in HTML 5.2?
bitsofco.de/whats-new-in-html-5-2/
W3C HTML 5.2の変更点まとめ。
<dialog>
要素、iframeにallowpaymentrequest
属性の追加、<main>
要素の複数配置の許容。
またkeygen
、menu
、menuitem
の削除、HTML4 XHTML1 strict doctypeの削除など
JavaScript Start-up Optimization | Web Fundamentals | Google Developers
ウェブサイトの起動速度周りの改善ポイントについてまとめた記事。
ネットワーク、ファイルサイズ、パース、コンパイル、実行コストについてを簡単にまとめたもの
Nuxt.js 1.0 is out 🎉 – Nuxt.js – Medium
medium.com/@nuxt_js/nuxt-js-1-0-is-out-bab1af459972
Vue版Next.jsであるNuxt.js 1.0リリース。
Node.js 8.0.0未満のサポートを終了。
今後はドキュメンテーション、パフォーマンス、TypeScriptサポートの改善などを行っていく
Sapper: Towards the ideal web app framework
svelte.technology/blog/sapper-towards-the-ideal-web-app-framework
SvelteベースのNext.js的なフレームワークであるSapperについて。
それぞれのページがSvelteのコンポーネントとなる。
元々フレームワークからではなくコンパイラとして始まったSvelteと他のフレームワークとの違いについて
The State of JavaScript Frameworks, 2017 | Part 1: Front-End Frameworks
www.npmjs.com/npm/state-of-javascript-frameworks-2017-part-1
npmのダウンロード数から見るJavaScriptのエコシステムについての連載記事。
フロントエンドとバックエンドのフレームワーク、Reactに関するエコシステムについて
スライド、動画関係
Chrome DevTools 101: Debugging JavaScript - YouTube
www.youtube.com/watch?v=H0XScE08hy8
Chrome開発者ツールでのデバッガーの使い方についての動画。
ブレークポイントの種類や貼り方、ステップ実行などについて
サイト、サービス、ドキュメント
Roadmap of Web Applications on Mobile
www.w3.org/2018/01/web-roadmaps/mobile/
W3Cのモバイルのウェブアプリに関する仕様のロードマップ。
それぞれの仕様のジャンルごとのまとめ、ステータス、実装状況について
Lighthouse 2.7 Updates | Web | Google Developers
developers.google.com/web/updates/2018/01/lighthouse
Lighthouse 2.7リリース。
SEO auditの追加、手動のアクセシビリティチェックリストの追加、WebP auditの更新など
ソフトウェア、ツール、ライブラリ関係
mweststrate/immer: Create the next immutable state by mutating the current one
MutableなAPIでImmutableにオブジェクトや配列を変更できるライブラリ。