SlideShare ist ein Scribd-Unternehmen logo
1 von 5
Downloaden Sie, um offline zu lesen
RClassify: Classifying Race
Conditions in Web
Applications via Deterministic
Replay
著者: Lu Zhang and Chao Wang
(Virginia Tech and University of Southern California)
紹介者: 酒井 政裕 (Preferred Networks, Inc.)
@ ICSE2017勉強会 2017-08-24
要約:JavaScriptのデータ競合検査の偽陽性を、
スケジューリングしたリプレイでフィルタリング
9-2
課題
JavaScript においては処理はアトミックに実行されるので
普通の意味でのデータ競合(data race)は存在しない
が、イベントの発生順によって、意図しない結果になる不
具合はありえる
– 右図で <script> 要素の
パース前に画像がロード
されたら?
既存のデータ競合の検出
ツール(例えばEventRacer)
は誤検出が非常に多い
7
9-2
o the application itself (see Section V). This is better
sting approaches because technologies are changing
and tools implemented using a particular version of
wser will quickly become obsolete. In contrast, our
m-agnostic approach will be more robust against these
and updates.
we concretely execute the application using deter-
replay, as opposed to heuristically filtering the warn-
1], [22] or applying conservative static analysis [18],
can robustly decide if a race condition is real (i.e., if
ecution orders are feasible). The reason why existing
port many bogus race conditions in the first place is
some hidden happens-before relations between events
accounted for, and precisely capturing all happens-
elations would have been prohibitively expensive.
econd challenge is to decide, during state recording
mparison, which fields of the program state are impor-
thus should be compared. For a typical client-side web
1 <html>
2 <head> ... </head>
3 <body>
4 <img src="image1.jpg" onload="image1Loaded()"
id="image1">
5 <!-- omitted elements... -->
6 <script id="script1">
7 function image1Loaded() {
8 document.getElementById("button1")
.addEventListener("click", func);
9 }
10 function func() {
11 document.getElementById("outputField").innerHTML
= "Well done!";
12 }
13 </script>
14 <!-- omitted elements... -->
15 <button id="button1"> button1 </button>
16 <!-- omitted elements... -->
17 <div id="outputField"> </div>
18 </body>
19 </html>
Fig. 2. Example: A client-side web application with race conditions.※ Zhang et al. RClassify: Classifying Race Conditions in Web Applications
via Deterministic Replay. In Proceedings of ICSE 2017 Fig. 2より引用
提案手法: RCLASSIFY
1. サイトと既存検査ツールのwarningが入力
2. instrumentaionを施してイベント列を記録
3. 競合イベント(e1,e2)の実行順序が e1→e2 と e2→e1 とな
るようスケジュールしてリプレイ
(それ以外のイベント順序は出来るだけ保つ)
– 一方が実現不能であればデータ競合ではない (bogus)
4. 実行後に両者で状態
を比較
– 両者に本質的な違いが
あれば harmful な
データ競合
– 本質的に同じであれば
harmless なデータ競合
8
y: Classifying Race Conditions in Web
plications via Deterministic Replay
Lu Zhang
Virginia Tech
ksburg, VA, USA
Chao Wang
University of Southern California
Los Angeles, CA, USA
are common in web applications
and repair. Although there exist
web applications, they all report a
s. That is, the races they report are
n never occur in practice, or benign,
rroneous behaviors. Since manually
and error prone, reporting these
would be counter-productive. We
deterministic replay-based method
eal but also the truly harmful race
ng each pair of racing events in two
their impact on the program state:
Instrumented
Web Application
Compare the
Program States
Execution 1
URL of Web
Application
Race-condition
Warnings
Static Analysis
of HTML files
Replay the Racing
Event Pair
Execution 2
Harmful or
Harmless
Fig. 1. RCLASSIFY: Our evidence-based race-condition classification metho
017 IEEE/ACM 39th International Conference on Software Engineering017 IEEE/ACM 39th International Conference on Software Engineering
※ Zhang et al. RClassify: Classifying Race Conditions in Web Applications
via Deterministic Replay. In Proceedings of ICSE 2017 Fig. 1より引用
9-2
Instrumentation の詳細
Platform agnostic
– JavaScriptレベルのinstrumentationを頑張ることで、
プラットフォーム非依存で実現 (手をいれた特別なブラ
ウザやJavaScriptエンジンを使わなくて良い)
– 結構泥臭くやっている
面白かった例として、イベント順を強制するために
– イベント毎に「その前に起こっているべきイベントのリ
スト」を保持
– イベント発火時にまだ発火していないイベントがあった
ら、その時点では処理を実行せず、遅延して再実行
9
9-2
実験結果と所感
実験結果
– 標準的なベンチマーク50個で正確な分類結果
(R4等の既存ツールでは一部の競合しか検出できず)
– フォーチュン500企業からランダムに選んだ70サイトに適
用し、EventRacerの1903警告中、132を正しくharmful
と分類
所感
– 静的解析と動的解析の組み合わせの王道
– うまい問題を選んだ上で、実装と評価をきちんとやった
– フォーチュン500から評価対象を選んでいるのが面白い
10
9-2

Weitere ähnliche Inhalte

Ähnlich wie RClassify: Classifying Race Conditions in Web Applications via Deterministic Replay

NSDI2015読み会 Correctness セッション
NSDI2015読み会 Correctness セッションNSDI2015読み会 Correctness セッション
NSDI2015読み会 Correctness セッションDaisuke Kotani
 
手と物体とのInteractionを検出するアプリケーションの開発
手と物体とのInteractionを検出するアプリケーションの開発手と物体とのInteractionを検出するアプリケーションの開発
手と物体とのInteractionを検出するアプリケーションの開発Morpho, Inc.
 
[db tech showcase Tokyo 2017] D15: ビッグデータ x 機械学習の高速分析をVerticaで実現!by ヒューレット・パッ...
[db tech showcase Tokyo 2017] D15: ビッグデータ x 機械学習の高速分析をVerticaで実現!by ヒューレット・パッ...[db tech showcase Tokyo 2017] D15: ビッグデータ x 機械学習の高速分析をVerticaで実現!by ヒューレット・パッ...
[db tech showcase Tokyo 2017] D15: ビッグデータ x 機械学習の高速分析をVerticaで実現!by ヒューレット・パッ...Insight Technology, Inc.
 
Swarm Testing (ISSTA 2012) 輪講会用資料
Swarm Testing (ISSTA 2012) 輪講会用資料Swarm Testing (ISSTA 2012) 輪講会用資料
Swarm Testing (ISSTA 2012) 輪講会用資料nkazuki
 
論文紹介: Value Prediction Network
論文紹介: Value Prediction Network論文紹介: Value Prediction Network
論文紹介: Value Prediction NetworkKatsuki Ohto
 
なぜ自社で脆弱性診断を行うべきなのか
なぜ自社で脆弱性診断を行うべきなのかなぜ自社で脆弱性診断を行うべきなのか
なぜ自社で脆弱性診断を行うべきなのかSen Ueno
 
[JAWS2012]CRFを用いた メディア情報の抽出とLinked Data化 ~ ソーシャルメディアとマスメディアの比較事例 ~
[JAWS2012]CRFを用いた メディア情報の抽出とLinked Data化 ~ ソーシャルメディアとマスメディアの比較事例 ~[JAWS2012]CRFを用いた メディア情報の抽出とLinked Data化 ~ ソーシャルメディアとマスメディアの比較事例 ~
[JAWS2012]CRFを用いた メディア情報の抽出とLinked Data化 ~ ソーシャルメディアとマスメディアの比較事例 ~Kenji Koshikawa
 
Reactive Workflow Argo Eventsの紹介
Reactive Workflow Argo Eventsの紹介Reactive Workflow Argo Eventsの紹介
Reactive Workflow Argo Eventsの紹介Daisuke Taniwaki
 
「モダンな」可視化アプリケーション開発とはどのようなものか?
「モダンな」可視化アプリケーション開発とはどのようなものか?「モダンな」可視化アプリケーション開発とはどのようなものか?
「モダンな」可視化アプリケーション開発とはどのようなものか?Keiichiro Ono
 
Adversarial Networks の画像生成に迫る @WBAFLカジュアルトーク#3
Adversarial Networks の画像生成に迫る @WBAFLカジュアルトーク#3Adversarial Networks の画像生成に迫る @WBAFLカジュアルトーク#3
Adversarial Networks の画像生成に迫る @WBAFLカジュアルトーク#3Daiki Shimada
 

Ähnlich wie RClassify: Classifying Race Conditions in Web Applications via Deterministic Replay (12)

NSDI2015読み会 Correctness セッション
NSDI2015読み会 Correctness セッションNSDI2015読み会 Correctness セッション
NSDI2015読み会 Correctness セッション
 
マーブル図で怖くないRxJS
マーブル図で怖くないRxJSマーブル図で怖くないRxJS
マーブル図で怖くないRxJS
 
手と物体とのInteractionを検出するアプリケーションの開発
手と物体とのInteractionを検出するアプリケーションの開発手と物体とのInteractionを検出するアプリケーションの開発
手と物体とのInteractionを検出するアプリケーションの開発
 
[db tech showcase Tokyo 2017] D15: ビッグデータ x 機械学習の高速分析をVerticaで実現!by ヒューレット・パッ...
[db tech showcase Tokyo 2017] D15: ビッグデータ x 機械学習の高速分析をVerticaで実現!by ヒューレット・パッ...[db tech showcase Tokyo 2017] D15: ビッグデータ x 機械学習の高速分析をVerticaで実現!by ヒューレット・パッ...
[db tech showcase Tokyo 2017] D15: ビッグデータ x 機械学習の高速分析をVerticaで実現!by ヒューレット・パッ...
 
Jaws2012 koshikawa
Jaws2012 koshikawaJaws2012 koshikawa
Jaws2012 koshikawa
 
Swarm Testing (ISSTA 2012) 輪講会用資料
Swarm Testing (ISSTA 2012) 輪講会用資料Swarm Testing (ISSTA 2012) 輪講会用資料
Swarm Testing (ISSTA 2012) 輪講会用資料
 
論文紹介: Value Prediction Network
論文紹介: Value Prediction Network論文紹介: Value Prediction Network
論文紹介: Value Prediction Network
 
なぜ自社で脆弱性診断を行うべきなのか
なぜ自社で脆弱性診断を行うべきなのかなぜ自社で脆弱性診断を行うべきなのか
なぜ自社で脆弱性診断を行うべきなのか
 
[JAWS2012]CRFを用いた メディア情報の抽出とLinked Data化 ~ ソーシャルメディアとマスメディアの比較事例 ~
[JAWS2012]CRFを用いた メディア情報の抽出とLinked Data化 ~ ソーシャルメディアとマスメディアの比較事例 ~[JAWS2012]CRFを用いた メディア情報の抽出とLinked Data化 ~ ソーシャルメディアとマスメディアの比較事例 ~
[JAWS2012]CRFを用いた メディア情報の抽出とLinked Data化 ~ ソーシャルメディアとマスメディアの比較事例 ~
 
Reactive Workflow Argo Eventsの紹介
Reactive Workflow Argo Eventsの紹介Reactive Workflow Argo Eventsの紹介
Reactive Workflow Argo Eventsの紹介
 
「モダンな」可視化アプリケーション開発とはどのようなものか?
「モダンな」可視化アプリケーション開発とはどのようなものか?「モダンな」可視化アプリケーション開発とはどのようなものか?
「モダンな」可視化アプリケーション開発とはどのようなものか?
 
Adversarial Networks の画像生成に迫る @WBAFLカジュアルトーク#3
Adversarial Networks の画像生成に迫る @WBAFLカジュアルトーク#3Adversarial Networks の画像生成に迫る @WBAFLカジュアルトーク#3
Adversarial Networks の画像生成に迫る @WBAFLカジュアルトーク#3
 

Mehr von Masahiro Sakai

DeepXplore: Automated Whitebox Testing of Deep Learning
DeepXplore: Automated Whitebox Testing of Deep LearningDeepXplore: Automated Whitebox Testing of Deep Learning
DeepXplore: Automated Whitebox Testing of Deep LearningMasahiro Sakai
 
Towards formal verification of neural networks
Towards formal verification of neural networksTowards formal verification of neural networks
Towards formal verification of neural networksMasahiro Sakai
 
関数プログラマから見たPythonと機械学習
関数プログラマから見たPythonと機械学習関数プログラマから見たPythonと機械学習
関数プログラマから見たPythonと機械学習Masahiro Sakai
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みMasahiro Sakai
 
Introduction to Max-SAT and Max-SAT Evaluation
Introduction to Max-SAT and Max-SAT EvaluationIntroduction to Max-SAT and Max-SAT Evaluation
Introduction to Max-SAT and Max-SAT EvaluationMasahiro Sakai
 
Aluminum: Principled Scenario Exploration through Minimality
Aluminum: Principled Scenario Exploration through MinimalityAluminum: Principled Scenario Exploration through Minimality
Aluminum: Principled Scenario Exploration through MinimalityMasahiro Sakai
 
代数的実数とCADの実装紹介
代数的実数とCADの実装紹介代数的実数とCADの実装紹介
代数的実数とCADの実装紹介Masahiro Sakai
 
How a CDCL SAT solver works
How a CDCL SAT solver worksHow a CDCL SAT solver works
How a CDCL SAT solver worksMasahiro Sakai
 
萩野服部研究室 スキー合宿 2012 自己紹介(酒井)
萩野服部研究室 スキー合宿 2012 自己紹介(酒井)萩野服部研究室 スキー合宿 2012 自己紹介(酒井)
萩野服部研究室 スキー合宿 2012 自己紹介(酒井)Masahiro Sakai
 
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...Masahiro Sakai
 
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
“Design and Implementation of Generics for the .NET Common Language Runtime”他...“Design and Implementation of Generics for the .NET Common Language Runtime”他...
“Design and Implementation of Generics for the .NET Common Language Runtime”他...Masahiro Sakai
 
Relaxed Dependency Analysis
Relaxed Dependency AnalysisRelaxed Dependency Analysis
Relaxed Dependency AnalysisMasahiro Sakai
 
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...Masahiro Sakai
 
Whole Program Paths 等の紹介@PLDIr#3
Whole Program Paths 等の紹介@PLDIr#3Whole Program Paths 等の紹介@PLDIr#3
Whole Program Paths 等の紹介@PLDIr#3Masahiro Sakai
 
Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)Masahiro Sakai
 
Introduction to Categorical Programming
Introduction to Categorical ProgrammingIntroduction to Categorical Programming
Introduction to Categorical ProgrammingMasahiro Sakai
 
融合変換による最適化の理論的基盤と正当性 (2006-06-27)
融合変換による最適化の理論的基盤と正当性 (2006-06-27)融合変換による最適化の理論的基盤と正当性 (2006-06-27)
融合変換による最適化の理論的基盤と正当性 (2006-06-27)Masahiro Sakai
 
融合変換による最適化の理論的基盤と正当性 (2006-06-20)
融合変換による最適化の理論的基盤と正当性 (2006-06-20)融合変換による最適化の理論的基盤と正当性 (2006-06-20)
融合変換による最適化の理論的基盤と正当性 (2006-06-20)Masahiro Sakai
 
Ruby-GNOME2におけるGC問題
Ruby-GNOME2におけるGC問題Ruby-GNOME2におけるGC問題
Ruby-GNOME2におけるGC問題Masahiro Sakai
 

Mehr von Masahiro Sakai (20)

DeepXplore: Automated Whitebox Testing of Deep Learning
DeepXplore: Automated Whitebox Testing of Deep LearningDeepXplore: Automated Whitebox Testing of Deep Learning
DeepXplore: Automated Whitebox Testing of Deep Learning
 
Towards formal verification of neural networks
Towards formal verification of neural networksTowards formal verification of neural networks
Towards formal verification of neural networks
 
関数プログラマから見たPythonと機械学習
関数プログラマから見たPythonと機械学習関数プログラマから見たPythonと機械学習
関数プログラマから見たPythonと機械学習
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 
Introduction to Max-SAT and Max-SAT Evaluation
Introduction to Max-SAT and Max-SAT EvaluationIntroduction to Max-SAT and Max-SAT Evaluation
Introduction to Max-SAT and Max-SAT Evaluation
 
Aluminum: Principled Scenario Exploration through Minimality
Aluminum: Principled Scenario Exploration through MinimalityAluminum: Principled Scenario Exploration through Minimality
Aluminum: Principled Scenario Exploration through Minimality
 
代数的実数とCADの実装紹介
代数的実数とCADの実装紹介代数的実数とCADの実装紹介
代数的実数とCADの実装紹介
 
How a CDCL SAT solver works
How a CDCL SAT solver worksHow a CDCL SAT solver works
How a CDCL SAT solver works
 
Omega test and beyond
Omega test and beyondOmega test and beyond
Omega test and beyond
 
萩野服部研究室 スキー合宿 2012 自己紹介(酒井)
萩野服部研究室 スキー合宿 2012 自己紹介(酒井)萩野服部研究室 スキー合宿 2012 自己紹介(酒井)
萩野服部研究室 スキー合宿 2012 自己紹介(酒井)
 
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
 
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
“Design and Implementation of Generics for the .NET Common Language Runtime”他...“Design and Implementation of Generics for the .NET Common Language Runtime”他...
“Design and Implementation of Generics for the .NET Common Language Runtime”他...
 
Relaxed Dependency Analysis
Relaxed Dependency AnalysisRelaxed Dependency Analysis
Relaxed Dependency Analysis
 
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...
 
Whole Program Paths 等の紹介@PLDIr#3
Whole Program Paths 等の紹介@PLDIr#3Whole Program Paths 等の紹介@PLDIr#3
Whole Program Paths 等の紹介@PLDIr#3
 
Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)
 
Introduction to Categorical Programming
Introduction to Categorical ProgrammingIntroduction to Categorical Programming
Introduction to Categorical Programming
 
融合変換による最適化の理論的基盤と正当性 (2006-06-27)
融合変換による最適化の理論的基盤と正当性 (2006-06-27)融合変換による最適化の理論的基盤と正当性 (2006-06-27)
融合変換による最適化の理論的基盤と正当性 (2006-06-27)
 
融合変換による最適化の理論的基盤と正当性 (2006-06-20)
融合変換による最適化の理論的基盤と正当性 (2006-06-20)融合変換による最適化の理論的基盤と正当性 (2006-06-20)
融合変換による最適化の理論的基盤と正当性 (2006-06-20)
 
Ruby-GNOME2におけるGC問題
Ruby-GNOME2におけるGC問題Ruby-GNOME2におけるGC問題
Ruby-GNOME2におけるGC問題
 

Kürzlich hochgeladen

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 

Kürzlich hochgeladen (9)

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 

RClassify: Classifying Race Conditions in Web Applications via Deterministic Replay

  • 1. RClassify: Classifying Race Conditions in Web Applications via Deterministic Replay 著者: Lu Zhang and Chao Wang (Virginia Tech and University of Southern California) 紹介者: 酒井 政裕 (Preferred Networks, Inc.) @ ICSE2017勉強会 2017-08-24 要約:JavaScriptのデータ競合検査の偽陽性を、 スケジューリングしたリプレイでフィルタリング 9-2
  • 2. 課題 JavaScript においては処理はアトミックに実行されるので 普通の意味でのデータ競合(data race)は存在しない が、イベントの発生順によって、意図しない結果になる不 具合はありえる – 右図で <script> 要素の パース前に画像がロード されたら? 既存のデータ競合の検出 ツール(例えばEventRacer) は誤検出が非常に多い 7 9-2 o the application itself (see Section V). This is better sting approaches because technologies are changing and tools implemented using a particular version of wser will quickly become obsolete. In contrast, our m-agnostic approach will be more robust against these and updates. we concretely execute the application using deter- replay, as opposed to heuristically filtering the warn- 1], [22] or applying conservative static analysis [18], can robustly decide if a race condition is real (i.e., if ecution orders are feasible). The reason why existing port many bogus race conditions in the first place is some hidden happens-before relations between events accounted for, and precisely capturing all happens- elations would have been prohibitively expensive. econd challenge is to decide, during state recording mparison, which fields of the program state are impor- thus should be compared. For a typical client-side web 1 <html> 2 <head> ... </head> 3 <body> 4 <img src="image1.jpg" onload="image1Loaded()" id="image1"> 5 <!-- omitted elements... --> 6 <script id="script1"> 7 function image1Loaded() { 8 document.getElementById("button1") .addEventListener("click", func); 9 } 10 function func() { 11 document.getElementById("outputField").innerHTML = "Well done!"; 12 } 13 </script> 14 <!-- omitted elements... --> 15 <button id="button1"> button1 </button> 16 <!-- omitted elements... --> 17 <div id="outputField"> </div> 18 </body> 19 </html> Fig. 2. Example: A client-side web application with race conditions.※ Zhang et al. RClassify: Classifying Race Conditions in Web Applications via Deterministic Replay. In Proceedings of ICSE 2017 Fig. 2より引用
  • 3. 提案手法: RCLASSIFY 1. サイトと既存検査ツールのwarningが入力 2. instrumentaionを施してイベント列を記録 3. 競合イベント(e1,e2)の実行順序が e1→e2 と e2→e1 とな るようスケジュールしてリプレイ (それ以外のイベント順序は出来るだけ保つ) – 一方が実現不能であればデータ競合ではない (bogus) 4. 実行後に両者で状態 を比較 – 両者に本質的な違いが あれば harmful な データ競合 – 本質的に同じであれば harmless なデータ競合 8 y: Classifying Race Conditions in Web plications via Deterministic Replay Lu Zhang Virginia Tech ksburg, VA, USA Chao Wang University of Southern California Los Angeles, CA, USA are common in web applications and repair. Although there exist web applications, they all report a s. That is, the races they report are n never occur in practice, or benign, rroneous behaviors. Since manually and error prone, reporting these would be counter-productive. We deterministic replay-based method eal but also the truly harmful race ng each pair of racing events in two their impact on the program state: Instrumented Web Application Compare the Program States Execution 1 URL of Web Application Race-condition Warnings Static Analysis of HTML files Replay the Racing Event Pair Execution 2 Harmful or Harmless Fig. 1. RCLASSIFY: Our evidence-based race-condition classification metho 017 IEEE/ACM 39th International Conference on Software Engineering017 IEEE/ACM 39th International Conference on Software Engineering ※ Zhang et al. RClassify: Classifying Race Conditions in Web Applications via Deterministic Replay. In Proceedings of ICSE 2017 Fig. 1より引用 9-2
  • 4. Instrumentation の詳細 Platform agnostic – JavaScriptレベルのinstrumentationを頑張ることで、 プラットフォーム非依存で実現 (手をいれた特別なブラ ウザやJavaScriptエンジンを使わなくて良い) – 結構泥臭くやっている 面白かった例として、イベント順を強制するために – イベント毎に「その前に起こっているべきイベントのリ スト」を保持 – イベント発火時にまだ発火していないイベントがあった ら、その時点では処理を実行せず、遅延して再実行 9 9-2
  • 5. 実験結果と所感 実験結果 – 標準的なベンチマーク50個で正確な分類結果 (R4等の既存ツールでは一部の競合しか検出できず) – フォーチュン500企業からランダムに選んだ70サイトに適 用し、EventRacerの1903警告中、132を正しくharmful と分類 所感 – 静的解析と動的解析の組み合わせの王道 – うまい問題を選んだ上で、実装と評価をきちんとやった – フォーチュン500から評価対象を選んでいるのが面白い 10 9-2