기본 콘텐츠로 건너뛰기

OWSAP Top10



Open Web Application Security Project. 웹 어플리케이션 보안 분야에서 누구나 자유롭게 이용할 수 있는 기사, 방법론, 문서, 도구, 기술들을 발굴하는 온라인 커뮤니티

OWASP Top10 으로 알려져 있는 가장 중요한 10가지의 웹 어플리케이션 보안 결함 순위를 공개


1. Injection 

공격자가 웹 어플리케이션으로 비정상적인 명령어, 쿼리 등을 보내 시스템에 접근할 수 있는 취약점. 공격자는 개발자의 의도와는 다른 접근으로 시스템의 데이터를 변조, 수정, 유출하는 악의적인 행동을 할 수 있다. 대표적으로 SQL Injection 이 있음.

- 웹 어플리케이션 로직에서 데이터를 분리

- 데이터 노출을 제한하는 설정을 구현

- 최소 권한의 원칙


2. Broken Authentication(취약한 인증)

인증 및 세션 관리와 관련된 웹 어플리케이션의 기능이 잘못 구현되어 공격자가 암호, 키 또는 세션 토큰을 위험에 노출시키거나 일시적 또는 영구적으로 다른 사용자의 권한을 획득하여 악용하는 취약점. 웹에서 매우 일반적으로 발견할 수 있으며 여러 유형이 존재

Brute force, 약한 암호화 사용, 세션 ID 를 관리하지 않는 경우

- MFA 적용

- 관리자의 경우 기본 자격 증명을 사용하지 않을 것

- 취약한 암호 검사

- 모든 결과에 동일한 메시지 사용(ID 가 올바르지 않습니다 -> X, ID 혹은 Password 가 올바르지 않습니다 -> O)

- 로그인 실패시 계정을 제한하거나 지연

- 세션 관리


3. Sensitive Data Exposure(민감한 데이터 노출)

개인 식별 정보 호근 신용 정보가 대표적인 민감 데이터. 웹 어플리케이션마다 중요한 민감 데이터를 취급하고 있을 것이며 이를 올바르게 보호하지 않는다면 공격자에게 노출될 수 있음. 민감한 데이터 노출은 저장되어 있는 데이터일 수도 있고 전송중인 데이터일 수도 있음.

데이터의 평문 전송이 그 예이며, 많은 웹 어플리케이션의 암호화되지 않는 평문 데이터들이 공격자에게 노출되어 있음

- 어플리케이션 처리, 저장 또는 전송한 데이터를 분류

- 개인정보보호법, 규제 요구 사항 또는 비즈니스 요구 사항에 따라 민감한 데이터 식별

- 분류에 따라 컨트롤 적용

- 민감한 데이터를 불필요하게 저장하지 않음

- 최신의 강력한 표준 알고리즘, 프로토콜 및 키 사용

- PFS(Perfect Forward Secrecy) 암호, 서버별 암호 우선순위 지정 및 보안 매개변수를 사용하는 TLS 와 같은 프로토콜로 모든 전송 데이터를 암호화

- HTTPS 와 같은 지시문을 사용하여 암호화

- 민감한 데이터가 포함된 응답에 대하여 캐싱을 비활성화


4. XML External Entites(XXE)

취약하게 설정된 XML parser 에 의해 공격자가 XML 문서에서 외부 엔티티를 이용하여 공격자가 의도하는 외부 URL 을 실행시킨 뒤, 서버의 로컬파일 정보 등을 출력하거나 DoS 공격

- JSON 과 같은 단순한 데이터 형식을 사용하고 민감한 데이터의 직렬화를 하지 않는다

- 응용 프로그램 또는 기본 운영체제에서 사용중인 XML 프로세서 및 라이브러리를 패치하거나 업그레이드

- XML 문서, 헤더 또는 노드 내에서 악의적인 데이터를 방지하기 위해 화이트리스트 서버 측 입력 유효성 검사, 필터링 또는 삭제


5. Brocken Access Control(취약한 접근 통제)

인증된 사용자가 수행할 수 있는 작업에 대한 제한이 제대로 적용되어 있지 않다면, 공격자는 이를 악용하여 다른 사용자 계정에 접근하거나 중요 파일 알람, 다른 사용자 데이터 수정, 액세스 권한 변경 등과 같은 악의적인 행위가 가능.

접근 제한이 제대로 되어있지 않은 관리자 페이자는 공격자의 공격 루트가 됨. SSH, FTP 와 같이 서버에 액세스할 수 있는 서비스들도 접근 제한이 제대로 되어 있지 않다면 공격자에게 악용될 수 있음

- 최소 권한 부여

- 필요하지 않은 계정 삭제

- 불필요한 서비스 제거

- 공용 리소스를 제외한 나머지 리소스를 deny

- 웹 서버 디렉토리 목록을 비활성화, 파일 메타 데이터 및 백업 파일이 웹 루트 내에 없는지 확인

- 액세스 제어 실패를 기록, 관리자에게 경고

- 로그아웃 후, JWT 토큰 무효화

- 개발자와 QA 는 기능적 액세스 제어 장치와 통합 테스트를 수행


6. Security Misconfiguration(잘못된 보안 구성)

안전하지 않은 기본 구성, 불완전한 구성 또는 임시 구성, 개방된 클라우드 스토리지, 잘못 구성된 HTTP 헤더 및 민감한 정보가 포함된 자세한 에러 메시지 등으로 인한 취약점. 불필요한 기능(포트, 서비스, 페이지, 계정) 등이 활성화되어 있으면 공격자의 공격 루트가 됨. 또한 자세한 오류 메세지는 Blind SQL Injection 과 같은 공격에 사용될 수 있음


7. Cross-Site Scripting(XSS)

공격자가 피해자의 브라우저에 악의적인 스크립트를 넣는 공격 기법. 공격자는 피해자의 브라우저에 스크립트를 실행하여 사용자 세션 탈취, 웹 사이트 변조, 악의적인 사이트로 이동할 수 있도록 허용할 수 있음.

- XSS 를 자동으로 이스케이프하는 프레임웨크를 사용

- HTML 출력의 컨텍스트를 기반으로 신뢰할 수 없는 HTTP 요청 데이터를 이스케이프

- CSP(Contents Security Policy)를 활성화


8. Insecure Deserialization(안전하지 않은 역직렬화)

- 직렬화 : 객체를 직렬화하여 전송 가능한 형태로 만드는 것

- 역직렬화 : 저장된 파일을 읽거나 전송된 스트림데이터를 읽어 원래 객체의 형태로 복원하는 것

데이터를 역직렬화하는 과정에서 원격코드 실행이나 권한 상승 등의 취약점이 발생할 수 있음

- 디지털 서명 같은 무결성 검사를 구현

- 개체 생성 전에 역직렬화 중에 엄격한 형식 제약 조건을 적용

- 가능한 경우 낮은 권한 환경에서 역직렬화하는 코드를 격리하고 실행

- 역직렬화하는 컨테이너 또는 서버의 트래픽을 제한하고 모니터링


9. Using Components with Known Vulnerabilities(알려진 취약점이 있는 구성요소 사용)

라이브러리, 프레임워크 및 다른 소프트웨어 모듈 같은 컴포넌트는 어플리케이션과 같은 권한으로 실행됨. 취약한 컴포넌트가 악용된 경우, 심각한 데이터 손실을 일으키거나 서버가 장악됨. 알려진 취약점이 있는 구성 요소를 사용하는 어플리케이션과 API는 어플리케이션 보안 수준을 약화시키고 다양한 공격과 영향을 줄 수 있음

- 공식 소스를 통해서 패치를 수행한다.

- 불필요한 종속성을 제거한다.

- 클라이언트와 서버 측에 모든 구성요소의 인벤토리를 보유한다.

- CVE 및 NVD 와 같은 소스를 모니터링하여 구성요소의 취약성을 확인한다.


10. Insufficient Logging & Monitoring(불충분한 로깅 및 모니터링)

불충분한 로깅 및 모니터링, 사고 대응의 비효율적인 통합 또는 누락과 함께 공격자는 시스템을 추가로 공격하고 지속성을 유지하며 더 많은 시스템을 중심으로 공격할 수 있도록 만들고, 데이터를 변조, 추출 또는 파괴할 수 있음


댓글

이 블로그의 인기 게시물

Friends, reunion.

2004년, 대학교에 입학하고 자취를 시작하며 Friends를 처음으로 접했습니다. 정확히 기억나진 않지만, Friens 가 season10을 마지막으로 피날레를 장식한 시기쯔음이었던 것으로 기억합니다. 2004년부터 보기 시작한 Friends 는 자취를 처음 시작하며 우울감에 사로잡혀 있던 저에게 웃음을 주는 활력소가 되었었습니다. 2004년 이후 자취방에서 혼자 밥을 먹는 시간에는 늘 Friends 와 함께했고, 딱히 할일이 없는 시간에도 Friends 는 저와 함께 했습니다. 2004년 이후로 Friends reunion 에 대한 루머는 무성했지만, 2020년까지 reunion되지는 않았습니다. 대망의 2021년, HBO MAX를 통해 reunion이 방송된다는 인스타그램 피드를 보게 되었고, 5월 27일까지 기다리는 시간은 영겁처럼 느껴졌습니다. 5월 27일에 방영된 reunion은 제 생각과 달랐습니다. 기존과 같은 한편의 시트콤 형식의 에피소드로 방송되길 바랬지만 토크쇼 형태로 진행되며- Friends 에피소드 명장명을 재현하고, 제작진의 캐스팅과 에피소드에 대한 비화가 나오고, 전세계 시청자들의 인터뷰가 나오고, BTS, 베컴, 레이디가가 등의 인터뷰 등이 나왔습니다. 처음에는 실망이었습니다. 하지만 왜 이런 방식으로 reunion을 진행했는지가 마지막 정도에 나왔습니다. 정확한 내용은 아니지만, "Friends는 6명의 주인공 모두가 (완벽하게) 행복한 형태로 막을 내렸다. 다시 한편의 에피소드를 만든다면 (누군가의) 행복은 깨져야 할 것이고, 그것은 모두가 원치 않았다." 그리고 앞으로 다시 6명이 방송에서 뭉치는 일은 없을 것이라는 이야기까지. 제작진을 비롯해, 주인공들까지, ''이것이 진짜 Friends의 마지막이다'' 라고 말을 하고 있는 것 같았습니다. 아직도 인스타그램에서 6명의 피드는 reunion에 대한 내용으로 업데이트 되고 있습니다. 그들에게도 Friends 는 진행중인가 봅니다. ...

(Single Malt) Whiskey Flavor Map

블랑이, 이제 안녕-

차를 산 지 2년이 조금 더 지난 시점이었고, 엄마가 담가준 김장김치와 함께 서울로 올라오는 중부 고속도로였습니다. 평소에는 경부 고속도로로 올라왔지만 그날따라 티맵이 중부고속도로로 안내를 해줬습니다. 와이프는 보조석에서 자고 있었습니다. 약간의 속도를 내고 있었고 차선을 바꾸면서 앞에서 이미 사고로 인해 정차되어 있는 차들을 보지 못했습니다. 속도가 있었기 때문에 겨우 수리가 가능할 정도의 사고였습니다. 다행히 에어백이 저와 와이프를 지켜줬고, 조금의 부상 없이 걸어나올 수 있었습니다. 사고가 난 그날은, 쿠팡 면접 전날이었고, 제가 입원을 해야 할만큼 다쳤더라면 면접엔 참가하지 못했을 것이고 제 커리어가 어떻게 바뀌었을지 모릅니다. 우리의 생명을 지켜준 차였지만, 그 이후로 사고차라는 이유로 내 차에 대한 애정이 떨어졌습니다. 새 차를 계약한 지금, 지금의 차에 대한 미안함이 드는건 왜인지 모르겠습니다. 소중했던 내 차, 블랑이, 이제 안녕-