ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • OWASP Top Ten(2017년 버전)
    전공/정보보안 2020. 5. 29. 11:37

    https://owasp.org/www-project-top-ten/

     

    OWASP Top Ten Web Application Security Risks | OWASP

    The OWASP Top 10 is the reference standard for the most critical web application security risks. Adopting the OWASP Top 10 is perhaps the most effective first step towards changing your software development culture focused on producing secure code.

    owasp.org

    1. Injection

    사용자가 입력하는 데이터는 항상 validation(검증)이 필요하다.

    SQL Injection은 신뢰할 수 없는 데이터가 명령문 또는 쿼리의 일부로서 인터프리터에게 전달됐을 때 발생한다.

    공격자의 적대적 데이터는 적절한 권한 없이 의도하지 않은 명령을 실행하거나 데이터에 액세스하도록 인터프리터를 속일 수 있다.

     

    시나리오 1

    어떤 애플리케이션이 아래와 같은 취약한 SQL문을 호출하는데 검증이 안 된 데이터를 사용한다고 가정.

    String query = "SELECT * FROM accounts WHERE custID='" + request.getParameter("id") + "'";

     

    시나리오 2

    프레임워크에 대한 맹신 또한 취약한 쿼리를 만들어낸다. ( 예 : Hibernate Query Language (HQL) )

    Query HQLQuery = session.createQuery("FROM accounts WHERE custId='" + request.getParameter("id") + "'");

     

    사용자가 입력한 값(request.getParameter("id"))이 정상적인 값이면 상관이 없다.

    하지만 만약 공격자가 id parameter에 ' OR '1'='1 이나 '; DROP TABLE Users -- 같은 값을 넣는다면 큰 문제가 발생할 것이다.

    SELECT * FROM accounts WHERE custID='' OR '1' = '1' // 항상 true가 돼버린다. 따라서 모든 account를 조회해버린다.
    SELECT * FROM accounts WHERE custID=''; DROP TABLE Users --

    이처럼 SQL Injection 공격은 원래의 sql문의 의미를 완전히 바꿔 버린다.

     

    2. Broken Authentication

    인증 및 세션 관리와 관련된 애플리케이션 기능이 잘못 구현되는 경우가 많아 공격자가 취약한 암호, 키 또는 세션 토큰을 이용하거나 다른 구현 결함을 이용하여 다른 사용자의 ID를 일시적으로 또는 영구적으로 가장할 수 있다.

     

    3. Sensitive Data Exposure

    많은 웹 애플리케이션과 API는 재무, 의료, PII와 같은 중요한 데이터를 적절하게 보호하지 못한다. 공격자는 신용카드 사기, 신분 도용 또는 기타 범죄를 수행하기 위해 약하게 보호된 데이터를 훔치거나 수정할 수 있다. 민감한 데이터는 정지 상태나 이동 중 암호화 등 별도의 보호 없이 손상될 수 있으며, 브라우저와 교환 시 특별한 주의가 필요하다. Encryption이 중요! 

    모든 unsalted 해시는 미리 계산된 해시의 rainbow table로 노출될 수 있다. 단순하거나 빠른 해시함수에 의해 생성된 해시는 salted되어도 GPU에 의해 균열이 발생할 수 있다.

     

    4. XML External Entities (XXE)

    많은 구식 XML 프로세서가 XML 문서 내에서 외부 엔티티 참조를 평가한다. 외부 엔터티를 사용하여 파일 URI 처리기, 내부 파일 공유, 내부 포트 검색, 원격 코드 실행 및 서비스 거부 공격을 사용하여 내부 파일을 공개할 수 있다.

     

    5. Broken Access Control

    인증된 사용자가 수행할 수 있는 제한사항이 제대로 시행되지 않는 경우가 많다. 공격자는 이러한 결함을 이용하여 다른 사용자의 계정에 접근, 중요한 파일 보기, 다른 사용자의 데이터 수정, 액세스 권한 변경 등과 같은 승인되지 않은 기능 및 데이터에 액세스할 수 있다.

     

    6. Security Misconfiguration

    잘못된 보안 설정이 가장 흔히 볼 수 있는 문제다. 이는 일반적으로 안전하지 않은 기본 설정, 불완전하거나 임시 설정, 개방형 클라우드 저장소, 잘못 구성된 HTTP 헤더 및 중요한 정보가 포함된 자세한 오류 메시지의 결과물이다. 모든 운영 체제, 프레임워크, 라이브러리 및 애플리케이션은 안전하게 설정되어야 할 뿐만 아니라 적시에 적용/업그레이드 되어야 한다.

     

    예) 서버에서 디렉터리 리스팅이 비활성화 되어있지 않은 경우, 공격자가 디렉터리를 리스팅할 수 있다. 공격자가 컴파일된 Java 클래스들을 찾아서 다운로드 받은 다음, decompile과 역공학을 통해 코드를 볼 수 있다.

     

    stack traces

     

    7. Cross-Site Scripting XSS

    XSS 결함은 응용프로그램이 적절한 유효성 검사나 escaping 없이 새로운 웹 페이지에 신뢰할 수 없는 데이터를 포함하거나, HTML 또는 JavaScript를 만들 수 있는 브라우저 API를 사용하여 기존 웹 페이지를 사용자 제공 데이터로 업데이트할 때마다 발생한다. XSS는 공격자가 공격 대상자의 브라우저에서 스크립트를 실행할 수 있도록 하여 사용자 세션을 가로채거나 웹 사이트를 훼손하거나 사용자를 악의적인 사이트로 리디렉션할 수 있다.

     

    Browser가 악성코드가 있는 사이트에 접근하여 악성코드를 실행시켜서 cookie에 들어있는 정보를 빼간다.

    https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10-2017_A7-Cross-Site_Scripting_(XSS)

     

    8. Insecure Deserialization

    불안전한 deserialization은 종종 원격 코드 실행으로 이어진다. deserialization 결함으로 인해 원격 코드가 실행되지 않더라도  replay 공격, injection 공격, 권한 상승 공격(privilege escalation attack) 등 공격을 수행하는 데 사용할 수 있다.

    https://www.thecybersploit.com/2019/03/owasp-insecure-deserialization.html

     

    네트워크에서 온 Stream of Bytes가 Deserialize되어 Object로 맵핑되는데, Stream of Bytes의 유효성을 검사하지 않으면 공격의 대상이 될 수 있다. 공격자가 네트워크에서 도청하여 Stream of Bytes가 변조될 수 있기 때문!

     

    9. Using Components with Known Vulnerabilities

    라이브러리, 프레임워크 및 기타 소프트웨어 모듈과 같은 컴포넌트는 응용프로그램과 동일한 권한으로 실행된다. 취약한 컴포넌트가 악용될 경우 그러한 공격은 심각한 데이터 손실이나 서버 takeover를 촉진할 수 있다. 알려진 취약성을 가진 컴포넌트를 사용하는 응용프로그램과 API는 응용프로그램 방어를 저해하고 다양한 공격과 충돌을 가능하게 할 수 있다.

     

    컴포넌트 자체에 결함이 있는 경우.

     

    10. Insufficient Logging & Monitoring

    누락되거나 비효율적인 사고 대응과 결합된 불충분한 로깅 및 모니터링을 통해 공격자는 시스템을 추가로 공격하고, 지속성을 유지하며, 더 많은 시스템으로 피벗하며, 데이터를 변조, 추출 또는 파괴할 수 있다. 대부분의 위반 연구는 위반을 탐지하는 데 걸리는 시간이 200일 이상이며, 일반적으로 내부 프로세스나 모니터링보다는 외부 당사자에 의해 탐지된다.

    '전공 > 정보보안' 카테고리의 다른 글

    (Mac)웹 사이트 ip 주소 확인하기  (0) 2020.06.01
    SSL  (0) 2020.01.04
Designed by Tistory.