로그인 토큰 탈취

Rooting

Rooting

AsyncStorage 토큰 탈취

실습 코드

아래 코드는 AsyncStorageSecureStore를 비교하여 루팅된 디바이스에서의 보안 차이를 학습할 수 있도록 구성된 예제입니다.

import { useEffect } from "react";
import AsyncStorage from "@react-native-async-storage/async-storage";
import * as SecureStore from "expo-secure-store";

export default function 나의시작화면() {
  useEffect(() => {
    // 1. AsyncStorage에 저장하기 => 루팅 시 탈취 가능
    AsyncStorage.setItem("accessToken", "12341234");

    // 2. SecureStore에 저장하기 => 루팅 시 탈취되어도 암호화되어 있음
    //    2-1) 안드로이드: SharedPreferences 저장소(Keystore로 암호화하여 저장됨)
    //    2-2) iOS: Keychain 저장소(Keychain으로 암호화하여 저장됨)
    SecureStore.setItemAsync("accessToken", "3645363643643");
  }, []);

  return null;
}

루팅된 디바이스에서 토큰 탈취 실습

실습 전 준비 사항

1. 에뮬레이터 초기화 후 실행

2. adb 명령어 사용