Skip to content

Commit 1cecbfe

Browse files
committed
Update Yuancheng's talk
1 parent f01eb6f commit 1cecbfe

File tree

2 files changed

+144
-0
lines changed

2 files changed

+144
-0
lines changed

content/event/250305.md

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
---
2+
title: "Fuzzing the PHP Interpreter via Dataflow Fusion"
3+
4+
event: Weekly Talk
5+
event_url:
6+
7+
location: COM3-B1-15 - Meeting Rm 92
8+
address:
9+
street:
10+
city:
11+
region:
12+
postcode:
13+
country: Singapore
14+
15+
summary:
16+
abstract: "PHP, a dominant scripting language in web development, powers a vast range of websites, from personal blogs to major platforms. While existing research primarily focuses on PHP application-level security issues like code injection, memory errors within the PHP interpreter have been largely overlooked. These memory errors, prevalent due to the PHP interpreter’s extensive C codebase, pose significant risks to the confidentiality, integrity, and availability of PHP servers. This paper introduces FlowFusion, the first automatic fuzzing framework to detect memory errors in the PHP interpreter. FlowFusion leverages dataflow as an efficient representation of test cases maintained by PHP developers, merging two or more test cases to produce fused test cases with more complex code semantics. Moreover, FlowFusion employs strategies such as test mutation, interface fuzzing, and environment crossover to increase bug finding. In our evaluation, FlowFusion found 158 unknown bugs in the PHP interpreter, with 125 fixed and 11 confirmed. Comparing FlowFusion against the official test suite and a naive test concatenation approach, FlowFusion can detect new bugs that these methods miss, while also achieving greater code coverage. FlowFusion also outperformed state-of-the-art fuzzers AFL++ and Polyglot, covering 24% more lines of code after 24 hours of fuzzing. FlowFusion has gained wide recognition among PHP developers and is now integrated into the official PHP toolchain."
17+
18+
# Talk start and end times.
19+
# End time can optionally be hidden by prefixing the line with `#`.
20+
date: "2025-03-05T14:00:00Z"
21+
date_end: "2025-03-05T14:30:00Z"
22+
all_day: false
23+
24+
# Schedule page publish date (NOT talk date).
25+
publishDate: "2017-01-01T00:00:00Z"
26+
27+
authors: [Yuancheng Jiang]
28+
tags: [Weekly Talk]
29+
30+
# Is this a featured talk? (true/false)
31+
featured: false
32+
33+
image:
34+
caption: 'Image credit: [**Unsplash**](https://unsplash.com/photos/bzdhc5b3Bxs)'
35+
focal_point: Right
36+
37+
url_code: ""
38+
url_pdf: ""
39+
url_slides: ""
40+
url_video: ""
41+
42+
# Markdown Slides (optional).
43+
# Associate this talk with Markdown slides.
44+
# Simply enter your slide deck's filename without extension.
45+
# E.g. `slides = "example-slides"` references `content/slides/example-slides.md`.
46+
# Otherwise, set `slides = ""`.
47+
slides:
48+
49+
# Projects (optional).
50+
# Associate this post with one or more of your projects.
51+
# Simply enter your project's folder or file name without extension.
52+
# E.g. `projects = ["internal-project"]` references `content/project/deep-learning/index.md`.
53+
# Otherwise, set `projects = []`.
54+
projects:
55+
56+
# Slides can be added in a few ways:
57+
#
58+
# - **Create** slides using Wowchemy's [*Slides*](https://wowchemy.com/docs/managing-content/#create-slides) feature and link using `slides` parameter in the front matter of the talk file
59+
# - **Upload** an existing slide deck to `static/` and link using `url_slides` parameter in the front matter of the talk file
60+
# - **Embed** your slides (e.g. Google Slides) or presentation video on this page using [shortcodes](https://wowchemy.com/docs/writing-markdown-latex/).
61+
#
62+
# Further event details, including page elements such as image galleries, can be added to the body of this page.
63+
64+
65+
---

content/event/250305_2.md

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
---
2+
title: "Automatic Differential Testing of the PHP Interpreter"
3+
4+
event: Weekly Talk
5+
event_url:
6+
7+
location: COM3-B1-15 - Meeting Rm 92
8+
address:
9+
street:
10+
city:
11+
region:
12+
postcode:
13+
country: Singapore
14+
15+
summary:
16+
abstract: "The PHP interpreter, powering over 70% of websites on the internet, plays a crucial role in web development.
17+
Existing approaches to finding bugs in PHP primarily focus on detecting explicit security issues through
18+
crashes or sanitizer-based oracles, but fail to identify logic bugs that silently lead to incorrect results. We
19+
observe that the introduction of Just-In-Time (JIT) compilation mode in PHP presents an opportunity for
20+
differential testing, as it provides an alternative implementation of the same language specification. To leverage
21+
this opportunity, we propose DiffPHP, an automatic differential testing framework that efficiently detects
22+
logic bugs in the PHP interpreter by comparing JIT and non-JIT execution results. Our differential testing
23+
incorporates two key techniques: program state instrumentation for fine-grained execution state comparison,
24+
and dual verification to handle non-deterministic behaviors in PHP programs. Combined with a state-of-theart test case generation, these two techniques significantly reduce false alarms while maintaining high bug
25+
detection capability. Experimental results demonstrate that DiffPHP outperforms the official test suite used in
26+
PHP’s continuous integration, achieving higher code coverage and executing more Zend opcodes. Through
27+
ablation studies, we validate the effectiveness of both program state instrumentation and dual verification
28+
components. To date, DiffPHP has identified 35 previously unknown logic bugs in the PHP interpreter, with
29+
25 already fixed and 5 confirmed by PHP developers. DiffPHP has been acknowledged by the PHP developers,
30+
and offers a practical tool for automatically discovering logic bugs in the PHP interpreter."
31+
32+
# Talk start and end times.
33+
# End time can optionally be hidden by prefixing the line with `#`.
34+
date: "2025-03-05T14:30:00Z"
35+
date_end: "2025-03-05T15:00:00Z"
36+
all_day: false
37+
38+
# Schedule page publish date (NOT talk date).
39+
publishDate: "2017-01-01T00:00:00Z"
40+
41+
authors: [Yuancheng Jiang]
42+
tags: [Weekly Talk]
43+
44+
# Is this a featured talk? (true/false)
45+
featured: false
46+
47+
image:
48+
caption: 'Image credit: [**Unsplash**](https://unsplash.com/photos/bzdhc5b3Bxs)'
49+
focal_point: Right
50+
51+
url_code: ""
52+
url_pdf: ""
53+
url_slides: ""
54+
url_video: ""
55+
56+
# Markdown Slides (optional).
57+
# Associate this talk with Markdown slides.
58+
# Simply enter your slide deck's filename without extension.
59+
# E.g. `slides = "example-slides"` references `content/slides/example-slides.md`.
60+
# Otherwise, set `slides = ""`.
61+
slides:
62+
63+
# Projects (optional).
64+
# Associate this post with one or more of your projects.
65+
# Simply enter your project's folder or file name without extension.
66+
# E.g. `projects = ["internal-project"]` references `content/project/deep-learning/index.md`.
67+
# Otherwise, set `projects = []`.
68+
projects:
69+
70+
# Slides can be added in a few ways:
71+
#
72+
# - **Create** slides using Wowchemy's [*Slides*](https://wowchemy.com/docs/managing-content/#create-slides) feature and link using `slides` parameter in the front matter of the talk file
73+
# - **Upload** an existing slide deck to `static/` and link using `url_slides` parameter in the front matter of the talk file
74+
# - **Embed** your slides (e.g. Google Slides) or presentation video on this page using [shortcodes](https://wowchemy.com/docs/writing-markdown-latex/).
75+
#
76+
# Further event details, including page elements such as image galleries, can be added to the body of this page.
77+
78+
79+
---

0 commit comments

Comments
 (0)