PLOD

[crypto] Software Security 본문

computer science/Cryptography

[crypto] Software Security

훌룽이 2022. 12. 8. 14:26

software security는 software의 어떻게 안전하게 만들것인가에 대해 초점을 맞춘다.

1. HeartBleed

web에서 사용자가 서버와 통신을 할 때 주로 openSSL ,TLS를 사용하는데 사용자가 웹사이트에 접속할 때 서버로부터 정보를 암호화해서 주고 받으며 통신을 하는데 이 과정에서 서버와 사용자가 같은 데이터를 주고받지 않는 소프트웨어적인 문제점(OPENSSL bug로 가능해진 공격이다.)

 

2. Low-level vulnerability(C, C++) <-> High- level (java, python)

C와 C++ 는 system software language(ex . servers , OS kernels, embedded systems) 이기 때문에 attack 에 굉장히 민감하다.  Low-level-vulnerability를 aim 한 대표적인 attack은 buffer-overflow가 있다.

 

3. Buffer - overflow

stack 영역에서 일어나거나(stack overflow), heap(heap overflow)에서 일어날 수 있다. integer overflow나 over-writing이나 over-reading 하는 경우에도 발생 할수 있다.  buffer-overflow 가 일어나게 되면 기본적으로crash(ex.bluescreen)이 일어나고, 개인정보를 훔친다거나 중요한 정보들을 훼손하고 attacker가 원하는 대로 code를 실행할 수 있게 된다. 

 

buffer - overflow를 막기 위해서는 Memory - safety를 하는 것이 중용하다. software security에는 주로 C/C++ 언어가 사용되는데 대표적으로 Stack-canaries , DEP, ASLR, SoftBound, CFI 기법들이 있다.

* C 에서 scanf("%s") 함수는 절때 사용하지 말것!(buffer-overflow 유발)

 

4. SQL injection

www(World Wide Web) 에서 취약점을 노린 attack 이다.

 * 메모리 구조(32bit = 4GB 기준)

1) stack 영역 : local variable (지역 변수) 및 매개 변수 저장, 함수의 호출과 함께 할당, 호출이 끝나면 소멸

2) heap 영역 : 런타임에 크기가 결정됨, 사용자에 의해 동적으로 메모리 할당 및 해제(malloc)

3) data 영역 : 전역 변수   static variable(정적 변수)  저장 , 프로그램 시작과 함께 할당되며 프로그램이 종료되면 소멸

4) Text 영역 :  code 영역이라고도 함 ,실행 할 프로그램의 코드 저장 , 코드 영역에 저장된 명령어를 하나씩 가져가서 처리

 

 

 

 

'computer science > Cryptography' 카테고리의 다른 글

[crypto] secret key cryptography  (0) 2023.07.07
[crypto] Web Security  (0) 2022.12.10
[crypto] SSL/TLS  (0) 2022.12.08
[crypto]Authentication Protocols  (0) 2022.12.07
[crypto] Hash  (0) 2022.12.05
Comments