Pohang University of Science and Technology (POSTECH) Mar. 2015 - Feb. 2019Pohang (South Korea)
B.S. in Creative IT Engineering
Summa Cum Laude and Valedictorian Honor (best GPA in class of 2019: 4.19 out of 4.3)
Rudra: Finding Memory Safety Bugs in Rust at the Ecosystem Scale
Yechan Bae, Youngsuk Kim, Ammar Askar, Jungwon Lim, Taesoo Kim.
In Proceedings of the 28th ACM Symposium on Operating Systems Principles (SOSP),
Virtual Event, Germany, October 26-29, 2021.
(acceptance rate: 15.5% = 54/348)
Distinguished Artifact Award!
Microsoft Research, Research Intern May. 2020 - Aug. 2020Remote (United States)
Participated in a project about secure IoT smart space sharing
Implemented bare-metal provisioning and remote attestation on U-Boot to support authenticated booting in ARM SoCs
National Cancer Center, Research Assistant Apr. 2019 - June 2019Goyang (South Korea)
Implemented DICOM medical image visualization and segmentation with Qt framework
Audited and refactored control code for breast cancer biopsy robot (C++)
Oracle Labs Parallel Graph AnalytiX (PGX), Research Assistant Feb. 2018 - June 2018Belmont, California (United States)
Developed shared IR execution engine for PGX single-machine (Java) and distributed (C++) runtime
Implemented parser, type checker, and expression evaluator for PGX query expressions with Spoofax language workbench
POSTECH Database & Data Mining Lab, Undergraduate Intern Winter 2016 - Spring 2017Pohang (South Korea)
Developed adaptive indexing method to improve performance of a graph database written in C++
(advisor: Wook-Shin Han)
Scalable vulnerability detection
This topic is at the intersection of program analysis and software security, two fields that I have both enjoyed and excelled in.
Manual security auditing can find complicated new bugs, but it is hardly scalable in terms of time and human resource.
I'm extremely interested in automating such approach with fuzzing and static analysis,
so that we can prevent not only a single bug in a specific software
but also all bugs of the same class in all the current and the future software.
There is a huge gap between abstractions used in programming languages and machine code.
Typically, machine code does not contain any type information, struct definition, or inheritance hierarchy.
Furthermore, compilers might introduce additional disparity for optimization purpose.
Lost abstractions make understanding the core logic of programs harder, and reconstructing them can greatly help both human and machine analyzer.
Design of Operating Systems, Georgia Tech, Spring 2020