보안 공부/모바일 보안

[안드로이드] Webview 사용하는 구간에서 메모리 덤프 시 평문 저장 이슈

H.J.World 2025. 1. 22. 11:45
728x90
반응형

 

모바일 앱 진단 수행 중 로그인 구간에서 webview를 사용하고 있고 해당 기능 이후 메모리 덤프 시 중요정보가 평문으로 저장되는 이슈가 발생

모바일 앱 동작 방식은 네이트브 형태나, 하이브리드 형태가 아니라 웹 뷰 형태에서 껍데기만 씌워놓은 형식으로 동작을 수행하고 있어서 기존에 대응 방안으로 안내하는 가상키페드 방식이나 메모리 초기화 방식으로 처리하기에는 어려운 상태

그래서 확인해본결과

 - 로그인 직후는 평문으로 남아있음

 - 한 5~10분정도 후 에는 또 없어짐

 

초기에만 남아있는 형태로 보여져서

일단 안내는 웹뷰 구현 시 캐시를 지우는 방법으로 하기로

 

사용 목적

  • 보안 강화:
    • 세션 종료 후 남아 있는 데이터를 삭제하여 민감 정보가 노출되는 것을 방지.
  • 개인정보 보호:
    • 사용자의 폼 데이터나 브라우징 기록을 지워서 프라이버시를 보호.
  • 앱 성능 최적화:
    • 캐시를 초기화하여 불필요한 데이터 축적을 방지하고 성능을 개선.

 

코드 설명

  1. webView.clearFormData();
    • WebView에 입력된 폼 데이터를 삭제합니다.
    • 사용자가 이전에 작성한 입력 데이터(예: 로그인 폼에서 입력한 ID, 비밀번호 등)가 저장된 경우 이를 초기화합니다.
    • 보안 및 개인정보 보호를 위해 사용됩니다.
  2. webView.clearCache(true);
    • WebView의 캐시를 삭제합니다.
    • true를 전달하면 디스크와 메모리에 저장된 모든 캐시 데이터를 제거합니다.
    • 이를 통해 이전에 방문한 웹사이트의 남아 있는 데이터를 제거하고 초기 상태로 되돌립니다.
  3. webView.clearHistory();
    • WebView의 방문 기록(히스토리)을 삭제합니다.
    • 사용자가 이전에 방문한 웹페이지 목록을 초기화하여 개인 정보를 보호할 수 있습니다.
  4. webView.loadUrl("about:blank");
    • WebView에 빈 페이지를 로드합니다.
    • 현재 로드된 웹 페이지를 완전히 제거하고 빈 상태로 초기화합니다.

 

webView.clearFormData();  // 폼 데이터 삭제
webView.clearCache(true); // 캐시 삭제
webView.clearHistory();   // 히스토리 삭제
webView.loadUrl("about:blank"); // 빈 페이지 로드

Destroy 부분에 넣어주고 테스트를 해봐야할듯 싶다.

 

그래도 안된다면 

1. 로그인 시 패킷 확인 해보니 평문으로 전송/사용 되고있음 (암호화 통신은 하고있고) 그래서 해당 부분을 암호화 처리해서 사용하도록 요청

2. 네이티브 방식으로 전환해서, 관련 API를 사용하든 처리할 수 있도록..

 

해결 및 이슈 진행상황에 대해서는 또 남기겠음

728x90
반응형