firebase / firebase/firebase-ios-sdk

[GoogleAppMeasurement 12.17.0] IDFV persisted in plaintext in google-app-measurement.sql — flagged as "PII in Internal Storage" by security scanner (NowSecure)

Open
#16,508 2 comments 0 reactions 0 assignees View on GitHub
api: analytics
Dominant language
C++
Stars
6.7k
Forks
1.8k
Avg merge
2d 14h
Merged PRs (30d)
72

Description

### Description

# Title
[GoogleAppMeasurement 12.17.0] IDFV persisted in plaintext in google-app-measurement.sql — flagged as "PII in Internal Storage" by security scanner (NowSecure)

# Description

## Environment
- firebase-ios-sdk 12.17.0, GoogleAppMeasurement 12.17.0 (SPM)
- Products: FirebaseAnalyticsCore (IDFA/Ad-ID disabled) + FirebaseCrashlytics
- Device/OS: iPad7,5 / iOS 17.7.10

## Summary
A NowSecure security scan flagged "PII in Internal Storage." The evidence is the device IDFV stored in plaintext inside Firebase Analytics' internal Measurement SQLite database. This file is created and written by GoogleAppMeasurement (Firebase Analytics), not by our application code — our source does not read or write this file.

## Evidence
- Sensitive data type: Identifier for Vendor (IDFV)
- Encoding: plaintext
- File: Library/Application Support/Google/Measurement/google-app-measurement.sql
- Scope: File System

## Code path
GoogleAppMeasurement.xcframework (closed-source binary) creates and writes
Library/Application Support/Google/Measurement/google-app-measurement.sql, storing the
IDFV to attribute analytics events. Our application code does not access this file.

## Questions / requests
1. Please confirm the purpose of persisting the IDFV in google-app-measurement.sql and that it is required for Analytics event attribution.
2. Please confirm the storage protection applied to this file (e.g., sandboxed, backup-excluded, iOS Data Protection class), and whether the IDFV is stored in plaintext by design.
3. Are there plans or supported options to encrypt, hash, or otherwise avoid persisting the IDFV in plaintext at rest?
4. Is there a supported configuration to reduce or avoid this on-disk PII storage without disabling Firebase Analytics?
5. Any official guidance/attestation we can provide to security auditors regarding this finding.

### Reproducing the issue

_No response_

### Firebase SDK Version

12.17.0

### Xcode Version

26.6

### Installation Method

Swift Package Manager

### Firebase Product(s)

Analytics, Crashlytics

### Targeted Platforms

iOS

### Relevant Log Output

```shell

```

### If using Swift Package Manager, the project's Package.resolved

Expand Package.resolved snippet

```json

Replace this line with the contents of your Package.resolved.

```

### If using CocoaPods, the project's Podfile.lock

Expand Podfile.lock snippet

```yml

Replace this line with the contents of your Podfile.lock!

```

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the reported Library/Application Support/Google/Measurement/google-app-measurement.sql path and the GoogleAppMeasurement.xcframework code path described in the issue; no repository source file or test is provided. Done means documenting whether IDFV persistence is required, what storage protection applies, and whether supported mitigation or configuration exists.

Written by the indexing model from the issue text.

Assessment

Tech stack
ios
Domain
analytics, mobile-dev, security
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.