하태구 · Taegu Ha
Vulnerability Researcher · Systems Security
실제 제품이나 기기를 직접 다뤄 보며 분석하고 취약점을 찾는 걸 좋아합니다. 기존 도구는 최대한 활용하고, 제 분석 방식에 맞는 게 없으면 직접 만들어 씁니다.Linux Kernel부터 Web·OSS·AI 에이전트, ESP32·BLE, Galaxy Watch5, 차량 CAN·IDS까지 직접 다뤄보며 분석 검증했고 이를 통해 성장했습니다.
공개 CVE 연계 사례 15건 · 직접 귀속·보고 14건 · Linux Kernel upstream patch 3건
whoami
안녕하세요. 하태구입니다. 저는 real-world에 가까운 보안을 좋아합니다. PoC가 한 번 실행되는 데서 끝내기보다, 실제 제품에서 문제가 왜 생기고 어떤 조건에서 재현되며 어떻게 고쳐지는지까지 확인하는 데 더 관심이 있습니다.
주로 Linux Kernel과 오픈소스(OSS)를 연구해 왔지만, 한 분야에 갇히기보다는 폭넓은 경험을 지향합니다. 웹 애플리케이션, ESP32·BLE 스택, Galaxy Watch5 펌웨어, Windows 안티치트, 차량 CAN·IDS까지 다뤄 오면서, 낯선 환경에서도 빠르게 구조를 파악하고 상황에 맞게 유연하게 대처하는 힘을 길렀습니다.
최근에는 AI 에이전트와 LLM 기반 시스템에서 새롭게 생기는 공격 경로도 살펴보고 있습니다. Langflow와 PraisonAI에서 동적 코드 검증 우회, LLM 도구 실행, CI/CD 명령 주입 취약점을 찾았고, 현재는 관련 프레임워크와 개발·배포 환경으로 분석 범위를 넓히고 있습니다.
대상이 달라도 접근은 같습니다. 코드만 보고 끝내지 않고 필요하면 펌웨어와 실제 기기, 메모리 구조, 통신 트래픽까지 따라가 원인을 끝까지 확인합니다. 그래서 도구도 익숙한 것만 고집하기보다 문제에 맞춰 고릅니다. Linux 바이너리 분석에는 IDA·GDB를, 커널 취약점 재현에는 KUnit·KASAN·QEMU를 사용했습니다. Windows 게임과 드라이버는 IDA·WinDbg·ReClass.NET으로 분석했고, 차량 CAN·IDS 문제에서는 TSMaster 환경을 활용했습니다.
문제에 맞는 도구나 실험 환경이 없으면 직접 만듭니다. 안티치트 연구에서는 Detours 기반 사용자 모드 PoC에서 시작해 WDK 기반 커널 드라이버 개발·디버깅 환경까지 직접 구성했고, Galaxy Watch5 연구에서는 반복적인 펌웨어 플래싱과 복구를 위한 USB JIG와 테스트베드를 만들었습니다. 대규모 코드베이스를 분석할 때는 조사 후보를 추리고 여러 실행 결과를 비교·보존하는 LLM 기반 취약점 연구 하네스를 개발했습니다.
현재 강원대학교 컴퓨터공학과에 재학 중이며 2027년 2월 졸업 예정입니다. 앞으로도 Linux와 임베디드·제품 보안을 중심으로 실제 환경에서 검증하는 취약점 연구를 이어가면서, 기술과 공격 표면의 변화를 놓치지 않으려 합니다. AI 에이전트와 LLM 기반 시스템처럼 새롭게 중요해지는 영역도 연구 범위에 적극적으로 포함하고, 검증에 필요한 도구 역시 직접 만들어 갈 생각입니다.
관심 분야
Linux Kernel · OSS Security · Vulnerability Research · AI Agent / LLM Security · Embedded / Firmware Security · Research Tooling
주요 연구 경험 및 성과
- Linux Kernel — USB UAC1에서는 USB host가 보낸 길이가 4바이트 kernel stack 변수의 복사 길이로 사용되는 과정을 KUnit과 KASAN으로 재현했습니다. PPP에서는 새 user namespace 안에서만 권한을 가진 프로세스가 기존 network namespace에 객체를 만들 수 있는지 VM 대조 실험으로 확인했습니다. 두 문제는 각각 CVE-2026-31720과 CVE-2026-53075로 공개됐고, 제가 작성한 수정 patch도 upstream에 반영됐습니다. 별도로 BPF verifier의 크기 검증과 selftest를 수정한 patch도 upstream에 반영했습니다.
- Native · Embedded · BLE — libpng는 AArch64용 ASan harness를 만들어 짧은 palette tail에서 발생하는 OOB read와 write를 나눠 확인했습니다. arduino-esp32는 네트워크 입력에 따라 달라지는 NBNS 이름 길이를 최소 C harness로 옮겨 OOB read와 stack overflow를 따로 재현했고, Apache NimBLE은 실제 host test utility에서 잘린 BLE ATT 응답이 assertion까지 도달하는지 확인했습니다. 세 결과는 각각 CVE-2026-33636, CVE-2026-41429, CVE-2026-45815로 공개됐습니다.
- Web · Authorization — OpenFGA에서는 허용과 거부 결과가 달라야 하는 두 요청이 같은 캐시 키를 갖도록 만든 뒤, 앞선 허용 결과가 뒤의 거부 요청에 잘못 재사용되는지 실험했습니다. Caddy에서는
/routes/0접근만 허용된 인증서로/routes/01을 요청해, 권한 검사와 실제 경로 해석이 다르게 동작하는 문제를 재현했습니다. LinkAce와 NamelessMC에서는 정상 화면과 API 응답, 권한이 다른 계정의 결과를 비교해 서버의 내부 주소 요청, 비공개 글·메모 노출, OAuth 로그인 CSRF를 찾았습니다. 이렇게 찾은 취약점 6건은 모두 CVE로 공개됐습니다: OpenFGA CVE-2026-33729, Caddy CVE-2026-45692, LinkAce CVE-2026-33953·CVE-2026-33954, NamelessMC CVE-2026-33398·CVE-2026-34460.
- AI Agent · CI/CD — Langflow에서는 일반 component code는 차단되지만 ToolGuard의 동적 코드 필드는 검사되지 않는 경로를 따라가, 저장된 Python code가 server에서 실행되는 조건을 확인했습니다. PraisonAI A2A는 공식 예제를 직접 실행한 뒤 실제 HTTP 요청과 Gemini의 tool 호출을 거쳐 marker file이 생성되는 것까지 연결했습니다. Claude workflow는 외부 fork의 branch 이름으로 안전한 canary command를 실행하고, 변경된 PATH가 다음 step까지 이어지는 것을 실제 GitHub Actions run에서 확인했습니다. 이 결과는 CVE-2026-9135, CVE-2026-47391, CVE-2026-48168로 공개됐습니다.
- Firmware · Device · Automotive — Galaxy Watch5에서는 Android API에서 끝내지 않고 AP에서 Sensor Hub firmware, SPI register로 이어지는 센서 경로를 추적했습니다. 반복 flashing과 복구 실험을 위해 USB JIG를 직접 만들고 Odin을 이용한 실기기 testbed도 구성했습니다. 이후 CAN·RF/BLE·인포테인먼트 HW·CAN IDS가 결합된 실차 기반 AutoHack 2024 본선에 st3p_up 팀으로 참가해 협의회장상을 받았습니다.
- Windows · Game Anti-Cheat — IDA·WinDbg·ReClass.NET으로 Palworld의 Unreal Engine 객체 구조와 DLL 주입 경로를 분석하고, Detours 기반
LoadLibraryA허용 정책과 디버거 흔적 탐지 PoC를 구현했습니다. 사용자 모드 후킹으로는 외부 프로세스에 핸들 권한이 부여되는 과정을 통제하기 어렵다는 한계를 확인한 뒤, 방어 지점을 Windows Object Manager로 옮겼습니다. WDK와ObRegisterCallbacks사전 콜백을 이용해 비인가 프로세스의 위험한 핸들 권한을 제한하는 커널 드라이버를 구현하고, PalGuard와 드라이버를 IOCTL로 연결해 통제된 환경에서 적용 전후를 검증했습니다.