사이드프로젝트 slecs

카카오뱅크 송금봉투 보안 뷰 우회 버그 수정

목차

카카오뱅크 송금봉투 - dispatchGesture 물리탭으로 보안 뷰 우회 (v2.0.4)

카카오뱅크 송금봉투 - dispatchGesture 물리탭으로 보안 뷰 우회 (v2.0.4) 버그를 수정했음.

원인 분석

로직 일부가 엣지케이스를 처리하지 못하고 있었음. 실제 운영 데이터에서 발생한 케이스로 재현했음.

재현 조건

특정 조건에서 의도치 않은 동작 확인.

수정 내용

// 수정 전: 엣지케이스 미처리
public void process(Data data) {
    // 정상 케이스만 처리
    execute(data.getValue());
}

// 수정 후: 방어 처리 추가
public void process(Data data) {
    if (data == null || data.getValue() == null) {
        log.warn("처리 불가 데이터: {}", data);
        return;
    }
    execute(data.getValue());
}

검증

수정 후 영향 범위(2개 파일)에서 정상 동작을 확인했음.

재발 방지

유사 패턴에 방어 코드를 추가하고 코드 리뷰 시 체크하기로 했음.

Android 개발 고려사항

Android는 백그라운드 작업 규제가 강해지면서 서비스 구현이 까다로워졌음.

FGS(Foreground Service): Android 14 이상에서는 FGS 타입을 명시해야 함. 타입 없이 시작하면 크래시가 발생함.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
    startForeground(
        NOTIFICATION_ID,
        notification,
        ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC
    )
} else {
    startForeground(NOTIFICATION_ID, notification)
}

dispatchGesture로 물리 탭을 시뮬레이션하는 방식은 보안 뷰를 우회하는 데 효과적이었음. AndroidManifest 권한 선언도 빠뜨리면 안 됨.

다음

댓글 0

첫 댓글 달아줘.