Android Oreo의 자동 완성 API를 사용하는 비밀번호 관리자는 데이터 유출에 잠재적으로 취약합니다.

Android Oreo의 Autofill API에 있는 잠재적인 보안 결함으로 인해 비밀번호 관리자가 비밀번호, 주소, 신용카드와 같은 데이터를 유출할 수 있습니다.

자동완성 Android 8.0 Oreo 출시와 함께 도입된 가장 크고 가장 널리 알려진 새로운 기능 중 하나입니다. LastPass와 같은 다양한 비밀번호 관리 앱은 이미 이 새로운 API를 애플리케이션에 구현했습니다. 그리고 그것이 증명될 수 있는 동안 상당히 개선됨 접근성 서비스를 사용하는 이전 자동 완성 구현에 비해 고려해야 할 잠재적인 보안 결함이 있습니다. 지난달에는 Android Oreo Autofill API의 고유한 결함을 기술한 백서가 GitHub에 게시되었습니다. 귀하의 비밀번호 관리자가 귀하가 허가한 것보다 더 많은 개인 데이터를 유출할 가능성이 있습니다.. 우리는 Mark Murphy(더 잘 알려져 있음)가 작성한 백서를 빠르게 요약해 보겠습니다. 커먼즈웨어) 및 2017년 8월 8일 그의 GitHub 페이지에 게시되었습니다.


Android Oreo Autofill API의 잠재적인 데이터 유출 결함

결함은 어떻게 작동하나요?

Android Nougat(및 하위 버전) 및 Google Chrome과 같은 브라우저의 자동 완성 구현은 정말 간단합니다. 일반적으로 비밀번호 관리 앱은 접근성 서비스를 사용하여 화면 콘텐츠에서 로그인 상자를 검색하고 찾은 내용을 기반으로 자동 완성 데이터를 추천합니다. 작동하는 동안, 상당한 지연이 발생할 수 있음.

Android Oreo에서는 비밀번호 앱이 이제 Autofill API를 통해 공식적으로 지원되므로 이는 약간 다르게 작동합니다. 타사 비밀번호 애플리케이션은 이제 자동 완성 프레임워크를 통해 앱과 통신하여 자동 완성 서비스의 역할을 수행할 수 있으므로 더 이상 접근성 서비스가 필요하지 않습니다. 사용자가 위젯에 초점을 맞추면 시스템은 해당 위젯/양식에 대한 일부 정보를 패키징하여 자동 완성 앱으로 보냅니다. 그런 다음 애플리케이션은 비밀번호, 이메일, 신용 카드 또는 기타 모든 종류의 민감한 데이터와 같은 관련 자동 완성 데이터를 반환합니다. 안드로이드 시스템은 데이터를 저장하는 애플리케이션과 데이터를 요청하는 애플리케이션 사이의 중개자 역할을 합니다.

Android 8.0 Oreo의 자동 완성 앱

그러나 악성 앱이나 악성 코드는 실제로 자동 완성 기능을 활용하여 더 많은 데이터를 얻을 수 있습니다. 악의적인 활동은 보이지 않거나 숨겨진 위젯을 사용하여 추가 자동 완성 데이터를 입력하도록 요청. 사용자가 로그인 양식이나 이와 유사한 표시 위젯 중 하나를 채우는 데 동의하는 동안 보이지 않는 위젯도 사용자가 보지 않고도 추가 데이터를 가져옵니다. 유출된 정보가 비밀번호, 주소, 신용카드 정보라면 정말 위험할 수 있습니다!

위의 스크린샷은 이 보안 결함을 활용하는 악성 테스트 애플리케이션을 보여줍니다.

문제에 대한 Google의 답변

CommonsWare에 따르면 이 보안 문제는 아직 Google에서 게시한 공개 솔루션이 없습니다. 그러나 우리는 Google이 이 문제를 알고 있다는 것을 알고 있습니다. CommonsWare는 Google 엔지니어가 비공개 문제 추적기 보고서에 문제가 존재한다는 사실을 인정했지만 실제로 패치하는 것은 (불가능하지는 않지만) 어려울 것입니다. 또는 수정 사항을 배포하세요.

하지만 그렇다고 자동 완성이 사용하기에 완전히 안전하지 않다는 의미는 아닙니다., Google은 데이터 안전을 보장하기 위해 또 다른 접근 방식을 취하고 있습니다. 회사는 자동 완성 서비스가 최종적으로 문제를 처리하도록 추진 따라서 에서는 개발자가 자동 ​​완성 제공자를 개선하고 더욱 안전하게 만들기 위한 인식을 높이려고 노력하고 있습니다. 정확히 무엇을 제안하고 있나요?

우선, 자동 완성 제공업체 데이터를 분할해야 합니다. 모든 자동 완성 데이터를 단일 풀에 보관하는 대신 개발자는 파티션에 저장된 사용자 데이터를 분할해야 합니다. 예를 들어 주소/전화번호 파티션, 신용카드 파티션, 비밀번호/사용자 이름 파티션 등이 있습니다. 자동 완성 서비스는 초점이 맞춰진 위젯을 기반으로 한 번에 하나의 파티션 데이터만 반환해야 합니다. 이것은 다음 중 하나입니다. 공개적으로 사용 가능한 페이지 보이지 않는 위젯으로 데이터가 유출되지 않도록 자동 완성 앱을 보호합니다.

Google 엔지니어에 따르면 비밀번호 관리자 개발자가 해야 할 일이 몇 가지 더 있습니다. 예를 들어 자동 완성 공급자는 처음에 데이터를 제공한 특정 앱에만 데이터를 전달해야 합니다. 수정된 APK라도 접근할 수 없도록 패키지 이름과 애플리케이션의 공개 서명을 확인해야 합니다. 또 다른 점은 자동 완성 앱이 실제로 데이터를 제공하기 전에 인증을 요구한다는 것입니다. 요청한 앱에 어떤 종류의 데이터가 제공될 것인지 사용자에게 알려주는 인증 활동입니다. 이 조언에는 실제로 많은 실수가 있습니다. 가장 중요한 점은 이러한 조언이 실제로 Google에서 시행되지 않는다는 것입니다.

위 제안 중 상당수는 공식 Google 문서 페이지가 아닌 CommonsWare의 비공개 이슈 추적기 보고서에서 가져온 것입니다. Autofill API를 사용하는 앱이 이러한 종류의 공격으로부터 자신을 보호할 수 있는 방법에 대한 추가 기술 분석을 보려면 다음을 읽어 보시기 바랍니다. CommonsWare의 전체 백서.

이 결함으로부터 안전한 앱은 무엇입니까?

우리는 이 취약점에 대해 1Password, Enpass 및 LastPass 개발자에게 연락했으며, 이 3개 앱을 지원하는 보안 팀은 주장하다 그들은 안전한, 하지만 아직 이러한 주장을 확인하지는 않았습니다.

위의 설명에서 볼 수 있듯이 1Password는 데이터를 채우기 전에 사용자의 인증을 요구하며, 어떤 데이터가 채워질지 미리 알려줍니다. 자동 채우기 데이터를 요청하는 모든 활동마다 인증 팝업이 표시되므로 자동 채우기 문제에도 도움이 됩니다.

Enpass는 악성이든 정품이든 관계없이 요청하는 앱에 전체 키체인을 공개하지 않습니다. 요청한 앱의 패키지 이름과 일치하는 저장된 항목만 사용자에게 표시됩니다. 그들은 또한 구글의 조언에 따라 더 많은 조치를 취할 것이라고 확인했습니다.

또한 LastPass는 Android Oreo 출시 이전에는 문제에 대해 몰랐지만 앱에서 다음을 사용하고 있음을 확인했습니다. 사용자를 보호하기 위한 데이터 분할 및 LastPass가 항목과 관련된 앱에만 채워지는지 확인하는 기타 검사.

이 3가지 애플리케이션을 사용하는 데 전혀 문제가 없어야 하지만, 완전히 안전한 상태를 유지하려면 비활성화해야 합니다. 비밀번호 관리자 개발자에게 해당 앱이 이 줄로부터 안전하다는 것을 확인할 때까지 휴대전화에서 완전히 자동 완성됩니다. 공격. 다행히 설정 > 시스템 > 언어 및 입력 > 고급으로 이동하여 "자동 완성 서비스" 기본 설정을 찾아 탭하고 "없음"을 선택하면 이 작업을 쉽게 수행할 수 있습니다.

위에서 말했듯이 Google이 실제로 이 문제에 대한 수정 사항을 내보낼 수 있는지 여부는 알 수 없으므로 신뢰할 수 있는 앱을 사용하거나 단순히 기능을 비활성화하는 것이 안전을 유지할 수 있는 유일한 방법입니다. 이 문제 및 이와 관련된 모든 세부 사항에 대해 더 자세히 알고 싶으면 원본을 읽어야 합니다. 이를 문서화한 백서 GitHub에서.


이 문서는 LastPass, Enpass 및 1Password의 응답 내용을 보다 정확하게 반영하기 위해 2017년 9월 13일에 업데이트되었습니다.