Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[19' 최한동] 최종보고서 #92

Open
henrychoi7 opened this issue Oct 18, 2019 · 0 comments

Comments

@henrychoi7
Copy link

@henrychoi7 henrychoi7 commented Oct 18, 2019

Issues & Pull Requests

1. namhyung#883
[Background]
misc/install-deps.sh 스크립트를 이용해서 의존성 패키지를 설치할 수 있는데, Ubuntu (Debian), Fedora, RHEL (CentOS) 계열 운영체제만 지원하고 있었음.

-> [Result]
Arch Linux 운영체제 사용 시 의존성 패키지를 설치할 수 있도록 함 (namhyung#890)

2. namhyung#896
[Background]
uftrace 사용 (use case) 사례로 SpiderMonkey 자바스크립트 엔진을 트레이싱했고, 비록 JS Shell이지만 처음이라 Wiki에 작성해도 되는지 여부 확인.

-> [Result]
Wiki에 작성하기로 결정 후 작성 완료.

3. namhyung#926
[Background]
System에 설치된 uftrace가 아닌 origin/review/python-tracing-v3 브랜치의 uftrace를 따로 빌드해서 파이썬 파일을 트레이싱했으나 uftrace의 옵션 중 -L 옵션을 써야 라이브러리를 정상적으로 찾아서 동작할 수 있었음. 만약에 해당 옵션을 사용하지 않으면 cannot found libmcount.so 에러 메시지를 출력하고, 프로그램을 종료함. 하지만, uftrace를 다른 언어에 쓰고 싶을 때 사용자 (user) 입장에서 libmcount 경로 탐색 순서 (./libmcount/libmcount.so -> ./libmcount.so -> system)와 사용되는 함수들을 분석하지 않으면 에러의 원인을 찾기 쉽지 않았음.

-> [Result]
uftrace.c 파일 내 main 함수의 opts 구조체 변수로 lib_path 값을 추가하고, cmds/record.c 파일 내 get_libmcount_path 함수의 NULL 반환을 수정하려고 시도했음. 하지만 아직 파이썬 트레이싱이 개발 단계였고, 개발이 끝나면 사용자들이 -L 옵션을 굳이 사용할 필요가 없다고 판단함. -L 옵션은 단순히 디버깅/테스트를 용이하게 하기 위함.

4. namhyung#927
[Background]
doc/uftrace-record.md 파일 내 DYNAMIC TRACING 섹션 550번째 줄에 불필요한 문자 ')'가 있었음.

-> [Result]
해당 문자 제거, 수정 완료.

5. namhyung#953
[Background]
doc 디렉터리 내 파일에 다수의 잘못 쓰여진 문법, 불필요한 철자가 있었음.

-> [Result]
doc/uftrace-dump.md 외 7개 파일 내 문법 오류, 철자 오타 등을 수정 완료.

6. namhyung#975
[Background]
cmds 디렉터리 내 파일에 잘못 쓰여진 주석과 --chrome dump에 대한 주석이 없었음.

-> [Result]
cmds/dump.c 파일 내 잘못 쓰여진 주석을 수정, --chrome 지원에 대한 주석 추가함. cmds/record.c 파일 내 주석 수정 완료.

7. namhyung#976
[Background]
uftrace의 스크립트 실행 옵션 중 -S 옵션을 사용할 때 --record 옵션을 추가하여 실행시킬 수 있는데, doc/uftrace-script.md 파일 내에 설명이 있었으나 해당 명령어 실행 시 usage output에 --record 옵션에 대한 설명이 없었음.

-> [Result]
옵션 수정 및 uftrace-script.md 파일 내 synopsis 수정 완료 (namhyung#1019)

8. namhyung#990
[Background]
libmcount 디렉터리 내 파일에 다수의 잘못 쓰여진 문법, 철자 오타가 있었음.

-> [Result]
libmcount/mcount.c 외 3개 파일 내 문법 오류, 철자 오타 등을 수정 완료.

Wiki

1. SpiderMonkey (문서 추가)

2. OpenCV (문서 추가)

3. Git (문서 추가)

4. Radare2 (문서 추가)

5. GCC (문서 개선)

6. RustPython (문서 개선)

Comments

1. namhyung#931
[Background]
uftrace의 static 빌드를 만드는 방법에 대한 지원 여부 문의

-> [Comment]
code coverage 분석, 단위 성능 테스트를 위한 code instrumentation과 fuzzing 기술에 익숙하다면 AFL (american fuzzy lop)을 사용할 수 있음. AFL은 공유 라이브러리의 동적/정적 분석을 위한 모드가 다양하고, DSO (Dynamic Shared Object)을 지원하기 때문.

2. namhyung#943
[Background]
uftrace의 스크립트 실행 테스트 (strings.py) 도중 프로그램이 종료되지 않는 문제 발생

-> [Comment]
Arch Linux 운영체제에서 파이썬 3.7.4로 테스트했을 때 해당 이슈가 발생하지 않음을 보고함 (또한 namhyung#941 에서 발생한 crash 테스트 결과, 마찬가지로 이슈가 발생하지 않았음).

3. namhyung#951
[Background]
uftrace가 fault injection 프레임워크로 사용될 수 있는 아이디어 제안

-> [Comment]
만약에 fault injection 기능이 uftrace에 통합되면 추후 보안 관련 테스팅 및 스크립트 실행에 유용하게 사용될 수 있음. 많은 보안 전문가들이 취약점 분석을 위해 외부 프로그램을 사용하는데, 한 곳으로 모여있는 환경이 아니기 때문에 여러 도구를 사용해야 하는 불편함이 존재함. 해당 기능이 구현된다면, 특정 코드에 보안 취약점을 찾는데 유용한 데이터를 뽑을 수 있을 것임. 또한, C언어로 작성된 fault injection 라이브러리인 libfiu를 추후 개발에 참고할 수 있다고 제안함.

Reviews

1. namhyung#986
[Background]
README.md 파일 한글 번역 작업 진행

-> [Review]
총 3번의 리뷰, 44개의 리뷰 코멘트를 요청으로 남겼음.

Background

  • 발대식 (9/7) 및 오프라인 미팅 2차 (10/5), 3차 (10/19) 참석
    프로젝트 공부 및 uftrace 동작 원리, 기여, git에 대한 질의응답 진행
  • #87, #89, #90
    프로젝트 기초 공부를 진행함. 슬라이드 및 영상 복습, 튜토리얼을 통한 예제 분석
  • SOSCON 2019 DAY 1 (10/16), DAY 2 (10/17) 참석
    오픈소스 기여 시작을 위한 준비 과정, 방법 공부 (FIXME/TODO 검색하기, GoodFirstBug 태그 등)
    Micro-architecture attack & mitigations 공부 (Spectre Variant1, Variant2, Meltdown, L1TF)
    User space, Netfilter, TC, XDP, XDP offload의 패킷 처리 방식과 비교, BPF 공부 (호연님 발표)

Future plans

  • 타 운영체제 (macOS) 기반 동작 구현에 기여 활동
  • Python tracing support 기여 활동
  • 메모리 관련 이슈 분석 후 기여 활동
  • 코드 가독성 개선 (comment) 기여 활동
  • 문서화, Wiki 수정에 기여 활동
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
1 participant
You can’t perform that action at this time.