2P by GN⁺ | ★ favorite | 댓글 1개
  • Android 11 이후 Google은 앱 간 조회를 제한했지만, 여러 앱이 AndroidManifest.xml 선언만으로 설치 앱 목록을 확인할 수 있었음
  • package visibility 정책은 핵심 기능에 필요한 앱만 보도록 요구하지만, 개별 패키지 선언과 ACTION_MAIN 필터가 우회 경로처럼 쓰였음
  • Swiggy는 154개, Zepto는 165개, KreditBee는 860개, Moneyview는 944개 앱을 선언해 사용자 기기에 특정 앱이 있는지 조회할 수 있었음
  • 무작위로 본 인도 앱 47개 중 31개가 ACTION_MAIN intent filter를 사용했고, 이는 QUERY_ALL_PACKAGES 없이도 화면이 있는 대부분의 설치 앱을 볼 수 있게 함
  • 설치 앱 데이터와 READ_SMS 권한은 프로파일링, 가격 차등, 신용·자격 판단으로 이어질 수 있지만 사용자는 앱이 언제 무엇을 읽는지 알기 어려움

Android 앱 가시성 정책의 허점

  • 과거 Android에서는 앱이 별도 권한 없이 사용자의 휴대폰에 설치된 다른 앱을 볼 수 있었음
  • Google은 Android 11부터 package visibility 정책을 도입해 이 접근을 제한함
    • 앱은 핵심 기능에 필수적인 경우에만 다른 설치 앱을 볼 수 있어야 함
    • 개발자는 확인하려는 앱을 모든 Android 앱의 필수 설정 파일인 AndroidManifest.xml에 명시해야 함
  • 파일 관리자, 브라우저, 백신 앱처럼 구체적인 사용 사례에는 QUERY_ALL_PACKAGES 권한이 예외적으로 허용됨
  • UPI 결제 앱 표시, 앱 복제·다중 계정 앱 탐지 같은 경우는 합법적인 앱 조회 이유가 될 수 있음
    • 조사된 manifest 다수에도 결제, 보안, 사기 탐지 목적의 앱 조회가 포함돼 있었음

Swiggy와 Zepto의 광범위한 앱 조회

  • Swiggy는 manifest에 154개 패키지명을 나열해 해당 앱이 휴대폰에 있는지 확인할 수 있었음
    • 목록에는 Xbox, PlayStation, Naukri, Upstox 같은 앱이 포함됨
    • 카테고리가 매우 넓어 사용자 프로파일링과 행동 프로필 구축 목적의 데이터 수집 가능성이 큼
    • Google은 설치 앱 목록을 개인적이고 민감한 사용자 데이터로 봄
  • Zepto는 165개 앱을 기기에서 확인하도록 manifest에 등록함
    • Netflix, Bumble, Binance 등 여러 카테고리의 인기 앱이 포함돼 있었음
    • Zepto가 iOS와 Android 사용자에게 다른 가격을 표시했다는 보도가 있었고, 일부 고객은 Android 휴대폰별 가격 차이를 보고
  • 사용자는 Play Store에서 앱을 설치할 때 해당 앱의 manifest에 어떤 앱 조회 목록이 들어 있는지 볼 수 없음

배달 라이더 앱과 개인 대출 앱의 조회 범위

  • Swiggy와 Zepto의 배달 라이더용 앱은 소비자용 앱과 다른 앱 조회 목록을 갖고 있었음
    • 두 앱 모두 라이더가 어떤 다른 회사에서 일하는지 확인할 수 있는 항목을 포함함
    • Swiggy는 개인 대출 앱, 개인 금융 앱, Ludo King, Carrom Pool 같은 게임 앱까지 확인했음
  • 인도 개인 대출 앱의 약탈적 관행은 문서화돼 있고, 몇 년 전 대규모 단속으로 수천 개 앱이 Play Store에서 제거된 적이 있음
  • KreditBee는 Play Store 개인 대출 분야 상위 앱 중 하나이며, 다운로드 수가 5천만 회 이상이고 manifest에서 860개 앱을 확인했음
    • Tamil Calendar, Odia Calendar, Qibla Direction Finder, 사원 앱, 점성술 앱 같은 항목도 들어 있었음
    • 고등학교를 졸업하지 않은 사람들을 위한 혼인 앱 Jodii for Diploma, +2,10 below와 소·버팔로 거래 앱 소와 버팔로 사고팔기 Animall도 예시로 등장하며, 둘 다 1천만 회 이상 다운로드됨
  • Moneyview도 다운로드 수가 5천만 회 이상인 개인 대출 앱이며 manifest에 944개 앱을 포함함
  • Play Store 정책은 개인 대출 앱의 QUERY_ALL_PACKAGES 사용을 명시적으로 제한하지만, KreditBee와 Moneyview는 원하는 앱을 하나씩 manifest에 나열하는 방식으로 이 제한을 우회함

QUERY_ALL_PACKAGES 없이 앱 목록을 보는 방식

  • 조사한 앱 중 고위험·민감 권한인 QUERY_ALL_PACKAGES를 manifest에 포함한 사례는 Cred 하나였음
    • Play Store는 금융 규제 상품과 관련된 금융 거래를 촉진하는 검증 가능한 핵심 목적이 있는 앱에 이 권한의 “임시 예외”를 허용함
    • 같은 분야의 PhonePe나 PayTM manifest에는 이 권한이 없었음
    • Cred는 개인 대출도 제공하며, Play Store의 개인 대출 정책상 이 예외 대상이 아닌 것으로 보임
  • 일부 앱 manifest에는 다음과 같은 ACTION_MAIN intent filter가 들어 있었음
<queries>
  [...]
  <intent>
    <action android:name="android.intent.action.MAIN" />
  </intent>
  [...]
</queries>
  • ACTION_MAIN 필터는 화면이 있는 설치 앱 대부분에 대한 가시성을 제공하며, QUERY_ALL_PACKAGES 권한 없이도 휴대폰의 앱 목록을 볼 수 있었음
    • 같은 설정을 넣은 기본 Android 앱으로 설치 앱을 조회했을 때 휴대폰의 모든 앱 목록이 반환됨
  • 무작위로 분석한 인도 앱 47개 중 31개가 이 필터를 사용했으며, 이는 3개 중 2개꼴임
    • 사용한 앱: Astrotalk, Axis Mobile, Bajaj Finserv, BookMyShow, Cars24, Cure.fit, Fibe, Groww, Housing, Instamart, Ixigo, JioHotstar, KreditBee, KukuTV, LazyPay, Ludo King, Meesho, MoneyTap, Moneyview, Navi, NoBroker, Nykaa, Ola, PhonePe, PhysicsWallah, Slice, Spinny, Swiggy, Swiggy Delivery, Tata Neu, Zomato
    • 사용하지 않은 앱: Airtel Thanks, Blinkit, Byju’s, MyGate, Dream11, Flipkart, HDFC Mobile, Healthify, INDmoney, MyJio, Paytm, PaisaBazaar, ShareChat, Unacademy, Vedantu, Zepto
  • Swiggy는 ACTION_MAIN 필터도 갖고 있었지만 앱 조회 목록을 명시적으로도 나열해 데이터 수집 관행의 일부가 드러남
  • 읽은 manifest 파일은 android-manifest-files에 공개돼 있으며, 대부분 3월 18일 또는 19일에 다운로드된 것임
  • 이 설정은 인도 기업 앱에만 한정되지 않았음
    • Facebook, Instagram, Snapchat, Subway Surfers, Truecaller는 같은 설정을 갖고 있었음
    • Amazon, Spotify, X, Discord, WhatsApp에는 없었음

설치 앱 데이터와 SMS 권한의 민감성

  • 설치 앱 데이터는 민감한 개인 데이터
    • 2022년 Vice는 Roe v. Wade가 뒤집힐 수 있다는 소식 직후 Narrative라는 데이터 마켓플레이스가 생리 추적 앱을 내려받은 사용자 데이터를 판매하고 있었다고 보도
  • 앱의 manifest에는 설치 앱 조회 외에도 필요 범위를 넘어 보이는 권한이 광범위하게 포함될 수 있음
  • Zepto는 READ_SMS 권한을 요청함
    • 사용자가 거부할 수 있지만, Zepto Postpaid 가입 시에는 필수임
    • 권한을 허용하면 은행의 TRAI sender ID 다수와 Blinkit, Swiggy, Bigbasket, Flipkart의 SMS도 확인 대상에 포함됨
    • Postpaid 요금제 자격 확인을 위해 은행 SMS를 읽는 것으로 보이지만, 사용자가 해당 기능을 선택하지 않아도 읽을 수 있음
  • 사용자는 READ_SMS 같은 권한을 앱에 부여한 뒤 앱이 언제 무엇을 접근하는지 볼 수 없음
  • Android 앱 설치 정보는 앱 개발자와 데이터 브로커의 프로파일링, 광고 네트워크 데이터와의 교차 참조, 가격 책정 같은 용도로 쓰일 수 있음

댓글과 토론

Hacker News 의견들
  • ACTION_MAIN 허점은 예전에 이미 다뤄진 적이 있음: https://commonsware.com/blog/2020/04/05/android-r-package-vi...
    Google은 이걸 패치하려 하지 않음. Android VDP에 권한 우회로 제출하면 어떻게 될지 궁금함
    우회에 대해 작성자가 올린 SO 질문도 있음: https://stackoverflow.com/q/79527331

    • ACTION_MAIN을 선언한 앱은 실제로 런처여야 한다고 요구하면 이 허점은 언젠가 막을 수 있어 보임. 정상적인 연동이라면 더 구체적인 인텐트를 써야 할 듯함
      그 시점에는 방금 받은 임의의 게임을 기본 런처로 지정할지 Android가 묻는 흐름 자체가 수상한 앱 입장에선 꽤 위험한 상호작용이 됨. 사용자가 이탈해서 신고하거나, 잘 모르는 사용자가 기본 런처로 선택해 홈 화면을 망가뜨리고 Play Store에 신고할 가능성이 큼. 실제로 런처급 앱으로 배포하려면 자동 테스트와 추가 요구사항도 붙어 개발자에게 부담이 될 것 같음
    • 그래서 XPL-Extended나 예전의 XPrivacyLua 같은 프로젝트가 반드시 필요함. Android 폰을 쓸 때 이런 것 없이 쓰지 않음
    • 패키지 가시성 제한이 도입된 때부터 이미 이 허점이 있었고, 거의 모두가 이 제한을 우회하는 법을 아는 것 같음
      Google 엔지니어들이 널리 쓰이는 이 허점을 모를 거라고는 믿기 어렵지만, Google이 수정을 거부했다는 출처가 있는지는 궁금함
    • Android VDP에 제출하는 건 좋은 생각이지만, 의도된 동작이라고 넘겨도 놀랍지는 않음
    • “패치를 거부했다”는 게 무슨 뜻인지 모르겠음. Play Store에서는 그 필터를 요청하면서 런처가 아닌 앱의 배포 시도를 Google이 거부함
  • 네이티브 “앱”이 왜 필요한지 아직도 전혀 이해하지 못하겠음. 지금까지 웹사이트나 웹앱으로 충분하지 않은 “앱”을 본 적이 없고, 대부분은 웹앱이면 더 나아졌을 가능성이 큼
    “앱”의 유일한 장점은 개발자가 실제로 필요 없는 개인 정보에 접근할 수 있다는 것처럼 보임
    “App Store”에 올라갈 수 있다는 장점도 있지만, App Store는 Apple/Google이 판매액에서 큰 비율을 떼어가기 위해 만든 불필요한 개념임
    웹 브라우저는 괜찮은 샌드박싱을 제공하고, “제출” 수수료도 없으며, 모든 휴대폰의 모든 사람이 접근할 수 있음

    • 답은 간단히 사용자 경험
      현실적으로 모바일 웹앱 대부분은 형편없음. 사용자 경험이 네이티브 앱에 전혀 못 미침. 텍스트가 선택되는 것도 싫고, 모든 페이지에서 당겨서 새로고침이 되는 것도 싫고, 왼쪽 스와이프가 이전 페이지로 가는 것도 싫음
      이런 문제들을 우회할 방법은 찾을 수 있겠지만, 새 Silk 라이브러리(https://silkhq.co/)가 네이티브 경험에 아주 가까워진 첫 사례로 보임. 그런데 이게 유료 라이브러리라는 사실만 봐도 이 문제가 얼마나 사소하지 않은지 드러남
    • 이상한 관점임. 노트북에도 네이티브 앱이 필요 없다고 말하는 것과 본질적으로 같은 질문임
      네이티브 앱이 할 수 있지만 브라우저로는 잘 못 하거나 아예 못 하는 일이 많음. 예를 들어 무거운 영상/오디오 편집, 많은 RAM 접근, GPU 연산 활용, 하드웨어에 가까운 작업은 브라우저만으로는 아직 부족함
    • iOS에서 네이티브 앱과 웹앱이 둘 다 있는 경우, 배터리 사용량과 버벅임에서 큰 차이가 나는 일이 많음. 다른 답글처럼 지도나 노트 같은 완전한 오프라인 앱도 선호함
      Apple과 Google이 실제로 구현한 방식이 좋다는 뜻은 아니지만, 웹앱만 쓰는 미래가 올 거라고 보지는 않음. 같은 이유로 당분간 내 실제 컴퓨터를 Chromebook으로 바꾸지 않을 것임
    • 일부는 동의함. 기업들이 쇼핑 토큰을 모으고 관리하거나 고객센터에 연결하려고 내놓는 앱들은 웹사이트였으면 훨씬 나았음
      다만 기기에서 오프라인으로 동작하고, 내가 통제하지 않는 서비스들로 데이터를 흩뿌리지 않는 앱은 여전히 좋음. 어디에 있든 인터넷 연결에 의존하고 싶지도 않음
      숲이나 산에 있을 때 길을 보여주는 오프라인 OsmAnd/Organic Maps 앱이 좋고, 제3자 서버 대신 내 로컬 기기에 직접 연결해 데이터를 공유하는 앱도 좋음
      가능하다면 모든 앱은 오프라인 우선으로 개발되어야 하고, 필요할 때만 인터넷을 요구해야 함. 인터넷 없이는 동작할 수 없는 앱은 웹앱이면 충분하고 내 기기에 있을 필요가 없음
    • 정말 이해하거나 공감하기 어렵다. 모바일 웹은 아직도 끔찍한 경험처럼 느껴지고, 앱은 대체로 그렇지 않음
      최근에 모바일 웹에서 항공권을 예약해 본 적이 언제인지 궁금함. 브라우저가 차지하는 화면 공간은 어떻게 감당하는지도 모르겠음. 앱은 인증을 캐시하고 FaceID로 처리할 수 있는데, 매번 로그인해야 하는 것도 문제임
  • 그래서 Hacker News가 좋음
    어제 이 글을 발견해서 Reddit의 Android 게시판에 올렸음: https://old.reddit.com/r/Android/comments/1jmwg4w/everyone_k...
    추천 0개에, 댓글은 우울한 사람들인지 봇인지 모를 반응으로 가득했음
    여기서는 2위권이고, 대부분 흥미로운 댓글이 달림
    죽은 서브레딧도 많지만 r/android는 그중 최악에 가까움

    • Reddit에서 정확히 무슨 일이 벌어지는지는 모르겠지만, 죽은 인터넷 이론이 맞는 곳이 있다면 거기일 것 같음
      게다가 주제별 서브레딧들은 대체로 그 주제에 이해관계가 있는 사람들이 중재하는 것처럼 보이고, 커뮤니티에는 해가 됨. Meta의 Llama가 어떤 독점 라이선스 아래 있는지, 그 라이선스가 정확히 무엇을 의미하는지 자세히 쓴 글을 올렸는데 r/LocalLlama 중재자들이 이유 없이 수동 삭제했고, 규칙을 더 잘 이해하려고 물어도 왜 삭제했는지 답하지 않음
      마지막 “Reddit purge” 때 커뮤니티 중재자 다수를 Reddit 직원으로 교체하면서, 플랫폼 상당 부분이 각 회사가 자기 공간을 직접 중재하도록 팔려 나간 것 아닌가 싶음
    • 글의 성공 여부는 복불복임. 올렸는데 아무 반응이 없을 수도 있고, 사람들이 몰려들 수도 있음
      제목 아래의 “past” 링크를 누르면 2일 전 스레드가 있는데 완전히 죽어 있음
    • 반대로 HN에 흥미롭다고 생각한 링크를 올려도 댓글이 0개인 경우가 많음
    • r/android는 서브레딧 블랙아웃의 타격을 크게 받았고, 활동량이 매우 낮아짐
    • 그 서브레딧은 대체로 더 어린 층이고 “팬보이” 태도에 가까워서, Android 비판이라는 이유로 다운보트한 듯함
      Hacker News는 건설적 비판이라는 개념을 이해함
  • “일반적인 범주를 넘어서 Tamil Calendar, Odia Calendar, Qibla Direction Finder, mandir 앱, 점성술 앱 같은 것까지 검사한다. 뭘 하는지 알고 있다”는 부분이 핵심임
    이 대출 앱은 인종/지역 정체성(Tamil, Odia)과 종교(Qibla Direction Finder는 무슬림, mandir 앱은 힌두교도)를 기준으로 사람을 프로파일링하고 있음

  • HSBC UK Android 앱은 설치된 앱을 살펴보고, 특정 권한을 가진 앱이 있으면 실행을 거부함. 예를 들어 대체 런처가 있으면 안 되고, 이제는 Google 앱스토어 밖에서 설치한 앱이 하나라도 있으면 실행을 거부함
    전에 여기서도 불평했지만, 결국 하드웨어 보안 장치를 요청하고 웹사이트를 대신 쓰게 됨

    • 수상하고 깨지기 쉬운 꼼수로 동작을 거부하면서, 그걸로 사용자가 “보호된다”고 주장하는 앱들에 지침
    • 흥미롭게도 HSBC 계열인 FirstDirect 앱은 그런 문제가 없음. 예전에 루팅했던 폰에서도 실행됐음
    • 꽤 웃긴 일임. 다른 앱이 사용자를 감시할 수 있다고 알려주기 위해 먼저 사용자를 감시해야 하니까
      혹시 이 데이터가 회사로 전송되지 않는다고 말하기는 하는지 궁금함
    • 말도 안 되는 수준임. HSBC답다고 느껴짐
  • “내 폰에 Xbox나 Playstation 앱이 설치되어 있는지 아는 게 Swiggy의 핵심 기능에 왜 필요하지? Naukri나 Upstox 앱이 있는지 알면 식료품을 내 집까지 배달하는 데 무슨 도움이 되지?”라는 질문의 답은 지문 채취 목적임

    • 인기 있는 원격 데스크톱 앱도 검사함. 휴대폰으로 들어오는 연결을 허용하는 앱은 사기 성공률을 높이는 데 쓰일 수 있음
      은행 앱도 마찬가지로, 사기꾼이라면 대상이 어떤 은행을 쓰는지 미리 아는 게 정말 유용함
      특히 전화번호와 연결할 수 있다면, 이런 정보를 원하는 집단은 꽤 많을 것임
    • 지문 채취면 그나마 최선의 시나리오임
  • “파일 관리자, 브라우저, 백신 앱처럼 아주 특정한 사용 사례에 대해 Google은 QUERY_ALL_PACKAGES 권한 예외를 부여해 설치된 앱 전체를 볼 수 있게 한다”는 부분에서, 브라우저가 왜 설치된 앱을 열거해야 하는지 모르겠음
    왜?!

    • 사용자가 play.google.com URL을 방문했을 때, Google은 앱이 이미 설치되어 있는지에 따라 “설치” 또는 “실행” 버튼을 보여주고 싶어 함
      즉, Google 제품 관리를 탓하면 됨
    • 이런 앱들 중 일부는 실제 필요보다 훨씬 넓은 권한을 요구함
      예를 들어 Obsidian은 전체 파일 시스템 권한을 요구하지만, 실제로는 사용자가 보게 한 파일에 접근하면 충분함
    • 파일 관리자는 전체 접근이 필요함. 그 기능으로 시스템에 설치된 어떤 앱의 코드든 추출하고 검사할 수 있기 때문임
      매우 유용한 기능이라 없어지면 싫을 것 같음
    • 어떤 앱이 링크를 처리할 수 있는지 확인하려는 것일 수도 있음
  • “모두가 네 폰의 모든 앱을 안다”는 건 Android 폰 얘기임. iPhone에는 이런 개인정보 보호 결함이 없음

    • 사실 비공개 API로 가능함. Apple 앱은 항상 쓰지만 다른 앱에는 사용을 금지함
      https://blog.verichains.io/p/technical-analysis-improper-use...
    • iOS는 어떤 면에서는 더 나쁨. 회사 MDM에 등록하면 회사가 모든 앱을 볼 수 있음
      Android에서 요즘 표준 방식인 업무 프로필을 쓰면, 업무 프로필 안의 앱만 볼 수 있음
    • iPhone은 개인정보 보호 악몽이 덜한 편임
      앱을 만드는 가장 큰 유인 중 하나가 사용자에게서 온갖 데이터를 긁어 가는 것임. 연락처 접근 권한을 요구하는 앱이 얼마나 많은지, 그리고 실제 기능상 연락처가 필요한 앱이 얼마나 되는지 보면 됨. 그래서 이런 발견에 많은 사람이 놀라는 게 아직도 조금 놀라움
    • iOS에서는 몇 년 전 어느 정도 완화됐음
      예전에는 커스텀 URI 스킴으로 앱과 통신을 시도하고, 성공하면 그 앱이 설치되어 있음을 알 수 있었음. Twitter는 이걸 지문 채취에 사용했음
      이제 앱은 특별한 인텐트를 받아야 하고, 그 용도로 사용할 앱 목록을 명시해야 함
    • iPhone 얘기가 나와서 궁금한 게 있음. 가끔 [옛] 새 앱은 주요 팔로우를 확인하는 정도면 충분해서 웹앱으로 로그인함
      최근에 그들의 LLM 기능이 크게 업데이트되어 앱을 설치해 확인했음. 앱이 설치되어 있는 동안 모바일 웹사이트를 볼 때마다 앱으로 가라는 큰 배너가 떴고, 광고 차단기나 방해 요소 차단기로도 지워지지 않았음. 앱을 다시 삭제하자 사라짐
      왜 이런 걸까? 모바일 웹사이트가 앱 설치 여부를 어떻게 아는지 궁금함. 앱이 설치되어 있지 않을 때는 콘텐츠/방해 요소 차단기로 앱 사용 권유를 모두 막을 수 있는데, 설치되어 있을 때는 왜 못 막는지도 모르겠음
  • 루트가 필요하지만, LSPosed[1] 모듈인 XPrivacyLua[2] 같은 것으로 이걸 차단하거나 속일 수 있음. 비공개 소스인 AppOps[3]도 있다고 들었지만 써 보지는 않았음
    [1]: https://lsposed.org
    [2]: https://github.com/M66B/XPrivacyLua / https://github.com/0bbedCode/XPL-EX
    [3]: https://appops.rikka.app

  • Windows 앱, 특히 MS Store에서 설치하지 않은 앱이 열려 있는 모든 창의 제목을 열거할 수 있는지 궁금함. 앱이 제목만으로 전체 웹 트래픽을 감시하는 게 얼마나 어려울까?
    진짜 질문임. ChatGPT는 전부 맞장구쳐서 별 도움이 안 되고, 현실 세계에서 왜 실현 가능하지 않은지 말해줄 사람이 필요함

    • 오래 Win32를 다룬 프로그래머로서 말하면 가능함. 의도된 설계임. 비유하자면 Windows는 고신뢰 사회 같음
      이 목적을 위한 EnumWindows()와 EnumChildWindows() 함수가 있음
      이 기능의 예로 “Windows Modifier v2.00” 유틸리티와 Microsoft의 Spy++(SPYXX.EXE)를 보면 됨. 예전에 처음 받았을 때는 관련 페이지가 많았는데, 정확한 이름으로 검색해도 거의 안 나올 만큼 인터넷이 잘 잊어버리게 됐다는 신호처럼 느껴짐
      신뢰하지 않는 앱에 대한 해법은 아예 쓰지 않거나 VM에서 쓰는 것임
    • 대부분의 앱은 시스템에서 열린 다른 모든 창의 제목을 볼 수 있을 뿐 아니라, 모든 키 입력을 기록하고, 스크린샷을 찍고, 사용자나 화면의 오디오/비디오를 녹화하고, 홈 디렉터리의 파일을 복사하거나 삭제할 수도 있음. 명시적 권한이나 알림 없이 가능함
      적어도 Windows와 전통적인 *nix 시스템 대부분, 특히 X11에서는 맞는 얘기임
      이 점에서 Android가 잘한 게 하나 있음. 기본적으로 모든 애플리케이션을 서로 다른 사용자로 실행함. 즉 홈 폴더가 다르고 다른 앱을 볼 수 없음
    • 창 제목만으로 웹 트래픽을 감시하는 건 페이지 제목의 변동성이 커서 아주 정확하지는 않음
      그래도 ManicTime이나 ActivityWatch 같은 도구는 브라우저 플러그인을 설치하지 않으면 창 제목으로 브라우저 기록을 추적함
      https://www.manictime.com/
      https://activitywatch.net/
    • Windows는 훨씬 다르고, 더 느슨하며 오래된 보안 모델을 가짐. 같은 데스크톱에서 실행되는 창들 사이에는 보안 장벽이 없음
      특히 “UAC는 [여전히] 보안 장벽이 아니다”가 맞음. 프로세스를 상승시키려고 확인을 누르거나 비밀번호를 입력하면, 사실상 전체 데스크톱과 실행 중인 모든 것을 함께 상승시키는 셈임
    • 맞음. AutoHotKey가 이걸 할 수 있다는 점이 유용한 AHK 스크립트 다수의 기반이 됨