λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

자격증/μ •λ³΄μ²˜λ¦¬κΈ°μ‚¬

μ •μ²˜κΈ° ν•„κΈ° μš”μ•½ - μ†Œν”„νŠΈμ›¨μ–΄ 개발 λ³΄μ•ˆ ꡬ좕

Secure SDLC

λ³΄μ•ˆμƒ μ•ˆμ „ν•œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό κ°œλ°œν•˜κΈ° μœ„ν•΄ SDLC (μ†Œν”„νŠΈμ›¨μ–΄ 개발 생λͺ…μ£ΌκΈ°)에 λ³΄μ•ˆ κ°•ν™”λ₯Ό μœ„ν•œ ν”„λ‘œμ„ΈμŠ€λ₯Ό ν¬ν•¨ν•œ 것

μœ μ§€ 보수 λ‹¨κ³„μ—μ„œ λ³΄μ•ˆ 이슈λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ†Œλͺ¨λ˜λŠ” λΉ„μš©μ„ μ΅œμ†Œν™”ν•˜κΈ° μœ„ν•¨

Secure Software μ‚¬μ˜ CLASP, Microsoftμ‚¬μ˜ SDL λ“±

 

μš”κ΅¬μ‚¬ν•­ 뢄석 λ‹¨κ³„μ—μ„œμ˜ λ³΄μ•ˆ ν™œλ™

λ³΄μ•ˆ ν•­λͺ©μ— ν•΄λ‹Ήν•˜λŠ” μš”κ΅¬μ‚¬ν•­μ„ μ‹λ³„ν•˜λŠ” μž‘μ—… μˆ˜ν–‰

λ³΄μ•ˆ μˆ˜μ€€μ„ λ³΄μ•ˆ μš”μ†Œ λ³„λ‘œ 등급을 κ΅¬λΆ„ν•˜μ—¬ λΆ„λ₯˜

λ³΄μ•ˆ μš”μ†Œ : κΈ°λ°€μ„±, 무결성, κ°€μš©μ„±, 인증, 뢀인 λ°©μ§€

 

섀계 λ‹¨κ³„μ—μ„œμ˜ λ³΄μ•ˆ ν™œλ™

μ‹λ³„λœ μš”κ΅¬μ‚¬ν•­μ„ μ†Œν”„νŠΈμ›¨μ–΄ μ„€κ³„μ„œμ— λ°˜μ˜ν•˜κ³  λ³΄μ•ˆ μ„€κ³„μ„œ μž‘μ„±

λ„€νŠΈμ›Œν¬, μ„œλ²„, 물리적 λ³΄μ•ˆ, 개발 ν”„λ‘œκ·Έλž¨ λ“± ν™˜κ²½μ— λŒ€ν•œ λ³΄μ•ˆ ν†΅μ œ 기쀀을 μˆ˜λ¦½ν•˜μ—¬ 섀계에 반영

 

κ΅¬ν˜„ λ‹¨κ³„μ—μ„œμ˜ λ³΄μ•ˆ ν™œλ™

ν‘œμ€€ μ½”λ”© μ •μ˜μ„œ 및 μ†Œν”„νŠΈμ›¨μ–΄ 개발 λ³΄μ•ˆ κ°€μ΄λ“œλ₯Ό μ€€μˆ˜ν•˜μ—¬ μ„€κ³„μ„œμ— 따라 λ³΄μ•ˆ μš”κ΅¬μ‚¬ν•­ κ΅¬ν˜„

λ‹¨μœ„ ν…ŒμŠ€νŠΈ μ‹€ν–‰

μ‹œνμ–΄ μ½”λ”© : κ΅¬ν˜„ λ‹¨κ³„μ—μ„œ λ°œμƒν•  수 μžˆλŠ” λ³΄μ•ˆ 취약점을 μ΅œμ†Œν™”ν•˜κΈ° μœ„ν•΄ λ³΄μ•ˆ μš”μ†Œλ“€μ„ κ³ λ €ν•˜μ—¬ μ½”λ”©

 

ν…ŒμŠ€νŠΈ λ‹¨κ³„μ—μ„œμ˜ λ³΄μ•ˆ ν™œλ™

μž‘μ„±λœ λ³΄μ•ˆ μ„€κ³„μ„œλ₯Ό λ°”νƒ•μœΌλ‘œ λ³΄μ•ˆ 사항듀이 μ •ν™•νžˆ 반영되고 λ™μž‘λ˜λŠ”μ§€ 점검

 

μœ μ§€λ³΄μˆ˜ λ‹¨κ³„μ—μ„œμ˜ λ³΄μ•ˆν™œλ™

이전 과정을 λͺ¨λ‘ μˆ˜ν–‰ν–ˆμŒμ—λ„ λ°œμƒν•  수 μžˆλŠ” λ³΄μ•ˆ 사고듀을 μ‹λ³„ν•˜κ³  λ°œμƒ μ‹œ ν•΄κ²°ν•˜κ³  λ³΄μ•ˆ 패치 μ‹€μ‹œ

 

 

μ„Έμ…˜ ν†΅μ œ

μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈμ˜ 연결인 μ„Έμ…˜ κ°„μ˜ μ—°κ²°λ‘œ 인해 λ°œμƒν•˜λŠ” 정보λ₯Ό 관리

μš”κ΅¬μ‚¬ν•­ 뢄석 및 섀계 λ‹¨κ³„μ—μ„œ 진단해야 ν•˜λŠ” λ³΄μ•ˆ 점검 λ‚΄μš©

 

λΆˆμΆ©λΆ„ν•œ μ„Έμ…˜ 관리

μΌμ •ν•œ κ·œμΉ™μ΄ μ‘΄μž¬ν•˜λŠ” μ„Έμ…˜ ID둜 μ ‘κ·Όν•  수 있음

 

잘λͺ»λœ μ„Έμ…˜μ— μ˜ν•œ 정보 λ…ΈμΆœ

닀쀑 μŠ€λ ˆλ“œ ν™˜κ²½μ—μ„œ 멀버 λ³€μˆ˜μ— 정보λ₯Ό μ €μž₯ν•  λ•Œ λ°œμƒ

λ³€μˆ˜μ˜ λ²”μœ„λ₯Ό μ œν•œν•˜λŠ” λ°©λ²•μœΌλ‘œ λ°©μ§€ κ°€λŠ₯

싱글톀 νŒ¨ν„΄μ—μ„œ λ°œμƒν•˜λŠ” 레이슀 μ»¨λ””μ…˜μœΌλ‘œ 인해 동기화 였λ₯˜κ°€ λ°œν–‰ν•˜κ±°λ‚˜ 멀버 λ³€μˆ˜μ˜ 정보가 λ…ΈμΆœλ  수 있음

레이슀 μ»¨λ””μ…˜ : 두 개 μ΄μƒμ˜ ν”„λ‘œμ„ΈμŠ€κ°€ 곡용 μžμ›μ„ νšλ“ν•˜κΈ° μœ„ν•΄ κ²½μŸν•˜κ³  μžˆλŠ” μƒνƒœ

 

μ„Έμ…˜ 섀계 μ‹œ 고렀사항

λ‘œκ·Έμ•„μ›ƒ μš”μ²­ μ‹œ ν• λ‹Ήλœ μ„Έμ…˜μ΄ μ™„μ „νžˆ μ œκ±°λ˜λ„λ‘ 함

이전 μ„Έμ…˜μ΄ μ’…λ£Œλ˜μ§€ μ•ŠμœΌλ©΄ μƒˆλ‘œμš΄ μ„Έμ…˜μ΄ μƒμ„±λ˜μ§€ λͺ»ν•˜λ„둝 함

 

 

μž…λ ₯ 데이터 검증 및 ν‘œν˜„

μž…λ ₯ λ°μ΄ν„°λ‘œ 인해 λ°œμƒν•˜λŠ” λ¬Έμ œλ“€μ„ μ˜ˆλ°©ν•˜κΈ° μœ„ν•΄ κ΅¬ν˜„ λ‹¨κ³„μ—μ„œ 검증해야 ν•˜λŠ” λ³΄μ•ˆ 점검 ν•­λͺ©

개발 λ‹¨κ³„μ—μ„œ μœ νš¨μ„± 검증 체계λ₯Ό κ°–μΆ”κ³  κ²€μ¦λ˜μ§€ μ•Šμ€ 데이터가 μž…λ ₯될 μ‹œ μ²˜λ¦¬ν•  수 μžˆλ„λ‘ κ΅¬ν˜„ν•΄μ•Ό 함

μΌκ΄€λœ 언어셋을 μ‚¬μš©ν•˜μ—¬ μ½”λ”©

 

μž…λ ₯ 데이터 검증 및 ν‘œν˜„μ˜ λ³΄μ•ˆ 약점

 

λ³΄μ•ˆ κΈ°λŠ₯

μ½”λ”©ν•˜λŠ” κΈ°λŠ₯인 인증, μ ‘κ·Όμ œμ–΄, κΈ°λ°€μ„±, μ•”ν˜Έν™”λ“€μ„ μ˜¬λ°”λ₯΄κ²Œ κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ κ΅¬ν˜„ λ‹¨κ³„μ—μ„œμ˜ λ³΄μ•ˆ 점검 ν•­λͺ©

 

λ³΄μ•ˆ κΈ°λŠ₯의 λ³΄μ•ˆ 약점

 

μ‹œκ°„ 및 μƒνƒœ

λ™μ‹œ μˆ˜ν–‰μ„ μ§€μ›ν•˜λŠ” 병렬 μ‹œμŠ€ν…œμ΄λ‚˜ λ‹€μˆ˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ λ™μž‘ν•˜λŠ” ν™˜κ²½μ—μ„œ μ‹œκ°„κ³Ό μ‹€ν–‰ μƒνƒœλ₯Ό κ΄€λ¦¬ν•˜μ—¬ μ›ν™œν•˜κ²Œ λ™μž‘λ˜λ„λ‘ ν•˜κΈ° μœ„ν•œ λ³΄μ•ˆ 검증 ν•­λͺ©

 

TOCTOU 경쟁 쑰건

검사 μ‹œμ κ³Ό μ‚¬μš© μ‹œμ μ„ κ³ λ €ν•˜μ§€ μ•Šκ³  λ°œμƒν•˜λŠ” λ³΄μ•ˆ 약점

 

μ’…λ£Œλ˜μ§€ μ•Šμ€ 반볡문 λ˜λŠ” μž¬κ·€ ν•¨μˆ˜

μ‘°κ±΄μ΄λ‚˜ 논리 ꡬ쑰λ₯Ό 잘λͺ» κ΅¬μ„±ν•˜μ—¬ μ’…λ£Œν•  수 μ—†κ²Œ λ˜λŠ” 경우 μ‹œμŠ€ν…œ μžμ›μ„ λŠμž„μ—†μ΄ μ‚¬μš©ν•˜μ—¬ μžμ›κ³ κ°ˆλ‘œ μΈν•œ μ„œλΉ„μŠ€ λ˜λŠ” μ‹œμŠ€ν…œ μž₯μ•  λ°œμƒ

 

 

μ—λŸ¬ 처리의 κ°œμš”

μ†Œν”„νŠΈμ›¨μ–΄ μ‹€ν–‰ 쀑 λ°œμƒν•  수 μžˆλŠ” 였λ₯˜λ“€μ„ 사전에 μ •μ˜ν•˜μ—¬ 였λ₯˜λ‘œ 인해 λ°œμƒν•  수 μžˆλŠ” λ¬Έμ œλ“€μ„ μ˜ˆλ°©ν•˜κΈ° μœ„ν•œ λ³΄μ•ˆ 점검 ν•­λͺ©

μ˜ˆμ™Έμ²˜λ¦¬ ꡬ문을 톡해 였λ₯˜μ— λŒ€ν•œ 사항 μ •μ˜

 

였λ₯˜ λ©”μ‹œμ§€λ₯Ό ν†΅ν•œ 정보 λ…ΈμΆœ

였λ₯˜ λ°œμƒμœΌλ‘œ μ‹€ν–‰ κ΄€κ²½, μ‚¬μš©μž 정보, 디버깅 정보 λ“± μ€‘μš” 정보λ₯Ό μ†Œν”„νŠΈμ›¨μ–΄κ°€ λ©”μ‹œμ§€λ‘œ 외뢀에 λ…ΈμΆœν•˜λŠ” λ³΄μ•ˆ 약점

였λ₯˜ λ°œμƒ μ‹œ μ΅œλŒ€ν•œ λ‚΄λΆ€μ—μ„œ μ²˜λ¦¬ν•˜κ±°λ‚˜ λ©”μ‹œμ§€λ₯Ό μ΅œμ†Œν•œμ˜ λ‚΄μš©μœΌλ‘œ 좜λ ₯ν•˜μ—¬ 정보 λ…ΈμΆœμ„ λ°©μ§€ν•΄μ•Ό 함

 

였λ₯˜ 상황 λŒ€μ‘ λΆ€μž¬

μ†Œν”„νŠΈμ›¨μ–΄μ˜ 였λ₯˜μ— λŒ€ν•œ μ—λŸ¬ 처리λ₯Ό ν•˜μ§€ μ•Šμ•˜κ±°λ‚˜ λ―ΈλΉ„λ‘œ 인해 λ°œμƒν•˜λŠ” λ³΄μ•ˆ 약점

 

λΆ€μ μ ˆν•œ μ˜ˆμ™Έμ²˜λ¦¬

ν•¨μˆ˜μ˜ λ°˜ν™˜ κ°’ λ˜λŠ” 였λ₯˜λ“€μ„ μ„ΈλΆ„ν™”ν•˜μ—¬ μ²˜λ¦¬ν•˜μ§€ μ•Šκ³  κ΄‘λ²”μœ„ν•˜κ²Œ λ¬Άμ–΄μ„œ ν•œ λ²ˆμ— μ²˜λ¦¬ν•˜κ±°λ‚˜ λˆ„λ½λœ μ˜ˆμ™Έκ°€ μ‘΄μž¬ν•  λ•Œ λ°œν–‰ν•˜λŠ” λ³΄μ•ˆ 약점

 

 

μ½”λ“œ 였λ₯˜

μ†Œν”„νŠΈμ›¨μ–΄ κ΅¬ν˜„ λ‹¨κ³„μ—μ„œ μ½”λ”˜ 쀑 μ‹€μˆ˜ν•˜κΈ° μ‰¬μš΄ ν˜• λ³€ν™˜, μžμ› λ°˜ν™˜ λ“± 였λ₯˜λ₯Ό μ˜ˆλ°©ν•˜κΈ° μœ„ν•œ λ³΄μ•ˆ 점검 ν•­λͺ©

 

널 포인터 μ—­μ°Έμ‘°

널 포인터가 κ°€λ¦¬ν‚€λŠ” λ©”λͺ¨λ¦¬μ— μ–΄λ– ν•œ 값을 μ €μž₯ν•  λ•Œ λ°œμƒν•˜λŠ” λ³΄μ•ˆ 약점

였λ₯˜λ‘œ 인해 λ°˜ν™˜λ˜λŠ” 널값을 ν¬μΈν„°λ‘œ μ°Έμ‘°ν•˜λŠ” 경우 λ°œμƒ

 

λΆ€μ μ ˆν•œ μžμ› ν•΄μ œ

μžμ›μ„ λ°˜ν™˜ν•˜λŠ” μ½”λ“œλ₯Ό λˆ„λ½ν•˜κ±°λ‚˜ ν”„λ‘œκ·Έλž¨ 였λ₯˜λ‘œ ν• λ‹Ήλœ μžμ›μ„ λ°˜ν™˜ν•˜μ§€ λͺ»ν–ˆμ„ λ•Œ λ°œμƒν•˜λŠ” λ³΄μ•ˆ 약점

μœ ν•œν•œ μ‹œμŠ€ν…œ μžμ›μ΄ 계속 μ μœ ν•˜κ³  있으면 μžμ› 뢀쑱이 λ°œμƒ

 

ν•΄μ œλœ μžμ› μ‚¬μš©

이미 λ°˜ν™˜λœ λ©”λͺ¨λ¦¬λ₯Ό μ°Έμ‘°ν•˜λŠ” 경우 λ°œμƒν•˜λŠ” λ³΄μ•ˆ 약점

λ°˜ν™˜λœ λ©”λͺ¨λ¦¬λ₯Ό μ°Έμ‘°ν•˜λŠ” 경우 μ˜ˆμƒν•˜μ§€ λͺ»ν•œ κ°’ λ˜λŠ” μ½”λ“œλ₯Ό μˆ˜ν–‰ν•˜κ²Œ λ˜μ–΄ μ˜λ„ν•˜μ§€ μ•Šμ€ κ²°κ³Όκ°€ λ°œμƒλ¨

 

μ΄ˆκΈ°ν™”λ˜μ§€ μ•Šμ€ λ³€μˆ˜ μ‚¬μš©

λ³€μˆ˜ μ„ μ–Έ ν›„ 값이 λΆ€μ—¬λ˜μ§€ μ•Šμ€ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  λ•Œ λ°œμƒν•˜λŠ” λ³΄μ•ˆ 약점

 

 

μΊ‘μŠν™”

정보 은닉이 ν•„μš”ν•œ μ€‘μš”ν•œ 데이터와 κΈ°λŠ₯을 λΆˆμΆ©λΆ„ν•˜κ²Œ μΊ‘μŠν™”ν•˜κ±°λ‚˜ 잘λͺ» μ‚¬μš©ν•¨μœΌλ‘œμ¨ λ°œμƒν•  수 μžˆλŠ” 문제λ₯Ό μ˜ˆλ°©ν•˜κΈ° μœ„ν•œ λ³΄μ•ˆ 점검 ν•­λͺ©

 

μ œκ±°λ˜μ§€ μ•Šκ³  남은 디버그 μ½”λ“œ

개발 쀑에 버그 μˆ˜μ •μ΄λ‚˜ 결과값을 확인을 μœ„ν•΄ 남겨둔 μ½”λ“œλ“€λ‘œ 인해 λ°œμƒν•˜λŠ” λ³΄μ•ˆ 약점

 

μ‹œμŠ€ν…œ 데이터 정보 λ…ΈμΆœ

μ‹œμŠ€ν…œμ˜ λ‚΄λΆ€ 정보λ₯Ό μ‹œμŠ€ν…œ λ©”μ‹œμ§€ 등을 톡해 μ™ΈλΆ€λ‘œ 좜λ ₯ν•˜λ„λ‘ κ΅¬ν˜„ν–ˆμ„ λ•Œ λ°œμƒν•˜λŠ” λ³΄μ•ˆ 약점

 

Public λ©”μ„œλ“œλ‘œλΆ€ν„° λ°˜ν™˜λœ Priavate λ°°μ—΄

Private 배열을 Public λ©”μ„œλ“œμ—μ„œ λ°˜ν™˜ν•  λ•Œ λ°œμƒν•˜λŠ” λ³΄μ•ˆ 약점

 

Private 배열에 Public 데이터 ν• λ‹Ή

Private 배열에 Public으둜 μ„ μ–Έλœ 데이터 λ˜λŠ” λ©”μ„œλ“œμ˜ νŒŒλΌλ―Έν„°λ₯Ό μ €μž₯ν•  λ•Œ λ°œμƒν•˜λŠ” λ³΄μ•ˆ 약점

 

 

API 였용

μ†Œν”„νŠΈμ›¨μ–΄ κ΅¬ν˜„ λ‹¨κ³„μ—μ„œ APIλ₯Ό 잘λͺ» μ‚¬μš©ν•˜κ±°λ‚˜ λ³΄μ•ˆμ— μ·¨μ•½ν•œ APIλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šλ„λ‘ ν•˜λŠ” λ³΄μ•ˆ 검증 항볡

 

DNS Lookup에 μ˜μ‘΄ν•œ λ³΄μ•ˆ κ²°μ •

도메인λͺ…에 μ˜μ‘΄ν•˜μ—¬ λ³΄μ•ˆ 결정을 λ‚΄λ¦¬λŠ” 경우 λ°œμƒν•˜λŠ” λ³΄μ•ˆ 약점

IP μ£Όμ†Œλ₯Ό 직접 μž…λ ₯ν•˜μ—¬ μ ‘κ·Όν•˜κ²Œ ν•˜μ—¬ λ°©μ§€ κ°€λŠ₯

 

μ·¨μ•½ν•œ API μ‚¬μš©

λ³΄μ•ˆ 문제둜 μ‚¬μš©μ΄ κΈˆμ§€λœ APIλ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ 잘λͺ»λœ λ°©μ‹μœΌλ‘œ APIλ₯Ό μ‚¬μš©ν–ˆμ„ λ•Œ λ°œμƒν•˜λŠ” λ³΄μ•ˆ 약점

 

 

μ•”ν˜Έ μ•Œκ³ λ¦¬μ¦˜

μ€‘μš” 정보λ₯Ό λ³΄ν˜Έν•˜κΈ° μœ„ν•œ 평문을 μ•”ν˜Έν™”λœ λ¬Έμž₯으둜 λ§Œλ“œλŠ” 방법

κ°œμΈν‚€ μ•”ν˜Έν™” 기법

λ™μΌν•œ ν‚€λ‘œ 데이터λ₯Ό μ•”ν˜Έν™”ν•˜κ³  λ³΅ν˜Έν™”ν•¨

λŒ€μΉ­ μ•”ν˜Έ 기법, 단일 ν‚€ μ•”ν˜Έν™” 기법이라고도 함

Stream 기법 : 평문과 λ™μΌν•œ 길이의 μŠ€νŠΈλ¦Όμ„ μƒμ„±ν•˜μ—¬ λΉ„νŠΈλ‹¨μœ„λ‘œ μ•”ν˜Έν™”

Block 기법 : ν•œ 법에 ν•˜λ‚˜μ˜ 데이터 블둝을 μ•”ν˜Έν™”

 

κ³΅κ°œν‚€ μ•”ν˜Έν™” 기법

데이터λ₯Ό μ•”ν˜Έν™”ν•˜λŠ” κ³΅κ°œν‚€λŠ” 데이터 베이슀 μ‚¬μš©μžμ—κ²Œ κ³΅κ°œν•˜κ³  λ³΅ν˜Έν™”ν•˜λŠ” λΉ„λ°€ν‚€λŠ” κ΄€λ¦¬μžμ—κ²Œλ§Œ 곡개

λΉ„λŒ€μΉ­ μ•”ν˜Έν™” 기법이라고도 함

RSA 기법 : κ³΅κ°œν‚€μ™€ λΉ„λ°€ν‚€λŠ” λ©”μ‹œμ§€λ₯Ό μ—΄κ³  μž κ·ΈλŠ” μƒμˆ˜λ₯Ό 의미, μ„œλ‘œμˆ˜ 이용

Diffie-Hellman key exchange : λͺ¨λ“ˆλŸ¬ μ§€μˆ˜ μ—°μ‚° 이용, λΉ„λ°€ν‚€ κ΅ν™˜

 

μ–‘λ°©ν–₯ μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜ μ’…λ₯˜

- SEED : 블둝 ν¬κΈ°λŠ” 128λΉ„νŠΈ, ν‚€μ˜ 길이에 따라 128, 256으둜 λΆ„λ₯˜

- ARIA : 블둝 ν¬κΈ°λŠ” 128λΉ„νŠΈ, ν‚€μ˜ 길이에 따라 128, 192, 256으둜 λΆ„λ₯˜

- DES : 블둝 ν¬κΈ°λŠ” 64λΉ„νŠΈ, ν‚€μ˜ 길이 56λΉ„νŠΈ

- AES : 블둝 ν¬κΈ°λŠ” 128λΉ„νŠΈ, ν‚€μ˜ 길이에 따라 128, 192, 256둜 λΆ„λ₯˜

 

ν•΄μ‹œ Hash

μž„μ˜μ˜ 길이의 μž…λ ₯ λ°μ΄ν„°λ‚˜ λ©”μ‹œμ§€λ₯Ό κ³ μ •λœ 길이의 κ°’μ΄λ‚˜ ν‚€λ‘œ λ³€ν™˜

SHA μ‹œλ¦¬μ¦ˆ, MD5, N-NASH, SNEFRU λ“±

 

 

 

 

 

 

 

λ°˜μ‘ν˜•