주 단위 웹 공격 추이
주 단위 웹 공격 추이를 통해 웹 공격이 어느 시기에 많이 발생했는지 확인할 수 있습니다.
이를 바탕으로 공격이 많은 시기에 미리 웹 공격으로부터 예방 및 대응책을 마련할 수 있습니다.
아래 그래프는 2024년 7월을 기준으로 AIWAF에서 탐지된 웹 공격들을 보여주고 있습니다.
2024년 7월에는 일 평균 약 26만 건 이상의 공격이 탐지되었으며, 특히 22일에 가장 많은 공격이 발생한 것을 확인 할 수 있습니다.
22일에 발생한 취약점중 가장 많은 공격 시도된 SQL Injection의 경우 저희 AIWAF 내 가장 많은 탐지 조건을 가지고 있습니다.
하지만 SQL Injection 공격의 경우 새로운 공격 유형 및 우회 방법이 많기 때문에 항시 모니터링을 진행하고 있습니다.
공격 유형별 웹 공격 동향
탐지 로그 기반으로 공격 유형별 웹 공격 동향을 통해 한 달 동안 어떤 공격이 많았는지 확인할 수 있습니다.
이를 바탕으로 기본적인 웹 공격 대응 가이드라인을 수립함으로써 해당 공격 유형에 대한 예방 및 대응책을 마련할 수 있습니다.
아래 그래프는 2024년 7월을 기준으로 AIWAF에서 탐지된 웹 공격들을 보여주고 있습니다.
Web Attack Trends by Rule
SQL Injection(42.23%) 공격 유형이 가장 많았으며, app weak(17.68%), Default page(16.3%), Directory Traversal(9.95%) 순으로 탐지 되었습니다.
SQL Injection은 OWASP 에서 1위에 랭크되어 있는 만큼 가장 다양하며 위험한 공격입니다.
사용자 요청에 따라 동적으로 데이터를 생성하는 SQL 구문에 악의적인 SQL 문을 강제로 삽입하는 공격으로 취약한 어플리케이션의 경우 비정상으로 인증을 받거나 SQL 결과값을 리턴받을 수 있습니다.
다음과 같은 구문이 쿼리값에서 발생하였다면 공격을 의심해보시기 바랍니다.
Application Weakness는 공격자가 무단 액세스를 얻거나 악의적인 작업을 수행하기 위해 악용할 수 있는 앱 내의 취약점을 나타냅니다.
이러한 취약점은 잘못된 코딩 관행, 잘못된 구성 또는 불충분한 보안 조치로 인한 경우가 이에 해당됩니다.
일반적으로 앱 프로그램 사용 시 인가된 파일을 제외하고 인가 되지 않은 파일들을 의심해 보시기 바랍니다.
최근 3개월 웹 공격 추이 그래프 요약
4월
5월
6월
공격자 IP Top 30
취약점 분석 보고서
[Jenkins Arbitrary File Leak Vulnerability]
1. 개요
Jenkins는 지속적인 통합 및 배포(CI/CD)를 결합하는 파이프라인을 위한 인기 있는 오픈소스 자동화 서버입니다.
프로그래머에게 소프트웨어 프로젝트 개발, 테스트 및 배포를 자동화할 수 있는 플랫폼을 제공합니다.
이미지 출처 : https://www.linkedin.com/pulse/you-aware-recent-jenkins-vulnerability-cve-2024-23897-amit-dash-lgi6e
해당 서버에서 발견된 여러 취약점 중 최근 발표된 CVE-2024-23897에 대한 분석한 내용을 정리하였습니다.
2. 공격 유형
Jenkins에는 스크립트나 셸 환경에서 상호작용을 가능하게 하는 통합 명령줄 인터페이스(CLI)가 함께 제공됩니다.
이 CLI는 args4j 라이브러리를 활용하여 CLI 명령 처리 중에 Jenkins 컨트롤러에서 명령 인수와 매개변수를 구문 분석합니다.
args4j의 한 기능은 원래 사용성을 개선하기 위해 설계된 파일 경로 뒤에 "@" 문자를 붙여 파일의 내용을 대체하지만 심각한 보안 취약점으로 바뀌었습니다.
버전 2.441 및 LTS 2.426.2는 이 기능을 기본적으로 활성화하고 확인하지 않습니다.
이 결함을 이용하여 공격자는 Jenkins 컨트롤러 프로세스의 기본 문자 인코딩을 사용하여 파일 시스템의 모든 파일에 액세스할 수 있습니다.
Jenkins CLI 도구에서 "@" 접두사가 붙은 인수는 인수에 액세스하기 위해 열어야 하는 파일로 잘못 해석됩니다.
어떤 상황에서는 CLI 사용자가 실수로 오류 메시지에 포함된 이러한 파일의 줄을 수신합니다.
출처 : https://hackyboiz.github.io/2024/03/04/ogu123/cve-2024-23897/
이를 통해 공격자는 Jenkins 컨트롤러 프로세스의 기본 문자 인코딩을 사용하여 Jenkins 컨트롤러 파일 시스템에서 임의의 파일을 읽을 수 있습니다.
이 취약점을 악용하는 두 가지 방법이 있습니다.
2.1 Jenkins-cli.jar 사용
일반적인 접근 방식은 웹 소켓이나 SSH를 통해 작동하는 Jenkins-cli.jar를 활용하는 것을 포함합니다.
구체적으로, Jenkins CLI 도구의 shutdown, enable-job, help, connect-node와 같은 명령은 Jenkins 서버의 파일 내용에 불법적으로 액세스하여 읽도록 조작됩니다.
아래 그림은 Jenkins CLI에서 파일을 읽기 위해 실행되는 help 명령을 보여줍니다.
출처 : https://www.uptycs.com/blog/jenkins-exploit-cve-2024-23897
아래 이미지는 Jenkins 서버에서 읽혀지는 파일 내용을 그대로 보여주는 예시 입니다.
2.2 POST 요청 보내기
다른 방법은 http://jenkins/cli?remoting=false에 두 개의 POST 요청을 보내는 것입니다.
이 기술은 다운로더와 업로더를 사용해야 합니다. 다운로더는 CLI 명령의 응답을 가져오고, 업로더는 요청 본문에 제공된 지정된 CLI 명령을 실행합니다.
다운로더와 업로더 간의 연결은 세션 헤더의 UUID를 활용하여 설정됩니다.
3. 대응 방안
Jenkins Arbitrary File Leak Vulnerability(CVE-2024-23897)에 대응하는 방법은 일반적으로 2가지로 확인 됩니다.
- Jenkins CLI에 대한 액세스를 비활성화
- Jenkins 버전442 및 LTS 2.426.3으로 최신 업데이트 진행. 해당 패치는 취약성을 담당하는 명령 파서 기능을 비활성화
저희 AIWAF 제품에서는 "Arbitrary file read in Jenkins" 패턴으로 해당 취약점을 악용한 공격 구문을 탐지하고 있습니다.
4. 결론
CVE-2024-23897은 소프트웨어 자동화 환경을 보호하는 데 있어 지속적인 과제를 강조하는 Jenkins 내의 중대한 취약성을 강조합니다.
이 취약성을 통해 공격자는 CLI 인수 처리를 악용하여 Jenkins 서버에서 임의의 파일을 읽을 수 있어 심각한 보안 위험이 발생합니다.
임의의 파일의 콘텐츠를 포함하도록 CLI 인수를 조작할 수 있는 기능은 민감한 데이터의 무단 노출로 이어져 Jenkins 서버와 관리하는 더 광범위한 인프라의 보안을 손상시킬 수 있습니다.
이 취약점의 발견은 Jenkins와 같은 자동화 도구의 개발 및 유지 관리에서 부지런한 보안 관행의 중요성을 상기 시켜줍니다.
CI/CD 파이프라인에 Jenkins를 사용하는 조직은 잠재적인 악용으로부터 보호하기 위해 배포의 평가 및 수정을 우선시해야 합니다.
저희 AIWAF 제품에서는 Jenkins 서버 관련 취약점들에 대해 패턴을 다수 개발하여 대응하고 있으며, 앞으로도 발견되는 Jenkins 서버 관련 취약점들에 대해서도 신속하게 대응할 예정입니다.
5. 참고 자료
https://www.uptycs.com/blog/jenkins-exploit-cve-2024-23897
https://hackyboiz.github.io/2024/03/04/ogu123/cve-2024-23897/