이 포스팅은 앱 프로세스 메모리를 덤프 떠서 중요 정보를 탈취하는 보안 취약점에 관해 작성하려한다.
유료 술루션을 사용하는 방법외의 해결책은 아직 찾지 못했다.
내가 이 문제를 해결하기 위해 공부하면서 알게된 정보를 정리하는 글이다.
1. 일반적으로 개발자나 앱 사용자가 기기의 로컬 메모리 또는 앱 내부 메모리를 덤프하는 것은 제한된다
- 하지만 악성 사용자가 특정 도구나 기술을 사용하면 메모리 덤프가 가능하다.
- 현재 예시로는 루팅 혹은 탈옥된 기기로 프로세스 메모리 덤프가 가능한 것으로 보인다.
2. android 기기의 경우 app 개발 시 manifest.xml 파일에 process:private 값을 넣어주면 앱의 중요 데이터가 다른 앱이나 시스템과 공유되지 않는다.
- 실제로 적용했을 시 데이터가 노출되지 않았다. (웹뷰 내 로그인 프로세스 데이터를 노출안되게 해야함.)
- 위 속성은 앱의 프로세스를 개별적으로 실행하고 프로세스 간 데이터 공유를 제한하는 역할을 한다. 이는 중요한 데이터를 암호화된 상태로 유지하거나 프로세스 간 데이터 누출을 방지하는데 도움이 된다.
3. iOS에서는 android의 process:private 와 같은 명시적인 옵션을 제공하지 않는다.
- 다만 info.plist에 NSFileProtectionKey 속성을 추가하여 어느정도 데이터를 보호할 수는 있지만 이거는 잠금화면에서의 데이터 보호용이기 때문에 실질적인 도움은 안될거 같다. 그래도 보안 메커니즘이니 추가해두자.
4. 앱의 캐시를 날려도 앱 내부 메모리는 제거되지 않는다.
- 앱의 캐시를 삭제하는 작업은 일반적으로 앱의 내부 저장소에서 관리되는 캐시 파일을 삭제하는 것을 의미한다. 이는 디스크에 저장된 캐시 데이터를 제거하는 것이며, 앱의 메모리에 로드된 데이터에 직접적인 영향을 주지 않는다.
- 앱의 내부 메모리에 로드된 데이터는 캐시 파일이 아니라 앱의 실행동안 메모리에 로드되어 있는 상태다.
- 앱의 내부 메모리에 로드된 데이터를 해제하고 메모리에서 제거할 수는 있다.
- 다만 iOS WebView에서 동작하는 프로세스 메모리를 직접적으로 제거하는 것은 제한된다. webView는 iOS의 webKit를 사용하는데 webView가 사용하는 프로세스 메모리는 webkit 프레임워크에서 관리되며, 개발자가 직접적으로 제어할 수 있는 범위가 아니라고 한다.
webView의 프로세스 메모리를 제거하려면 앱에서 webView를 해제하고 메모리 관리에 대한 최적화를 수행해야 한다.
현재까지 알아본 내용으로는 이렇다.
혹시 이 글을 보시고 다른 방안이나 조언주실 것이 있다면,... 댓글 부탁드립니다 !
'개발노트' 카테고리의 다른 글
[MAC] terminal 사용해서 특정 포트 죽이기 (0) | 2023.06.22 |
---|---|
.gitignore 정리 사용법 (0) | 2022.01.13 |
코딩 명명 규칙 : 카멜 케이스, 스네이크 케이스, 케밥 케이스, 파스칼 케이스 정리 (0) | 2021.12.07 |
댓글