Yichao Xu

Yichao Xu

计算机科学博士候选人
约翰斯·霍普金斯大学
导师: Yinzhi Cao

研究

程序分析

  • 此前: 改进了动态 PHP 与 JavaScript 中不安全数据流的分析:CoBrA 在 19 个 PHP 应用中发现 54 个此前未知的漏洞,FAST 在 npm 软件包中发现 242 个。
  • 当前: 不安全的数据流只是问题的一部分,发现逻辑漏洞还需要理解应用应遵守的业务规则。结合程序分析与智能体辅助检验预设规则,已在 PHP 电商应用中发现 47 个此前未知的逻辑漏洞。
  • 下一步: 当相关业务规则没有预先给定时,如何发现逻辑漏洞?下一步研究如何识别候选规则,并检验违规是否造成实际安全后果。

智能体安全

  • 相关工作: 发现相同安全请求会因先前对话而得到不同程度的协助。
  • 正在探索: 这种上下文敏感性会如何影响智能体的实际操作?研究任务与授权约束如何在工具调用中持续成立,以及哪些失效会导致逻辑漏洞。

论文

CoBrA: Context-, Branch-sensitive Static Analysis for Detecting Taint-style Vulnerabilities in PHP Web Applications

论文代码PDF

第一作者

PHP 应用可在运行时决定调用哪个函数,这给静态漏洞检测带来了困难。我设计并实现了 CoBrA,利用调用上下文解析动态调用并追踪不安全的输入传播,在 19 个 Web 应用中发现了 54 个此前未知的漏洞。

Yichao Xu, Mingqing Kang, Neil Thimmaiah, Rigel Gjomemo, V. N. Venkatakrishnan, Yinzhi Cao

CoBrA 如何工作 解析动态调用,再核查数据流
这个请求可能经过哪些路径?

PHP

controller 内部的依赖

$action . "_controller" → ?

阶段详解:输入、方法与输出
输入
方法
输出
完整的简化 PHP 示例

改编自 论文中的 Emoncms 示例;省略了解析、数据库初始化及另一引擎的函数体。本示例展示预设的分析状态,不执行 PHP 或 CoBrA。

Scaling JavaScript Abstract Interpretation to Detect and Exploit Node.js Taint-style Vulnerability

论文代码PDF

第二作者

FAST 先构建候选调用路径,再聚焦与潜在漏洞相关的语句,以降低动态 JavaScript 的分析成本。我实现了 JavaScript 抽象解释,并主导实验评估;该研究在 npm 软件包中发现了 242 个此前未知的漏洞。

Mingqing Kang, Yichao Xu, Song Li, Rigel Gjomemo, Jianwei Hou, V. N. Venkatakrishnan, Yinzhi Cao

展开更多收起另有 3 篇论文

Discovery or Memorization? A Faithful Benchmark for Real-World Business-Logic Vulnerability Discovery

论文PDF

arXiv 预印本

AnonVul 评估漏洞发现智能体是在分析业务逻辑缺陷,还是依赖可识别的软件身份。该基准结合匿名化漏洞任务、沙箱执行和专家定义的检查,评估真实的漏洞发现能力。

Rui Yang, Yichao Xu, Zhuohao Zhang, Jiahao Ji, Chaowei Xiao, Yinzhi Cao, Ziyang Li

Same Request, Different Boundary: Evaluating Cybersecurity Assistance across Conversational Contexts

论文PDF

arXiv 预印本

3R-Bench 研究前序对话如何改变大模型对同一网络安全请求的回应,区分拒绝、有限帮助、直接配合和服务商拦截等行为。

Rui Yang, Yang Hong, Yichao Xu, Zhengyu Liu, Yinzhi Cao, Ziyang Li

A Denial of Services Attack for IOT System

《科学与财富》· 2018 年 6 月

软件工具

用终端中的农场动画展示 Claude Code 会话状态

代码Rust

展示智能体正在工作、空闲或等待输入的状态。

使用示例 · 终端

需要 Rust 1.85+ 和支持 24 位色的终端。

git clone https://github.com/samhsu-dev/harvest-claude.git
cd harvest-claude
cargo install --path .
harvest-claude

活跃的 Claude Code 会话会自动显示为农场角色。

Harvest Claude 的终端农场界面,包含像素角色与农田

为 PHP 安全分析贡献五类漏洞查询、回归测试和版本检查修复

代码ScalaPR #5327 · 已合并

向上游贡献 SQL 注入、命令注入、代码注入、不安全文件操作及 XSS 查询,配有正反测试用例;同时修复带发行版后缀的 PHP 版本号检查。PR #5327 于 2025 年 2 月 28 日合并。

示例 · PHP 测试用例

以下最小 SQL 注入用例来自已合并 PR 的测试:

<?php
$input = $_GET["username"];
$query = "SELECT * FROM users WHERE name = '$input'";
$result = mysql_query($query);

该查询检查请求输入是否到达数据库调用。对应的反例使用常量输入,不应产生匹配。

展开更多收起另有 2 项

在 Python 中查询 Joern 代码属性图,分析程序结构与数据流关系

代码Python

支持载入导出的图、查询节点与边,并遍历它们之间的关系。

使用示例 · Python

安装命令: pip install cpg2py。使用制表符分隔的 nodes.csv 和 rels.csv 导出文件。

from pathlib import Path
from cpg2py import cpg_graph

graph = cpg_graph(Path("nodes.csv"), Path("rels.csv"))
for node in graph.nodes(lambda n: n.type == "Function"):
    print(node.name)

输出所提供代码属性图中的函数名。

将旧版 RIPS PHP 分析器改造为命令行工具,支持 JSON 结果输出

代码PHP

移除了 RIPS v0.5 对 Web 界面的依赖,增加命令行参数和 JSON 输出,便于集成自动化分析流程。分析引擎沿用已停止维护的 RIPS v0.5。

使用示例 · 终端

需要 PHP。请将 /path/to/php/project 替换为本地 PHP 源码目录。

git clone https://github.com/samhsu-dev/ripsv0.5-cli.git
cd ripsv0.5-cli
php rips.php /path/to/php/project --vector=xss --format=json

扫描源码中的潜在 XSS,并以 JSON 格式输出结果。

教育经历

约翰斯·霍普金斯大学

计算机科学博士 · 预计 2027 年 12 月毕业

约翰斯·霍普金斯大学

安全信息学硕士

展开更多收起另有 2 项

伦敦大学学院

软件系统工程硕士 · Distinction

利物浦大学与西交利物浦大学

信息与计算科学荣誉学士

研究与实践经历

Jay-I-break team

维护 8 条用于软件漏洞发现的智能体分析流水线,开发 1 条黑盒分析流水线和 2 条动态分析流水线。

中国工业互联网研究院

基于 Hyperledger Fabric 设计产品溯源框架,为业务敏感记录设置访问控制。

展开更多收起另有 3 项

约翰斯·霍普金斯大学 · SecLab

研究利用静态分析与模糊测试发现软件漏洞。

约翰斯·霍普金斯大学 · S4 Lab

使用 C++ 和 OMNeT++ 构建仿真,研究车联网中的拒绝服务攻击与防御。

伦敦大学学院

开发 Python 工具,利用 Git 仓库中的协同演化关系,将测试与源码方法建立关联。

教学经历

基于语言的安全

助教(TA)· 约翰斯·霍普金斯大学

实用密码系统

助教(TA)· 约翰斯·霍普金斯大学

展开更多收起另有 1 门课程

未来网络

课程助理(CA)· 约翰斯·霍普金斯大学

荣誉

博世中国 IoT 技术黑客松

Outstanding Achievement 奖