절차를 기계에 위임하는 개발자
안녕하세요, 저는 Security Engineer 로 일하고 있는 김지훈입니다. 안전한 사이버 환경을 만드는 기술에 관심이 있고, 그 중 특히 OS나 platform 단의 보안 기술에 관심이 많습니다. 자동으로 잠재 취약점을 발견하는 분야와 그 취약점들을 보호하는 기술에 대한 경험이 많습니다.
반복되는 업무에 사용하는 시간을 절약하는게 업무의 효율성을 높이는 일이라고 믿습니다. 다양한 자동화 프로세스에 관심이 많고, 세번 이상 반복하게되는 작업은 무조건 스크립트로 실행한다는 원칙이 있습니다. 개발분야 뿐만 아니라 개인 업무차원에서 CI & CD pipeline 구축을 하기 위해 노력합니다.
새로운 기술에 관심이 많습니다. 기술 자체도 관심있지만 그보다 그 기술이 나오게 된 배경에 관심이 많으며, 그를 알기 위해서 경쟁 기술의 장단점과 시대적인 흐름을 정리해서 공부하길 좋아합니다.
Experience
Security team에서 OS 부터 application level 까지 다양한 layer의 보안 문제를 경험하고 해결해 온 경험 보유
Fuzzing
을 활용해 자동으로 software 잠재 취약점을 찾는 기술인 Utopia 연구 및 개발- Utopia 를 통해 Linux system library & Android library 에서 20개 이상의 잠재 취약점 발견 및
CVE
등록 - 10명 팀
Scrum Master
역할을 수행했고, Android library 취약점 파트에서 3명의 팀원을tech leading
LLVM
을 사용하여 GTEST syntax parsing 및 fuzz driver 자동 생성 구현- Tizen, Android, Linux 대상 동일 코드로 구동 될 수 있도록
아키텍처
설계 및 구현 - CI(GitHub action) 에서 Unit Test, Linter 등을 비롯한 10개 이상의 checker 자동 실행될 수 있도록 구성
- Python C++ LLVM
- UTopia github
- Utopia 를 통해 Linux system library & Android library 에서 20개 이상의 잠재 취약점 발견 및
Graph DB
를 활용한 취약점 연관 분석 기능 개발- crawler 를 활용해 주기적으로 웹 상의 모든 취약점 관련 데이터(CVE, CWE, Wikipedia, News, ETC) 수집 (
100TB
이상) 대용량
저장, 쿼리 속도 검증을 위해 Neo4J 등 Graph DB 검토Dgraph
를 활용해 여러 노드로 수집 된 모든 데이터분산
저장 및 관계 그래프 구축- 구축 된 취약점 그래프를 활용해 연관 취약점 검색 및 분석 기능 개발
- Python Neo4J Dgraph
- crawler 를 활용해 주기적으로 웹 상의 모든 취약점 관련 데이터(CVE, CWE, Wikipedia, News, ETC) 수집 (
- Threat Intelligence 기술에 활용하기 위한 악성 URL & IP
crawler
개발- 일일 약
100k page 를 수집
했으며, 그 중 악성 URL & IP 수백개 검출 - 다양한 사이트에서 동작할 수 있는 crawler 및 parser interface 설계
Celery
,Kafka
를 이용해 장애없이 50 개 이상의 사이트를 매 시간 자동으로 수집해주는 스케쥴러 설계 및 구현- crawling 속도 문제를 해결하기 위해 VPN API 활용
- Python Kafka VPN API MongoDB
- 일일 약
Machine Learning
기반 Anti-virus engine 개발xgboost
를 이용한 virus 검출 모델 구현- 다양한 모델 별 정확도 비교실험
- Python Scikit-learn TensorFlow Pandas
TrustZone
을 활용한 Tizen 커널 무결성 보호 기술인 SIM 연구 및 개발- 삼성(Tizen) TV 에 SIM 기술을 ‘15년부터 현재까지 탑재
- Linux kernel 의 page table 및 memory 동작 방식 연구
- Linux kernel의 메모리 보호 기능을 담당하는
TrustZone app
구현 - Snooper 라는 메모리 보호 HW 를 제어 할 수 있는
device driver
구현 - C(Device Driver) C++ TrustWare Tizen
Samsung Software Membership
인턴 개발자
2011.01 - 2014.02
다양한 미니 프로젝트를 통해 여러 분야에 대한 전반적인 지식 습득. 특히 web 경험 다수 보유.
Dokan
을 이용해 클라우드 스토리지를 통합한 통합형 스토리 플랫폼 개발- 공개SW 개발자대회(2013) 은상, OSS - [SCloud]
- Spring 을 기반으로 web 기반
file system API
구축 - 4개의 cloud services(GoogleDrive, Dropbox, SkyDrive, UCloud) API 연동
- Java Spring MongoDB
- 공공
Open API
를 활용한 텃밭 SNS 서비스 개발- 스마트 & 오픈거버먼트(2012) 우수상, 행정안전부 - [텃밭누리]
- PHP CodeIgniter MySQL
- Android OS 패킷 분석툴 개발
- Java C Android
Lucene
을 활용한 관련주제 스크랩 서비스 개발- Java Lucene MySQL
육군 (1군 사령부)
SW 개발병
2008.12 - 2010.10
1군 사령부의 인트라넷 및 인터넷 구조 파악 및 서버 관리 경험 보유
- 지휘통제 체계과 오피스 업무 담당
- 인트라넷 사이트 관리
엔타즈
백엔드 개발자
2007.12 - 2008.10
CMS 와 WAP 서비스 구조 이해. Mobile WAP 서비스를 실제로 운영한 경험 보유.
- 피처폰 만화브라우저 서비스 개발
- KTF 보안검수 담당
- ASP HTML MySQL
- WAP 브라우저에서 동작하는 일본게임 소개 페이지 및 다운로드 마켓 서버 개발 담당
- ASP HTML MySQL
Skills
Security
Fuzzing LLVM CVE CWE Threat Intelligence Linux kernel ARM TrustZone
Programming Language
Python C C++ Typescript Javascript PHP
Testing Framework
PyTest unittest GTest Jest JUnit
Web Framework
Django Flask Express React angular.js CodeIgniter
Database
MySQL MongoDB Dgraph Kafka
Infra
Docker Docker Compose CircleCI Github action AWS
Blockchain
bridge staking ethers.js web3.js Solidity Truffle
Projects
Extation
개인
2022.06 - 2022.11
Bridge 와 Staking 을 지원하는 De-Fi 서비스
Bridge 와 Staking 을 지원하는 De-Fi 서비스를 개발했습니다. De-Fi 서비스이므로 개인지갑 연결방법인 Metamask, Wallet Connect 두 가지 방식을 지원합니다. Bridge 는 Ethereum, Binance Smart Chain, Klaytn 세 네트워간 상호 Bridging 이 가능하며, Staking 은 Klaytn 대상으로 구현했습니다.
현재는 2개의 지갑과 3개의 메인넷을 지원하지만 추후에 쉽게 추가할 수 있는 아키텍처를 구현하는데 중점을 뒀습니다.
- Implementation
- fontend
- Metamask, Wallet Connect 연동
- ethers.js 활용한 Contract 통신
- Bridge, Staking, Portfolio 페이지
- 반응형 사이트
- Typescript, React
- contract
- lock & mint 방식의 bridge contract
- single staking pools 지원하는 staking contract
- Solidity
- backend
- Upbit, Bithumb API 활용한 실시간 가격정보 연동
- bridge contract 간 가격 일치 확인 및 오류검증 scheduler
- Typescript, Express, AWS Lambda MySQL
- infra
- Github CI
- AWS S3
- fontend
- Contribution
- fontend 전체
- contract 일부
- infra 배포 스크립트
- backend scheduler
Utopia
Samsung Research
2020.01 - 2022.05
Fuzz Driver를 자동으로 만들어주는 취약점 탐지 자동화 기술
Utopia는 fuzzing 기술을 활용해 취약점을 탐지할 때 Fuzz Driver를 수동으로 만들어야 하는 한계를 해결하기 위해 시작한 프로젝트입니다. Security Expert 가 아니면 library의 어느 지점을 fuzzing 해야할지 알 수 없고, function과 library 별로 모두 수동으로 만들어야 하기 때문에 효율이 떨어집니다. Utopia는 unit test를 기반으로 static analysis 를 통해 코드 문법을 이해하고, 취약점이 탐지 될 가능성 있는 함수를 찾아 자동으로 Fuzz Driver를 생성한 뒤 바이너리를 빌드해 줍니다.
이를 통해 100개 이상의 버그를 찾았으며, 20 개 이상의 잠재 취약점을 찾고 CVE를 등록했습니다. 또한 IEEE S&P(2023) 학회에 논문(UTOPIA: Automatic Fuzz Driver Generation using Unit Tests)을 등재했습니다.
10명의 팀원과 함께한 프로젝트이며, 팀의 Scum Master였고 Android library 파트를 tech leading 했습니다.
- Implementation
- static analysis
- target library analysis
- target unit test analysis
- unit test syntax parser (TCT, GTEST)
- C++, LLVM
- fuzzer build
- unit test modification
- fuzz driver generation
- fuzzer builder
- Python, LLVM
- fuzzer execution
- fuzzer execution scheduling
- emulator managing
- vulnerability finding
- Python, Emulator
- static analysis
- Target
- linux libraries
- android libraries
- tizen libraries
- Contribution
- static analysis 파트 중 unit test syntax parser
- android target 대상 fuzzer build 전체
- android target 대상 fuzzer execution 전체
- android target 대상 tech leading
Education
광운대학교
컴퓨터 소프트웨어 학과
2006.03 - 2014.02
- 임베디드 SW 세부전공
- 공학인증 이수
- 학술 동아리(K-NET) 소속
Mentorings
누비랩 멘토링 2차 / 멘토
2020.10, 경기창조경제혁신센터
frontend web service 개발에 대한 멘토링
누비랩 멘토링 1차 / 멘토
2020.09, 경기창조경제혁신센터
개발문화 및 협업 툴 사용 원칙에 대한 멘토링
실전창업교육 3단계 선발 / 심사위원
2020.08, 경기창조경제혁신센터
실전창업교육 3단계 대상 선발을 위한 심사
실전창업교육 온라인 멘토링 / 멘토
2020.07, 경기창조경제혁신센터
창업관련 기획 & 개발 궁금증 멘토링
실전창업교육 멘토링 / 멘토
2020.05, 경기창조경제혁신센터
창업관련 기획 & 개발 궁금증 멘토링
청년혁신가 인규베이팅 멘토링 / 멘토
2018.10, 경기창조경제혁신센터
개발 및 보안 분야 궁금증 멘토링
청년혁신가 인규베이팅 멘토링 / 멘토
2017.10, 경기창조경제혁신센터
창업관련 기획 & 개발 궁금증 멘토링
스타트업 리쿠르팅데이 / 멘토
2017.08, 경기창조경제혁신센터
이력서 컨설팅 진행
이화여자대학교 스마트창작터 / 멘토
2017.01, 이화여자대학교
스타트업 소프트랜딩을 위한 방법 멘토링