전자금융기반시설 (웹, 모바일)

악성파일 업로드

서쪽곰 2023. 5. 29. 23:00

목 차

     

    평가항목ID WEB-SER-002, MOB-SER-002 위험도 5
    통제구분 5.8.4 (일반공통) 서비스 보호 평가항목 악성파일 업로드
    상세설명 o 웹쉘 등과 같은 악성파일이 업로드 될 경우 시스템 명령어 실행 및 인접 서버에 대한 침입 가능성이 존재함에 따라, 악성파일 업로드 및 실행 가능 여부를 점검
    * (평가 예시) 
    - 이미지, 한글(hwp) 등의 파일을 업로드 할 수 있는 부분에 JSP, ASP 등의 스크립트 파일 업로드 가능 여부 점검
    - 업로드 된 파일의 위치 및 실행 가능 여부 점검 등

    * 웹쉘(web shell) : 업로드 취약점을 통하여 해커가 원격에서 웹서버를 조종할 수 있도록 작성한 웹 스크립트(단체표준 TTAK.KO-12.0002/R3 정보 보호 기술 용어)

     

    악성파일 업로드

    성공적인 악성 파일 업로드의 결과는 심각할 수 있으며 다음을 포함합니다.

     

    소프트웨어 개발보안 가이드_위험한 형식 파일 업로드


    코드 실행: 공격자는 서버에서 실행할 수 있는 PHP 또는 JavaScript와 같은 악성 코드가 포함된 파일을 업로드할 수 있습니다. 이는 애플리케이션 손상, 민감한 데이터에 대한 무단 액세스 또는 영향을 받는 시스템에 대한 완전한 제어로 이어질 수 있습니다.

    맬웨어 배포: 공격자는 파일을 다운로드하는 다른 사용자에게 배포할 의도로 바이러스, 웜, 랜섬웨어 또는 트로이 목마와 같은 맬웨어에 감염된 파일을 업로드할 수 있습니다. 이로 인해 여러 시스템과 네트워크가 손상될 수 있습니다.

    데이터 유출: 악성 파일은 애플리케이션 파일 처리 메커니즘의 취약성을 악용하여 공격자가 서버 또는 애플리케이션 파일 시스템 내에 저장된 중요한 데이터에 액세스 하거나 유출할 수 있도록 만들 수 있습니다.

    악성 파일 업로드 취약점을 방지하려면 다음 보안 조치를 구현하는 것이 중요합니다.

    파일 형식 확인: 콘텐츠를 기반으로 파일 형식을 확인하고 업로드할 수 있는 파일 형식에 대한 제한을 적용합니다. 이는 파일 서명을 확인하거나 파일 확장자 화이트리스트를 사용하거나 콘텐츠 기반 파일 식별 기술을 사용하여 수행할 수 있습니다.

    파일 크기 제한: 서버 또는 저장소 리소스를 압도할 수 있는 지나치게 큰 파일의 업로드를 방지하기 위해 업로드된 파일의 크기 제한을 정의합니다.

    보안 파일 저장소: 업로드된 파일을 애플리케이션의 코드 및 기타 중요한 파일과 분리된 위치에 저장합니다. 무단 액세스를 방지하기 위해 적절한 액세스 제어 및 파일 권한이 있는지 확인합니다.

    파일 격리 및 검색: 업로드된 파일을 격리하고 최신 바이러스 백신 소프트웨어 또는 맬웨어 탐지 도구를 사용하여 검색하는 메커니즘을 구현합니다. 이렇게 하면 파일이 처리되거나 다른 사용자가 사용할 수 있게 되기 전에 잠재적인 위협을 식별하고 완화하는 데 도움이 됩니다.

    안전한 파일 처리: 업로드된 파일을 신뢰할 수 없는 데이터로 취급하고 상호 작용하기 전에 적절한 입력 유효성 검사 및 삭제 기술을 적용합니다. 애플리케이션의 코드 실행 경로 내에서 업로드된 파일을 직접 실행하거나 포함하지 마십시오.

    사용자 액세스 제어: 역할 기반 액세스 제어를 구현하여 승인된 사용자에게만 파일 업로드를 제한합니다. 오용 또는 무단 업로드를 방지하기 위해 사용자 권한을 정기적으로 검토하고 업데이트합니다.

    보안 테스트: 취약성 검색 및 침투 테스트를 포함한 정기적인 보안 평가를 수행하여 파일 업로드 기능의 약점 또는 취약성을 식별하고 해결합니다.

    이러한 예방 조치를 구현함으로써 조직은 악의적인 파일 업로드 취약성의 위험을 크게 줄이고 애플리케이션과 시스템을 잠재적 악용 및 보안 위반으로부터 보호할 수 있습니다.

     

    해결방안

    화이트 리스트 방식으로 허용된 확장자만 업로드를 허용합니다. 업로드되는 파일을 저장할 때에는 파일명과 확장자를 외부사용자가 추측할 수 없는 문자열로 변경하여 저장하며, 저장 경로는 ‘web document root’ 밖에 위치시켜서 공격자의 웹으로 직접 접근을 차단합니다. 또한 파일 실행 여부를 설정할 수 있는 경우, 실행 속성을 제거합니다.

     

    소프트웨어 개발보안 가이드_JAVA

    반응형