メインコンテンツまでスキップ

「セキュリティ」タグの記事が7件件あります

全てのタグを見る

V8サンドボックス

· 約18分
サミュエル・グロース

約3年前の初期設計ドキュメントと、それまでの間に作成された数百のCLにより、V8のインプロセス・サンドボックス — V8の軽量なインプロセスサンドボックス — は実験的なセキュリティ機能とみなされなくなる段階に達しました。本日より、V8サンドボックスはChromeの脆弱性報奨プログラム (VRP) に含まれるようになりました。強力なセキュリティ境界を形成するにはまだいくつかの問題を解決する必要がありますが、VRPへの含有はその方向性への重要な一歩です。したがって、Chrome 123はある種の「ベータ」リリースと見なされるでしょう。このブログ記事では、サンドボックスの背景にある動機を説明し、それがV8内のメモリ破壊がホストプロセス全体に広がることをどのように防ぐかを示し、最終的に、なぜこれがメモリ安全性への必要不可欠なステップであるかを説明します。

V8はこれまで以上に速く、安全です!

· 約9分
[Victor Gomes](https://twitter.com/VictorBFG)、グリューワインの専門家

速さが単なる特徴ではなく、生活の一部である刺激的なV8の世界へようこそ。2023年を締めくくるにあたり、今年達成したV8の印象的な成果を祝う時が来ました。

革新的なパフォーマンス最適化を通じて、V8はWebの進化し続ける景観において可能な限界を押し広げ続けています。今年は、新しい中間層コンパイラを導入し、上位層コンパイラのインフラストラクチャ、ランタイム、ガベージコレクタにいくつかの改善を実施しました。その結果、広範囲で大幅な速度向上が実現しました。

V8における制御フローの整合性

· 約12分
Stephen Röttger

制御フローの整合性(CFI)は、制御フローの乗っ取りによる攻撃を防止することを目的としたセキュリティ機能です。攻撃者がプロセスのメモリを改ざんすることに成功しても、追加の整合性チェックにより任意のコード実行を防ぐことができます。本ブログ記事では、V8にCFIを有効にするための作業について説明します。

C++における時間的メモリ安全性のレトロフィット

· 約15分
Anton Bikineev, Michael Lippautz ([@mlippautz](https://twitter.com/mlippautz)), Hannes Payer ([@PayerHannes](https://twitter.com/PayerHannes))
注記

注: 本投稿は元々Google Security Blogに投稿された内容です。

Chromeにおけるメモリ安全性は、ユーザーを保護するために絶え間なく進行中の取り組みです。私たちは常に悪意のある行為者を一歩先んじるために、さまざまな技術を試験しています。その一環として、本投稿ではC++のメモリ安全性を向上させるためにヒープスキャンニング技術を使用した私たちの取り組みについて紹介します。

Spectreから1年:V8チームの視点

· 約13分
Ben L. TitzerとJaroslav Sevcik

2018年1月3日、Google Project Zeroと他の機関が、投機的実行を行うCPUに影響を与える新しいクラスの脆弱性、SpectreおよびMeltdownと名付けられた脆弱性の最初の3つを公表しました。CPUの投機的実行メカニズムを利用し、攻撃者はコード内の暗黙的および明示的な安全性チェックを一時的に回避し、メモリ内の許可されていないデータの読み取りを防止することができます。プロセッサの投機は、アーキテクチャレベルでは見えないマイクロアーキテクチャの詳細として設計されていましたが、注意深く作成されたプログラムは、投機的に許可されていない情報を読み、プログラム断片の実行時間などのサイドチャネルを通じてそれを公開することができます。

逃避解析を一時的に無効化

· 約3分
Mathias Bynens ([@mathias](https://twitter.com/mathias)), サンドボックスエスケープ解析者

JavaScriptでは、割り当てられたオブジェクトが現在の関数外でアクセス可能になる場合、オブジェクトが「逃避」したとみなされます。通常、V8は新しいオブジェクトをJavaScriptヒープに割り当てますが、_逃避解析_を使用すると、最適化コンパイラがオブジェクトの寿命が関数のアクティベーションに限定されていることを確証できる場合に、そのオブジェクトを特別に扱えることがわかります。新しく割り当てられたオブジェクトへの参照がそれを生成する関数から逃避しない場合、JavaScriptエンジンはそのオブジェクトをヒープに明示的に割り当てる必要がありません。代わりに、オブジェクトの値を関数のローカル変数として効果的に扱うことができます。それによって、スタックやレジスタにこれらの値を格納したり、場合によっては値を完全に最適化して無くしたりするなどの多種多様な最適化が可能になります。逃避するオブジェクト(正確には逃避しないことを証明できないオブジェクト)は、ヒープに割り当てる必要があります。

Node.jsでのハッシュフラッディング脆弱性について…

· 約8分
Yang Guo ([@hashseed](https://twitter.com/hashseed))

今年の7月初め、Node.jsはハッシュフラッディング脆弱性に対処するため、現在保守されているすべてのブランチ向けにセキュリティアップデートをリリースしました。この暫定的な修正は、起動時のパフォーマンスに大きな回帰をもたらす代償があります。一方で、V8はパフォーマンスへの悪影響を避ける解決策を実装しました。