일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- nginx
- vuetify
- Clone
- scss
- docker
- security
- Python
- vue.js
- dotenv
- BOJ
- 보안
- AI
- bash
- generic
- loop
- TypeScript
- leetcode
- JavaScript
- condition
- C++
- git
- 앙상블
- property
- C#
- VUE
- type
- webpack
- var
- machine learning
- npm
- Today
- Total
목록Development/Secutiry (9)
ice rabbit programming
(아이패드에 필기가 있었는데, 아이패드가 충전하다가 망가지는 바람에 소실되어, 이후 글은 따로 저장해둔 요약본을 참고합니다.) 이전 글에 이어서 안전하지 않은 코딩 스타일을 이어서 정리한다. 불필요한 Method 지원의 취약점 웹 서버에 불필요한 HTTP 메소드가 허용되어 있을 경우, 악의적인 사용자가 이를 이용해 웹 서버를 변조하거나 시스템 권한을 획득할 수 있다. 모든 메소드를 허용하지 않고, 사용하는 메소드만 허용하는 것이 좋다. 특히, GET을 이용한 조회 외에는 데이터를 추가/변경/삭제할 수 있다. Null 포인터 역참조의 취약점 Null 포인터 역참조는 는 가정을 위반했을 경우 발생한다. 공격자가 의도적으로 Null 포인터 역참조를 실행하면, 그 때 발생하는 예외를 이용하여 공격에 이용될 수 ..
(아이패드에 필기가 있었는데, 아이패드가 충전하다가 망가지는 바람에 소실되어, 이후 글은 따로 저장해둔 요약본을 참고합니다.) TOCTOU의 취약점 및 대책 TOCTOU란, Time of Check, Time of Use의 약자로 체크하는 시점과 사용하는 시점의 데이터 싱크가 맞지 않는 경우를 말한다. 즉, 공유되는 데이터의 체크 시점과 사용 시점의 값이나 상태가 달라 발생하는 취약점이다. 체크되는 시점부터 사용되는 시점까지 동기화하거나 데이터를 공유하지 않도록 처리해야 한다. 세션 간 정보 노출의 취약점 및 대책 동시에 연결되는 여러 세션들 간에, 한 세션의 정보가 다른 세션에게 노출되는 취약점이다. 세션 정보가 공유되지 않도록 각 세션에서 로컬 변수화 처리가 되어야 한다. 부적절한 에러 처리의 취약점..
(아이패드에 필기가 있었는데, 아이패드가 충전하다가 망가지는 바람에 소실되어, 이후 글은 따로 저장해둔 요약본을 참고합니다.) 중요 정보 중요 정보의 기준을 먼저 정해야 한다. 중요 정보는 우선 개인 정보와 같이 법적으로 강제되는 항목들을 반드시 포함해야 하고, 보안등급 분석을 통해 중요 정보를 구분하여 해당 정보의 관리 정책을 수립해야 한다. 네트워크를 통한 중요 정보 노출 - 중요 정보는 서버를 떠나지 않도록 해야 한다. - 부득이하게 전송해야 하는 경우, 반드시 암호화가 필요하다. 중요 정보 암호화 중요 정보를 암호화하기 위해 정책을 수립해두어야 하고, 암호화 구현 시 안전한 키 관리를 해야 한다. 또한 관리되는 데이터에 따라 적절한 암호화 모듈을 적용해야 하고, 각 알고리즘에서 사용되는 암호키의 ..
(아이패드에 필기가 있었는데, 아이패드가 충전하다가 망가지는 바람에 소실되어, 이후 글은 따로 저장해둔 요약본을 참고합니다.) 파라미터 변조의 개념과 취약점 파라미터는 클라이언트에서 서버로 작업을 요청할 때 이라는 것을 정의하기 위해 전달하는 변수 값 이미 정해진 값이거나 입력된 값 서버 측에서 사용자가 전송하는 파라미터 값에 대한 검증이 없으면, 허가되지 않은 작업이 수행될 수 있음 이전 글에서 다루었던 것들을 비롯하여, 실제 코드가 실행될 때 파라미터를 대입하여 실행하게 되는데, 이 때 잘못된 정보를 가진 파라미터로 실행되면 위험할 수 있다. 타입 체크를 하거나, 위험한 것은 정규식으로 걸러내는 등의 조치를 취해야 한다. 특히, 서버와 클라이언트를 같이 개발할 때, 클라이언트(프론트엔드) 단에서 접근..
(아이패드에 필기가 있었는데, 아이패드가 충전하다가 망가지는 바람에 소실되어, 이후 글은 따로 저장해둔 요약본을 참고합니다.) 기본적으로 웹 서비스에는 '인증'이 들어가게 되고, 인증과 권한 관리를 위해 계정 관리가 들어간다. 로그인 프로세스는 암호화되지 않은 페이지에서 수행되지 않도록 해야 한다. 또한, 모든 인증 작업은 SSL 통신으로 이루어져야 하고, 모든 자격 증명은 해쉬(hash) 형태여야 한다. 인증 자체 만큼이나 방어나 관리도 중요한데, 가장 단순하고 많은 공격인 무작위 대입 공격 방지를 위해 로그인 시도 횟수 제한을 두고, 세션 쿠키 최신화 및 폐기 등의 관리 프로세스를 가진다. 탈취 방지도 중요한데, URL에 토큰과 같은 정보를 노출하지 않고, 자격 증명 등을 취약한 수단으로 주고받지 않..
쿠키 쿠키(Cookie)는 HTTP 통신 시에 사용자 정보 유지를 위해 헤더에 붙여 전송하는 정보이다. 즉, 서버에서 필요로하는 클라이언트 정보를 헤더에 붙여서 전달하는 것이다. 세션 관리를 위해서 token을 저장하거나 임시 데이터 관리 등에 사용된다. 중요 정보를 가진 쿠키는 반드시 암호화된 데이터 통신에서만 전달되도록 해야 한다. 세션 쿠키 : 서버를 이용하는 동안 사용자 정보를 유지한다. 자바스크립트에서 액세스할 수 없도록 쿠키의 속성을 설정해서 사용해야 한다. 영구(영속성) 쿠키 : 하드 디스크에 저장되는 쿠키로, 재방문시 사용자 정보를 기억하는 데에 사용된다. 중요 정보를 가지지 않도록 관리해야 한다. 쿠키를 주고 받는 메커니즘은 다음과 같다. 서버->클라이언트 : 쿠키 객체 생성(key:va..
파일을 HTTP로 주고받을 때에는 multipart/form-data의 폼으로 전송하게 되는데, request의 바디는 여러 파트로 나누어져 파라미터와 파일의 내용을 전달하게 된다. 아무래도 업로드가 파일이 서버에 저장되는 것이니 더 주의할 부분이 많다. 정보를 유출하거나 공격하는 파일을 만들어 외부에서 실행하는 것이 파일 업로드 시의 대표적인 공격이다. 파일 업로드 시 주의할 점 사이즈(개수/크기) 제한을 두어야 한다. -> 사이즈 제한을 두지 않으면 대용량의 파일을 올려 DoS 공격을 취할 수 있다. 타입 체크를 실시하여야 한다. 이에 더해 파일의 실행 권한을 부여하지 않는다. -> 웹쉘을 올려 외부에서 실행하여 공격할 수 있다. 외부에서 실행 뿐만 아니라 아예 접근이 불가능하도록, 외부에서 접근이 ..
XSS란, 웹사이트 관리자가 아닌 이가 악성 스크립트를 삽입하여 개인정보를 유출하거나 악성코드를 실행하는 공격 기법이다. 이전 글의 SQL 인젝션과 유사한 공격 기법인데, Javascript 구문을 넣어서 탈취한다는 차이가 있다. SQL 인젝션과 유사하다는 말은, 동일하게 유효성 검사를 통해 필터링해야 한다는 것이다. 더불어 웹사이트에서 동적으로 변하는 속성에 대해 DOM(Document Object Model) 구조 변경 시 검증이 필요하다. XSS는 크게 3가지로 나뉜다. Stored XSS : 서버에 저장하여 공격 Reflective XSS : 동적으로 생성되는 응답 페이지 작성 시 공격(링크를 눌렀을 시 공격) DOM XSS : DOM 구조 변경 시 공격 이러한 공격은 정규식을 이용한 입출력값의 ..