Software Security1
Bug vs Vulnerability Bug: 소프트웨어에서의 모든 결점을 통칭 Vulnerability: 공격자에게 사용될 수 있는 bug 웹 취약점 종류: CSS, CSRF CSRF(사이트 간 요청 위조, Cross Site Request Forgery): 불특정 다수를 대상으로 로그인 된 사용자가 공격자가 의도한 행위를 하게 된다. 조건 2가지: 위조 요청을 전송하는 서비스에 로그인 된 상태 + 피싱 사이트에 접속 페이스북에 로그인 돼있고(항시 로그인 상태라면) 피싱 사이트의 어떤 버튼이 하는 행위가 페이스북에서 특정한 글을 하는 행위로 연결돼있다면 그 버튼을 누르는 순간 그 계정으로 그 행위가 이루어진다. 방어 방법: Referrer 검증 Security Token 사용(CSRF Token) Referrer 검증: Back-end에서 request의 referrer을 확인하여 domain과 일치하는 지 확인한다. Security Token: 사용자의 세션에 난수 값을 저장하고 back-end에서 요청을 받을 때 마다 세션 토큰 값과 요청의 토큰 값이 같은 지 검증한다. --------------------------------------------------------------------------- Shellcode: 기계어 명령들. 원하는 동작을 하도록 한다. Platform dependent하다. Buffer overflow: 데이터를 검사하는 과정에서 그 데이터를 저장할 메모리 위치(크기)가 유효한지를 검사하지 않아 발생한다. 데이터가 담긴 위치 근처에 있는 값이 손상되고 프로그램에 영향을 미칠 수 있다. 스택 영역의 BOF로는 RET값을 변조하는 공격이 있다. BOF가 일어나는 배열에서 RET값이 저장되는 공간까지의 거리를 구해서 RET값을 변조한다. Use After Free 힙은 런타임 시 할당되는 영역인데 바이너리가 실행되고...