OWASP 카테고리: MASVS-NETWORK: 네트워크 커뮤니케이션
개요
Android 앱에서 일반 텍스트 네트워크 통신을 허용하면 네트워크 트래픽을 모니터링하는 모든 사용자가 전송되는 데이터를 보고 조작할 수 있습니다. 전송되는 데이터에 비밀번호, 신용카드 번호나 기타 개인 정보와 같은 민감한 정보가 포함되어 있으면 취약점이 됩니다.
민감한 정보를 전송하건 아니건 일반 텍스트를 사용하면 취약해질 수 있습니다. 일반 텍스트/일반 텍스트 HTTP 트래픽은 ARP 또는 DNS 포이즈닝과 같은 네트워크 악성 공격을 통해 조작되어 공격자가 앱의 동작에 영향을 줄 수 있기 때문입니다.
영향
Android 애플리케이션이 네트워크를 통해 일반 텍스트로 데이터를 보내거나 받으면 네트워크를 모니터링하는 누구나 이 데이터를 가로채 읽을 수 있습니다. 이 데이터에 비밀번호, 신용카드 번호, 개인 메시지 등의 민감한 정보가 포함되면 신원 도용, 금융 사기 및 여러 가지 심각한 문제가 발생할 수 있습니다.
예를 들어 앱에서 일반 텍스트로 비밀번호를 전송하면 트래픽을 가로채는 악의적인 행위자에게 이러한 사용자 인증 정보가 노출될 수 있으며, 악의적인 행위자가 이 데이터를 사용해 사용자 계정에 무단으로 액세스할 수 있습니다.
완화 조치
이 섹션의 지침은 Android 8.1(API 수준 27) 이하를 타겟팅하는 앱에만 적용됩니다. Android 9(API 수준 28)부터는 일반 텍스트 지원이 기본적으로 사용되지 않습니다.
일반 텍스트 트래픽을 선택 해제하려면 NetworkSecurityConfig.xml 기능을 사용하세요.
XML
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="false">
<domain includeSubdomains="true">secure.example.com</domain>
</domain-config>
</network-security-config>
이 옵션은 백엔드 서버 등의 외부 소스가 제공하는 URL의 변경사항으로 인해 앱에서 우연히 회귀가 일어나는 일을 방지합니다.