-
Notifications
You must be signed in to change notification settings - Fork 712
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Privacy Report #457
Add Privacy Report #457
Conversation
Another issue is the use of KSCrash/Source/KSCrash/Recording/Monitors/KSCrashMonitor_System.m Lines 547 to 553 in 2cff3a7
UPDATE: |
Will create opt-out mechanism for disc space in a distinct PR. |
@@ -43,6 +43,9 @@ let package = Package( | |||
"Monitors", | |||
"Tools" | |||
], | |||
resources: [ | |||
.copy("PrivacyInfo.xcprivacy") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For now, I added a kind of "monilit" privacy report in this module, since SPM modules need work. It shows the data collected in all KSCrash submodules.
@GLinnik21 thanks a lot for such an extensive report on why KCrash uses these privacy-sensitive features. Everything seems correct to me. Great job done here! |
Privacy Accessed APIs
The
stat
function requires declaration asNSPrivacyAccessedAPICategoryFileTimestamp
. According to Apple guidelines, we must declare the reason even if we do not use it for the file timestamp. The purpose of its use is the determination of the type and size of the file, which is part ofC617.1
.Details
KSCrash/Source/KSCrash/Recording/Tools/KSFileUtils.c
Lines 156 to 164 in 2cff3a7
KSCrash/Source/KSCrash/Recording/Tools/KSFileUtils.c
Lines 193 to 196 in 2cff3a7
KSCrash/Source/KSCrash/Recording/Tools/KSFileUtils.c
Lines 262 to 267 in 2cff3a7
KSCrash/Source/KSCrash/Recording/Tools/KSFileUtils.c
Lines 276 to 279 in 2cff3a7
The
NSFileSystemSize
requires declaration asNSPrivacyAccessedAPICategoryDiskSpace
. In our case, it falls under7D9E.1
as we send this information off the device in crash reports. However, Apple requires this part of the crash report to be optional as the user should approve usage of disk space information.Therefore, an opt-out mechanism should be implemented on KSCrash side.
Details
KSCrash/Source/KSCrash/Recording/Monitors/KSCrashMonitor_System.m
Lines 484 to 488 in 2cff3a7
The
NSUserDefaults
requires a declaration asNSPrivacyAccessedAPICategoryUserDefaults
. According to Apple documentation, there are no restrictions on sending data off the device, so it falls underCA92.1
.Details
KSCrash/Source/KSCrash/Reporting/Sinks/KSCrashReportSinkQuincyHockey.m
Lines 177 to 200 in 2cff3a7
Collected Data Types
NSPrivacyCollectedDataTypeCrashData
is used for crash reporting purposes, as it is the main function of the KSCrash library. Not used for linking or tracking. Used forNSPrivacyCollectedDataTypePurposeAppFunctionality
.NSPrivacyCollectedDataTypePerformanceData
is used to collect the launch time of the app in crash reports. This information is stored in theapp_start_time
field of our JSON crash format. This is exactly specified in the Apple docs. Not used for linking or tracking. Used forNSPrivacyCollectedDataTypePurposeAppFunctionality
.NSPrivacyCollectedDataTypeDeviceID
is utilized to generateapp_uuid
anddevice_app_hash
in our JSON crash format, which function as device-level identifiers. Additionally, there is a UUID for identifying an installation and potentially sending it from the device in Quincy/Hockey module. It is important to note that KSCrash cannot link this ID to the identity of the user or use it for tracking. This data is collected solely forNSPrivacyCollectedDataTypePurposeAppFunctionality
.