수업 내용:

 

V8 exploitation:


v8 is a  js engine for speed, open sourced, made by google

 

Ignition(interpreter): 엄청나게 많은 배열/반복문을 실행할 때 최적화를 해줌

 

Turbofan(optimizing compiler): 자기 기준에 맞는 코드를 최적화, 코드로 실행될  값을 예측



v8 build: 

 

why 4 byte => compressed pointer



map(address) / property / element / length

 

오픈소스 분석하는 방법: 

0. 경로 분석

 

map = pointer



구글 개발 툴: turborizer

 

35C3 CTF krautflare

경로(어떻게 작동 하는지) 분석

 

-0(힙 넘버 타입)을 사용함으로써 터보팬의 예측을 벗어나 type confusion을 일으킴

 

-0이 숫자가 아님 -> 모든 유형을 수용할 수 있게 built in(optimization)한다

 

황수민 선배님 블로그

https://katolik-xixon.tistory.com/276 




수업 전 예습


v8:

V8 is the name of the JavaScript engine that powers Google Chrome. It's the thing that takes our JavaScript and executes it while browsing with Chrome. V8 is the JavaScript engine i.e. it parses and executes JavaScript code.

  • 자바스크립트 엔진
  • 자바스크립트 엔진은 자바스크립트 코드를 실행하는 프로그램 또는 인터프리터이다. 자바스크립트 엔진은 전통적인 인터프리터일 수도 있고, 특정한 방식으로 바이트코드로 JIT 컴파일을 할 수 있다. 여러 목적으로 자바스크립트 엔진을 사용하지만, 대체적으로 웹 브라우저에서 사용된다.



type confusion:

type confusion 취약점은 프로그램에서 사용하는 변수나 객체를 선언 혹은 초기화되었을 때와 다른 타입으로 사용할 때 발생하는 취약점이다.

 




POC 2023 Confernece Recap


어떤게 어떻게 좋았고 어떤 내용이 이해가 안됐고

 

QNX - bof 다시 한번 보기

A roadmap to $50,000 at Pwn2Own Vehicle 2024: Dissecting QNX and exploiting its vulnerabilities




네트워킹 1
BFS 부스: 독일인 직설적인 화법 통해 알게된 네트워킹 스킬

나:포스터에 상시채용이라고 써져있네요. 어떤 분야의 해커들을 모집하고 계신가요?

리크루터: ios, 안드로이드쪽을 모집하고 있습니다.

나: 그러면 외국 회사니까 remote work 인가요?

리크루터: 맞습니다. 우리는 독일에서 만들어진 회사지만 아르헨티나, 벨기에, 한국 등 다른 나라에서 일하고 있는 직원들이 많습니다. 이번 한국에서 1,2명 정도의 직원들을 채용하고 싶습니다.
그래서 당신들은 누구이고 우리 회사에 들어올 자격이 있나요?

나: 아! 저희는 고려대학교 세종캠퍼스 인공지능사이버보안학과의 학생들이고 이 친구는 엔키에서 보안 연구원으로 일하고 있습니다. 저는 자격이 없지만 이 친구는 있겠네요.

이 이후로 BFS직원은 흥미를 잃었는지 더 이상의 대화를 이어가지 않았다.

느낀점: 네트워킹을 할 때 주의할 점을 느꼈다. 간단한 소개가 필요하다는 것. 그리고 상대를 알기 위한 질문도 필요하다고 느꼈다. 지금은 아무것도 아닌 상황일라고 느껴질 수도 있지만 회사 생활이나 job-fair 같은 곳에서 정말 필요한 네트워킹 스킬이라고 느껴졌다. 특히 독일인의 직설적인 화법이 깨달음에 도움을 주었다. 또한 실력과 지식의 중요성을 깨달았다. 내가 기본적 지식이 있어야 대화를 이어갈 수 있고 심화적인 지식과 실력이 있어야 상대가 흥미를 느낄 수 있기 때문이다. 행사에서의 네트워킹이나 리쿠르팅을 목적으로 대화를 할 때의 주의점을 깨달았다.


네트워킹 2: 다른 예시(편한 사람)
일본 1년, 한국 라인 지부에서 7년 일한 직원
authentication(인증), 암호화 업무를 하심



Ned Williamson: Fuzzing as Reinforcement Learning

네드: 지금 괜찮아 보이는 기술이 있으면 직접 해보라 왜냐하면 지금 하지 않으면 결국 누군가 쓰고 있을 것이다.

느낀점: 나도 망설이고 있는 공부가 있었는데 미루는 것보다 지금 해보는 것이 큰 도움이 될거 같아 시작했다.

 

좋았던 점:

  • 내가 좋아해서 배웠던 내용과 해킹이 접목됨
  • 동아리에서 퍼징을 맛 봐서 조금이나마 이해에 도움이 됨

 

이해가 안 된 내용:

fuzzing w/ RL - POC 감상평(이해를 위한 단어 정리)

 

Background and Challenges in Vulnerability Research

 

p.6 The Multi-Layered Problem in Vulnerability Research

  • remote code execution: when an attacker accesses a target computing device and makes changes remotely, no matter where the device is located
  • memory corruption vulnerability: 
  • violations by auditing and/or using computational methods:  offering prohibited services (e.g., bookkeeping), obtaining a financial interest from an audit client (e.g., having shares in the audit client's firm), and having a close relationship (familiarity threat) with the audit client

p.8 Complexity and Decidability Constraints

  • w.r.t. //with respect to
  • Turing complete language //튜링 완전이란 어떤 프로그래밍 언어나 추상 기계가 튜링 기계와 동일한 계산 능력을 가진다는 의미이다. 이것은 튜링 기계로 풀 수 있는 문제, 즉 계산적인 문제를 그 프로그래밍 언어나 추상 기계로 풀 수 있다는 의미이다.
  • SAT//satisfiability (often abbreviated SAT) is the problem of determining whether there exists an interpretation that satisfies the formula. //충족 가능성 문제 (Boolean satisfiability problem): 충족 가능성 문제는 어떠한 변수들로 이루어진 논리식이 주어졌을 때, 그 논리식이 참이 되는 변수값이 존재하는지를 찾는 문제이다. 만족성 문제, 만족도 문제, 만족 문제, 불린 충족 가능성 문제라고도 부른다.
  • NP-hard //NP-난해 (NP-hardness): NP-난해, NP-hard는 NP에 속하는 모든 판정 문제를 다항 시간에 다대일 환산할 수 있는 문제들의 집합이다. 다시 말하면, NP-난해는 적어도 모든 NP 문제만큼은 어려운 문제들의 집합이다. NP-난해 집합에 속하는 문제가 NP에도 속하면 NP-완전에 속한다.

p.9

  • provably secure: capable of being demonstrated or proved
  • tractable: easily accessible
  • empirical: 경험적

 

  • p.10 Approximation and Heuristics: The Power of Randomness
  • heuristics: problem-solving methods that are based on practical experience and knowledge

p.12 AFL: Pioneering Work in Smart Fuzzing

  • afl(American fuzzy lop): a free software fuzzer that employs genetic algorithms in order to efficiently increase code coverage of the test cases.
  • Coverage-guided genetic algorithm
  • We provide a reward function (edge hitcounts, comparisons, etc.)
  • Mutate and evolve a corpus that maximizes global coverage reward
  • Explores and learns a suite of inputs

p.13 “Pulling JPEGs Out of Thin Air”

  • JPEG

p.14 AFL’s Approach

  • Heuristic-based policy drives input generation 
  • Reward: Coverage map 
  • State: Global coverage map, as well as a collection of saved inputs with known (data, covered edges)
  • Action: Select a test case at random and apply a mutation, if we have a reward (more coverage than known state) we save the input into our state