Newer
Older
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
11068
11069
11070
11071
11072
11073
11074
11075
11076
11077
11078
11079
11080
11081
11082
11083
11084
11085
11086
11087
11088
11089
11090
11091
11092
11093
11094
11095
11096
11097
11098
11099
11100
11101
11102
11103
11104
11105
11106
11107
11108
11109
11110
11111
11112
11113
11114
11115
11116
11117
11118
11119
11120
11121
11122
11123
11124
11125
11126
11127
11128
11129
11130
11131
11132
11133
11134
11135
11136
11137
11138
11139
11140
11141
11142
11143
11144
11145
11146
11147
11148
11149
11150
11151
11152
11153
11154
11155
11156
11157
11158
11159
11160
11161
11162
11163
11164
11165
11166
11167
11168
11169
11170
11171
11172
11173
11174
11175
11176
11177
11178
11179
11180
11181
11182
11183
11184
11185
11186
11187
11188
11189
11190
11191
11192
11193
11194
11195
11196
11197
11198
11199
11200
11201
11202
11203
11204
11205
11206
11207
11208
11209
11210
11211
11212
11213
11214
11215
11216
11217
11218
11219
11220
11221
11222
11223
11224
11225
11226
11227
11228
11229
11230
11231
11232
11233
11234
11235
11236
11237
11238
11239
11240
11241
11242
11243
11244
11245
11246
11247
11248
11249
11250
11251
11252
11253
11254
11255
11256
11257
11258
11259
11260
11261
11262
11263
11264
11265
11266
11267
11268
11269
11270
11271
11272
11273
11274
11275
11276
11277
11278
11279
11280
11281
11282
11283
11284
11285
11286
11287
11288
11289
11290
11291
11292
11293
11294
11295
11296
11297
11298
11299
11300
11301
11302
11303
11304
11305
11306
11307
11308
11309
11310
11311
11312
11313
11314
11315
11316
11317
11318
11319
11320
11321
11322
11323
11324
11325
11326
11327
11328
11329
11330
11331
11332
11333
11334
11335
11336
11337
11338
11339
11340
11341
11342
11343
11344
11345
11346
11347
11348
11349
11350
11351
11352
11353
11354
11355
11356
11357
11358
11359
11360
11361
11362
11363
11364
11365
11366
11367
11368
11369
11370
11371
11372
11373
11374
11375
11376
11377
11378
11379
11380
11381
11382
11383
11384
11385
11386
11387
11388
11389
11390
11391
11392
11393
11394
11395
11396
11397
11398
11399
11400
11401
11402
11403
11404
11405
11406
11407
11408
11409
11410
11411
11412
11413
11414
11415
11416
11417
11418
11419
11420
11421
11422
11423
11424
11425
11426
11427
11428
11429
11430
11431
11432
11433
11434
11435
11436
11437
11438
11439
11440
11441
11442
11443
11444
11445
11446
11447
11448
11449
11450
11451
11452
11453
11454
11455
11456
11457
11458
11459
11460
11461
11462
11463
11464
11465
11466
11467
11468
11469
11470
11471
11472
11473
11474
11475
11476
11477
11478
11479
11480
11481
11482
11483
11484
11485
11486
11487
11488
11489
11490
11491
11492
11493
11494
11495
11496
11497
11498
11499
11500
11501
11502
11503
11504
11505
11506
11507
11508
11509
11510
11511
11512
11513
11514
11515
11516
11517
11518
11519
11520
11521
11522
11523
11524
11525
11526
11527
11528
11529
11530
11531
11532
11533
11534
11535
11536
11537
11538
11539
11540
11541
11542
11543
11544
11545
11546
11547
11548
11549
11550
11551
11552
11553
11554
11555
11556
11557
11558
11559
11560
11561
11562
11563
11564
11565
11566
11567
11568
11569
11570
11571
11572
11573
11574
11575
11576
11577
11578
11579
11580
11581
11582
11583
11584
11585
11586
11587
11588
11589
11590
11591
11592
11593
11594
11595
11596
11597
11598
11599
11600
11601
11602
11603
11604
11605
11606
11607
11608
11609
11610
11611
11612
11613
11614
11615
11616
11617
11618
11619
11620
11621
11622
11623
11624
11625
11626
11627
11628
11629
11630
11631
11632
11633
11634
11635
11636
11637
11638
11639
11640
11641
11642
11643
11644
11645
11646
11647
11648
11649
11650
11651
11652
11653
11654
11655
11656
11657
11658
11659
11660
11661
11662
11663
11664
11665
11666
11667
11668
11669
11670
11671
11672
11673
11674
11675
11676
11677
11678
11679
11680
11681
11682
11683
11684
11685
11686
11687
11688
11689
11690
11691
11692
11693
11694
11695
11696
11697
11698
11699
11700
11701
11702
11703
11704
11705
11706
11707
11708
11709
11710
11711
11712
11713
11714
11715
11716
11717
11718
11719
11720
11721
11722
11723
11724
11725
11726
11727
11728
11729
11730
11731
11732
11733
11734
11735
11736
11737
11738
11739
11740
11741
11742
11743
11744
11745
11746
11747
11748
11749
11750
11751
11752
11753
11754
11755
11756
11757
11758
11759
11760
11761
11762
11763
11764
11765
11766
11767
11768
11769
11770
11771
11772
11773
11774
11775
11776
11777
11778
11779
11780
11781
11782
11783
11784
11785
11786
11787
11788
11789
11790
11791
11792
11793
11794
11795
11796
11797
11798
11799
11800
11801
11802
11803
11804
11805
11806
11807
11808
11809
11810
11811
11812
11813
11814
11815
11816
11817
11818
11819
11820
11821
11822
11823
11824
11825
11826
11827
11828
11829
11830
11831
11832
11833
11834
11835
11836
11837
11838
11839
11840
11841
11842
11843
11844
11845
11846
11847
11848
11849
11850
11851
11852
11853
11854
11855
11856
11857
11858
11859
11860
11861
11862
11863
11864
11865
11866
11867
11868
11869
11870
11871
11872
11873
11874
11875
11876
11877
11878
11879
11880
11881
11882
11883
11884
11885
11886
11887
11888
11889
11890
11891
11892
11893
11894
11895
11896
11897
11898
11899
11900
11901
11902
11903
11904
11905
11906
11907
11908
11909
11910
11911
11912
11913
11914
11915
11916
11917
11918
11919
11920
11921
11922
11923
11924
11925
11926
11927
11928
11929
11930
11931
11932
11933
11934
11935
11936
11937
11938
11939
11940
11941
11942
11943
11944
11945
11946
11947
11948
11949
11950
11951
11952
11953
11954
11955
11956
11957
11958
11959
11960
11961
11962
11963
11964
11965
11966
11967
11968
11969
11970
11971
11972
11973
11974
11975
11976
11977
11978
11979
11980
11981
11982
11983
11984
11985
11986
11987
11988
11989
11990
11991
11992
11993
11994
11995
11996
11997
11998
11999
12000
- Firefox Process Limits: https://wiki.mozilla.org/Project_Fission
### Assessment: SYS-REQ-21 (Memory isolation enforcement)
**Reference**: SYS-REQ-21 - Browser shall enforce memory isolation between processes to prevent cross-process memory access
**Given**: A conformant browser with SYS-1 or higher capability
**Task**: Memory isolation failures enable cross-process data theft, Spectre-class attacks to read arbitrary memory, privilege escalation through memory corruption, and exploitation of use-after-free vulnerabilities. Without ASLR, SharedArrayBuffer restrictions, and Spectre mitigations, attackers can reliably exploit memory vulnerabilities to breach process boundaries. Memory isolation with ASLR, cross-origin isolation requirements, memory zeroing, and hardware protections prevents cross-process memory attacks.
**Verification**:
1. Launch browser with multiple processes and identify their memory spaces
2. Use memory analysis tools to verify process memory isolation (valgrind, windbg, lldb)
3. Test that renderer processes cannot access browser process memory
4. Verify SharedArrayBuffer requires cross-origin isolation
5. Test that different origins cannot share memory without explicit mechanisms
6. Verify ASLR (Address Space Layout Randomization) is enabled
7. Test that Spectre mitigations prevent speculative execution memory leaks
8. Verify memory is zeroed when deallocated and reused
9. Test that memory dumps do not leak data between processes
10. Verify hardware memory protection (NX, DEP) is enabled
11. Each process has isolated virtual memory space
12. Renderer processes cannot read browser process memory
13. SharedArrayBuffer requires explicit CORS headers
14. ASLR randomizes memory addresses per process
15. Spectre/Meltdown mitigations prevent side-channel leaks
16. Memory is zeroed on deallocation
17. No cross-process memory leaks detectable
18. Hardware NX/DEP prevents code execution in data pages
19. Process crashes don't leak memory to other processes
20. Memory forensics shows proper isolation
**Pass Criteria**: Process memory isolated AND SharedArrayBuffer restricted AND ASLR enabled AND Spectre mitigations active
**Fail Criteria**: Cross-process memory access possible OR SharedArrayBuffer unrestricted OR no ASLR OR Spectre vulnerable
**Evidence**: Memory map analysis, process memory dumps, SharedArrayBuffer test results, ASLR verification, Spectre/Meltdown mitigation tests, memory leak detection reports
**References**:
- SharedArrayBuffer Security: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements
- Spectre Mitigations: https://www.chromium.org/Home/chromium-security/ssca/
- ASLR: https://en.wikipedia.org/wiki/Address_space_layout_randomization
- Site Isolation: https://www.chromium.org/Home/chromium-security/site-isolation/
### Assessment: SYS-REQ-22 (CPU resource quotas)
**Reference**: SYS-REQ-22 - Browser shall enforce CPU resource quotas to prevent any single origin from monopolizing processor resources
**Given**: A conformant browser with SYS-1 or higher capability
**Task**: CPU resource monopolization by malicious scripts enables cryptojacking attacks that steal processing power for cryptocurrency mining, denial-of-service through CPU exhaustion, battery drain on mobile devices, and system slowdowns affecting user productivity. Background tabs consuming CPU enable covert mining operations. CPU quotas with background throttling, timer throttling, requestAnimationFrame suspension, and per-origin limits prevent CPU monopolization while maintaining responsiveness for foreground content.
**Verification**:
1. Create test page with intensive CPU computation (tight loop or crypto operations)
2. Monitor CPU usage per process using OS tools (top, Task Manager, Activity Monitor)
3. Test that background tabs have reduced CPU quotas
4. Verify WebWorker CPU usage is counted toward origin quota
5. Test CPU throttling for invisible pages (display:none, zero opacity)
6. Verify timer throttling for background processes (setTimeout, setInterval)
7. Test that requestAnimationFrame is paused for background tabs
8. Monitor overall system CPU and verify browser doesn't exceed limits
9. Test that users can identify and terminate high-CPU tabs
10. Verify CPU priority scheduling favors foreground/visible content
11. Background tabs throttled to <1% CPU typically
12. Foreground tabs have priority CPU access
13. WebWorker CPU usage tracked per origin
14. Invisible elements have reduced CPU quotas
15. Timers throttled in background (1Hz or lower)
16. requestAnimationFrame paused when not visible
17. Browser task manager shows per-tab CPU usage
18. Users can terminate high-CPU tabs easily
19. System CPU usage remains reasonable under load
20. CPU scheduling prioritizes user-visible content
**Pass Criteria**: Background throttling active AND timers throttled AND rAF paused AND user can terminate high-CPU tabs
**Fail Criteria**: No background throttling OR timers not throttled OR rAF active in background OR no termination controls
**Evidence**: CPU usage graphs per tab, background throttling measurements, timer frequency tests, rAF execution logs, task manager screenshots, system CPU monitoring
**References**:
- Page Lifecycle API: https://developer.chrome.com/blog/page-lifecycle-api/
- Timer Throttling: https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#throttling
- requestAnimationFrame: https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame
- Firefox Process Priority: https://wiki.mozilla.org/Project_Fission#Process_prioritization
### Assessment: SYS-REQ-23 (Network bandwidth limits)
**Reference**: SYS-REQ-23 - Browser shall enforce network bandwidth limits to prevent excessive network resource consumption
**Given**: A conformant browser with SYS-1 or higher capability
**Task**: Uncontrolled network resource consumption enables bandwidth exhaustion attacks, connection pool depletion preventing legitimate requests, network-based denial-of-service, and excessive data usage on metered connections. Malicious origins opening unlimited connections can monopolize network resources. Per-origin connection limits, HTTP/2 stream limits, WebSocket quotas, and background deprioritization prevent network resource abuse while enabling efficient multiplexing and user control.
**Verification**:
1. Create test page that attempts high-volume network requests
2. Monitor network usage per origin using browser DevTools Network panel
3. Test connection limits per origin (typically 6-10 connections)
4. Verify HTTP/2 and HTTP/3 multiplexing limits
5. Test bandwidth throttling for background tabs
6. Verify WebSocket connection limits per origin
7. Test that large downloads can be paused or cancelled
8. Monitor overall browser network usage and verify limits
9. Test that fetch() requests respect connection pooling limits
10. Verify users can identify and control network-heavy tabs
11. Connection limits enforced per origin (6-10 connections)
12. HTTP/2 stream limits enforced (max concurrent streams)
13. Background tabs have reduced network priority
14. WebSocket connections limited per origin
15. Large transfers pausable and cancellable
16. Connection pooling prevents excessive sockets
17. Browser task manager shows network usage per tab
18. Network throttling options available in DevTools
19. Overall browser network reasonable under load
20. Users can control network-heavy operations
**Pass Criteria**: Connection limits enforced AND background deprioritization AND WebSocket limits AND user controls available
**Fail Criteria**: Unlimited connections OR no background priority OR unlimited WebSockets OR no user controls
**Evidence**: Network connection graphs, DevTools Network panel screenshots, connection limit test results, WebSocket limit verification, background priority measurements, task manager network stats
**References**:
- HTTP Connection Management: https://developer.mozilla.org/en-US/docs/Web/HTTP/Connection_management_in_HTTP_1.x
- HTTP/2 Specification: https://httpwg.org/specs/rfc7540.html
- Chrome Network Throttling: https://developer.chrome.com/docs/devtools/network/reference/#throttling
- WebSocket Limits: https://datatracker.ietf.org/doc/html/rfc6455
- Firefox Network Priority: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Priority
### Assessment: SYS-REQ-24 (Storage quota enforcement)
**Reference**: SYS-REQ-24 - Browser shall enforce storage quotas for origin-scoped storage mechanisms including IndexedDB, Cache API, and local storage
**Given**: A conformant browser with SYS-1 or higher capability
**Task**: Unrestricted storage enables disk space exhaustion attacks, storage-based denial-of-service, tracking through persistent data storage, and system instability from full disks. Malicious origins filling storage prevent legitimate applications from functioning. Per-origin storage quotas, persistent storage permissions, QuotaExceededError enforcement, and separate incognito limits prevent storage abuse while enabling adequate space for web applications and maintaining system stability.
**Verification**:
1. Test StorageManager.estimate() to query available storage quota
2. Attempt to exceed storage quota using IndexedDB and verify QuotaExceededError
3. Test localStorage quota limits (typically 5-10MB)
4. Verify Cache API respects storage quota
5. Test that storage quota is per-origin and isolated
6. Verify persistent storage requires explicit user permission
7. Test that storage usage is accurately reported in browser settings
8. Verify storage can be cleared per-origin by user
9. Test that incognito/private mode has separate, limited storage
10. Verify storage quota warnings or prompts for large allocations
11. Storage quotas enforced per-origin (typically 50-100MB default)
12. StorageManager API accurately reports usage and quota
13. QuotaExceededError thrown when limits reached
14. localStorage limited to 5-10MB per origin
15. Cache API storage counted toward quota
16. Persistent storage requires user permission
17. Browser settings show per-origin storage usage
18. Users can clear storage per-origin
19. Incognito mode has separate, limited quota
20. Large storage requests trigger user prompts
**Pass Criteria**: Quotas enforced per-origin AND QuotaExceededError thrown AND persistent storage requires permission AND user controls available
**Fail Criteria**: No quota enforcement OR errors not thrown OR persistent storage auto-granted OR no user controls
**Evidence**: StorageManager.estimate() results, QuotaExceededError screenshots, localStorage limit tests, Cache API quota tests, browser settings storage UI, incognito mode quota verification
**References**:
- Storage API: https://storage.spec.whatwg.org/
- StorageManager: https://developer.mozilla.org/en-US/docs/Web/API/StorageManager
- IndexedDB Quota: https://www.w3.org/TR/IndexedDB/#dom-idbdatabase-transaction
- Chrome Storage Quotas: https://web.dev/articles/storage-for-the-web
- Firefox Storage Limits: https://developer.mozilla.org/en-US/docs/Web/API/Storage_API/Storage_quotas_and_eviction_criteria
### Assessment: SYS-REQ-25 (Process priority management)
**Reference**: SYS-REQ-25 - Browser shall implement process priority management to ensure responsive user experience and fair resource allocation
**Given**: A conformant browser with SYS-1 or higher capability
**Task**: Without process priority management, background tabs can monopolize CPU resources causing foreground tab lag, audio playback in background can be interrupted unfairly, and browser responsiveness suffers from equal treatment of all processes. Priority inversion where background processes starve foreground operations degrades user experience. Dynamic process priority management ensuring foreground preference, audio continuity, and fair scheduling prevents resource contention while maintaining responsive user interaction.
**Verification**:
1. Launch browser with multiple tabs and identify process priorities using OS tools
2. Verify foreground tab processes have higher priority than background
3. Test that audio-playing tabs maintain elevated priority
4. Verify visible tabs have higher priority than hidden tabs
5. Test process priority changes when switching tabs
6. Monitor CPU scheduling and verify foreground processes get preference
7. Test that extension processes have appropriate priority
8. Verify utility processes (network, GPU) have appropriate priority
9. Test that frozen background tabs have lowest priority
10. Verify process priorities don't allow starvation
11. Foreground tabs run at higher OS process priority
12. Background tabs run at reduced priority (low or below normal)
13. Audio-playing tabs maintain adequate priority
14. Priority changes dynamically when switching tabs
15. CPU scheduler gives preference to high-priority processes
16. Extension processes have appropriate priority
17. Utility processes prioritized by criticality
18. Frozen tabs have lowest priority
19. No process starvation occurs
20. User-facing processes most responsive
**Pass Criteria**: Foreground tabs high priority AND background tabs low priority AND dynamic priority adjustment AND no starvation
**Fail Criteria**: All same priority OR no background reduction OR static priorities OR starvation occurs
**Evidence**: Process priority listings (nice values, Windows priority classes), CPU scheduling analysis, tab switching priority changes, audio playback priority verification, process responsiveness measurements
**References**:
- Chrome Process Model: https://www.chromium.org/developers/design-documents/multi-process-architecture/
- Linux Process Priority: https://man7.org/linux/man-pages/man2/nice.2.html
- Windows Process Priority: https://docs.microsoft.com/en-us/windows/win32/procthread/scheduling-priorities
- Page Lifecycle: https://developer.chrome.com/blog/page-lifecycle-api/
### Assessment: SYS-REQ-26 (Sandbox escape prevention)
**Reference**: SYS-REQ-26 - Browser shall implement multiple layers of defense to prevent sandbox escape attacks
**Given**: A conformant browser with SYS-1 or higher capability
**Task**: Sandbox escapes are high-severity vulnerabilities that allow compromised renderers to break containment and gain full system access, enabling malware installation, data exfiltration, and system compromise. Single-layer sandboxes are vulnerable to bypass through exploitation of implementation bugs or kernel vulnerabilities. Defense-in-depth with multiple sandbox layers, syscall filtering, IPC validation, kernel exploit mitigations, and continuous fuzzing prevents sandbox escapes even when individual defenses are bypassed.
**Verification**:
1. Review browser's sandbox architecture documentation and layers of defense
2. Test syscall filtering using strace/dtruss to verify blocked calls
3. Attempt known sandbox escape techniques and verify they're mitigated
4. Verify IPC validation prevents malformed messages from escaping sandbox
5. Test that renderer processes cannot ptrace or debug other processes
6. Verify memory corruption in renderer doesn't allow privilege escalation
7. Test that GPU process sandbox is separate from renderer sandbox
8. Verify kernel exploit mitigations (SMEP, SMAP, KPTI) are active
9. Test fuzzing results for sandbox bypass vulnerabilities
10. Verify security updates address discovered sandbox escapes
11. Multiple sandbox layers (syscall filter, namespace isolation, capability dropping)
12. Dangerous syscalls blocked (execve, ptrace, mount, etc.)
13. IPC messages validated in broker process
14. Process debugging APIs blocked
15. Memory corruption contained within sandbox
16. GPU sandbox independent from renderer
17. Kernel exploit mitigations active (SMEP, SMAP, KPTI)
18. Regular fuzzing for sandbox bypasses
19. Security updates address known escapes
20. Defense-in-depth architecture
**Pass Criteria**: Multiple sandbox layers AND syscall filtering AND IPC validation AND kernel mitigations active
**Fail Criteria**: Single layer only OR syscalls not filtered OR IPC not validated OR kernel mitigations missing
**Evidence**: Sandbox architecture documentation, syscall trace logs, sandbox escape test results, IPC validation logs, kernel mitigation verification, fuzzing reports, security update changelogs
**References**:
- Chromium Sandbox: https://chromium.googlesource.com/chromium/src/+/master/docs/design/sandbox.md
- Linux Namespace Isolation: https://man7.org/linux/man-pages/man7/namespaces.7.html
- Seccomp BPF: https://www.kernel.org/doc/html/latest/userspace-api/seccomp_filter.html
- SMEP and SMAP: https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance.html
- Project Zero Sandbox Escapes: https://googleprojectzero.blogspot.com/
### Assessment: SYS-REQ-27 (Speculative execution mitigations)
**Reference**: SYS-REQ-27 - Browser shall implement mitigations for speculative execution vulnerabilities including Spectre and Meltdown
**Given**: A conformant browser with SYS-1 or higher capability
**Task**: Spectre and Meltdown enable attackers to exploit speculative execution in modern CPUs to read arbitrary memory across security boundaries, including passwords, encryption keys, and cross-origin data. Without mitigations, malicious JavaScript can use timing side channels to leak sensitive data from other processes or origins. Site Isolation, timer quantization, SharedArrayBuffer restrictions, CORB, and COOP/COEP headers prevent speculative execution attacks by ensuring cross-origin data never shares address space.
**Verification**:
1. Verify Site Isolation is enabled using chrome://process-internals or equivalent
2. Test that high-resolution timers are reduced precision (performance.now() granularity)
3. Verify SharedArrayBuffer requires cross-origin isolation headers
4. Test that cross-origin data is not accessible in same process
5. Verify CORB (Cross-Origin Read Blocking) prevents sensitive data leaks
6. Test that speculative execution cannot leak cross-origin data
7. Verify process-per-site-instance isolation for sensitive origins
8. Test that COOP/COEP headers enable process isolation
9. Verify kernel page-table isolation (KPTI) is active on system
10. Test that Spectre PoC exploits are mitigated
11. Site Isolation active for all sites or at least sensitive origins
12. Timer precision reduced to 100 microseconds or coarser
13. SharedArrayBuffer requires COOP+COEP headers
14. Cross-origin data in separate processes
15. CORB blocks cross-origin reads of sensitive MIME types
16. Spectre PoC exploits fail to leak data
17. Process-per-site-instance for banks, login pages
18. COOP/COEP enable strict process isolation
19. KPTI active on vulnerable systems
20. Regular updates address new speculative execution vulnerabilities
**Pass Criteria**: Site Isolation enabled AND timer precision reduced AND SharedArrayBuffer restricted AND CORB active
**Fail Criteria**: No Site Isolation OR high-precision timers OR SharedArrayBuffer unrestricted OR CORB disabled
**Evidence**: Site Isolation status screenshots, timer precision measurements, SharedArrayBuffer tests with/without headers, CORB blocking logs, Spectre PoC test results, KPTI verification
**References**:
- Spectre Mitigations: https://www.chromium.org/Home/chromium-security/ssca/
- Site Isolation: https://www.chromium.org/Home/chromium-security/site-isolation/
- SharedArrayBuffer: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements
- CORB: https://chromium.googlesource.com/chromium/src/+/master/services/network/cross_origin_read_blocking_explainer.md
- Spectre Attack: https://spectreattack.com/
### Assessment: SYS-REQ-28 (Side-channel attack mitigations)
**Reference**: SYS-REQ-28 - Browser shall implement mitigations for side-channel attacks including timing attacks, cache attacks, and fingerprinting
**Given**: A conformant browser with SYS-1 or higher capability
**Task**: Side-channel attacks exploit timing differences, cache behavior, rendering performance, and other observable effects to infer sensitive information like user history, cross-origin data, or cryptographic keys. High-precision timers enable microarchitectural attacks, CSS :visited timing leaks browsing history, and cache timing reveals cross-origin content. Timer quantization, process isolation for cache partitioning, cross-origin timing sanitization, and fingerprinting surface minimization prevent side-channel information leakage.
**Verification**:
1. Test timer precision reduction (performance.now(), Date.now()) to verify quantization
2. Verify SharedArrayBuffer is disabled or requires isolation headers
3. Test that cache timing attacks are mitigated through process isolation
4. Verify rendering timing cannot leak cross-origin information
5. Test that event loop timing is not exploitable for side channels
6. Verify CSS timing attacks are mitigated (e.g., :visited link timing)
7. Test that network timing doesn't leak cross-origin data
8. Verify SVG filter timing attacks are prevented
9. Test that WebGL cannot be used for timing side channels
10. Verify fingerprinting surfaces are minimized or permissions-gated
11. Timer precision reduced (100 microseconds or coarser)
12. SharedArrayBuffer requires COOP+COEP isolation
13. Process isolation prevents cache-based side channels
14. Rendering timing doesn't leak cross-origin data
15. Event loop timing not exploitable
16. :visited link styling restricted to prevent timing attacks
17. Network timing (Resource Timing API) sanitized for cross-origin
18. SVG filter timing attacks mitigated
19. WebGL timing attacks prevented through various restrictions
20. Fingerprinting APIs require permission or are restricted
**Pass Criteria**: Timer quantization active AND SharedArrayBuffer isolated AND process isolation prevents cache attacks AND cross-origin timing sanitized
**Fail Criteria**: High-precision timers OR SharedArrayBuffer unrestricted OR no cache isolation OR timing leaks exist
**Evidence**: Timer precision tests, SharedArrayBuffer isolation verification, cache timing attack tests, cross-origin timing measurements, fingerprinting surface analysis, side-channel PoC test results
**References**:
- Web Platform Security: https://www.w3.org/TR/fingerprinting-guidance/
- Timing Attacks: https://www.w3.org/TR/hr-time-2/#clock-resolution
- CSS :visited Privacy: https://developer.mozilla.org/en-US/docs/Web/CSS/Privacy_and_the_:visited_selector
- Resource Timing: https://www.w3.org/TR/resource-timing-2/
- Fingerprinting Resistance: https://brave.com/privacy-updates/3-fingerprint-randomization/
### Assessment: SYS-REQ-29 (Hardware token security)
**Reference**: SYS-REQ-29 - Browser shall implement secure access controls for hardware security tokens and authenticators (WebAuthn)
**Given**: A conformant browser with SYS-1 or higher capability and WebAuthn support
**Task**: Hardware security tokens provide strong authentication but require secure browser integration to prevent phishing, credential theft, and authenticator cloning attacks. Without HTTPS requirements and origin binding, attackers could steal credentials or use fake authenticators. User verification and presence requirements prevent remote attacks. HTTPS enforcement, origin-bound credentials, attestation validation, user presence requirements, and extension isolation ensure WebAuthn security while enabling passwordless authentication.
**Verification**:
1. Test WebAuthn registration with hardware security key (e.g., YubiKey)
2. Verify registration requires HTTPS context (except localhost)
3. Test that user verification (PIN/biometric) is enforced when required
4. Verify authenticator attestation is validated correctly
5. Test that credentials are origin-bound and not accessible cross-origin
6. Verify user presence is required (physical touch/button press)
7. Test that CTAP2 protocol is properly implemented for FIDO2 devices
8. Verify browser extensions cannot intercept WebAuthn operations
9. Test that authenticator selection respects user choice
10. Verify platform authenticators (Touch ID, Windows Hello) are isolated
11. WebAuthn requires secure context (HTTPS or localhost)
12. User verification enforced when requested by relying party
13. Attestation validation prevents cloned/fake authenticators
14. Credentials strictly origin-bound (site isolation)
15. User presence required (physical interaction)
16. CTAP2 protocol correctly implemented
17. Extensions cannot intercept or modify WebAuthn
18. Users choose authenticator from picker
19. Platform authenticators use OS-level secure enclaves
20. Private keys never accessible to JavaScript
**Pass Criteria**: HTTPS required AND user verification enforced AND origin-bound credentials AND user presence required
**Fail Criteria**: HTTP allowed OR no user verification OR cross-origin access OR no user presence
**Evidence**: WebAuthn registration screenshots, attestation validation logs, cross-origin test results, user presence verification, CTAP2 protocol traces, platform authenticator tests
**References**:
- WebAuthn Specification: https://www.w3.org/TR/webauthn-2/
- FIDO2 CTAP: https://fidoalliance.org/specs/fido-v2.0-ps-20190130/fido-client-to-authenticator-protocol-v2.0-ps-20190130.html
- WebAuthn Security: https://www.w3.org/TR/webauthn-2/#sctn-security-considerations
- FIDO Security Reference: https://fidoalliance.org/specifications/
### Assessment: SYS-REQ-30 (Accessibility API security)
**Reference**: SYS-REQ-30 - Browser shall implement security controls for accessibility APIs to prevent information leakage and unauthorized access
**Given**: A conformant browser with SYS-1 or higher capability
**Task**: Accessibility APIs expose detailed page structure, content, and user interactions to assistive technologies, creating vectors for information leakage, fingerprinting, unauthorized content scraping, and privacy violations if not properly controlled. Malicious software masquerading as assistive technology could harvest passwords, track user actions, or extract sensitive content. OS-level permission requirements, sensitive data masking, cross-origin restrictions, and remote access authentication prevent accessibility API abuse while serving users with disabilities.
**Verification**:
1. Enable OS accessibility features (screen reader, voice control)
2. Verify browser exposes accessibility tree to authorized assistive technology only
3. Test that accessibility API requires user opt-in or OS-level permission
4. Verify accessibility tree doesn't leak sensitive data (passwords, hidden content)
5. Test that cross-origin content has restricted accessibility exposure
6. Verify accessibility events don't leak timing or user interaction information
7. Test that remote accessibility access (enterprise tools) requires authentication
8. Verify accessibility API cannot be abused for fingerprinting
9. Test that ARIA attributes don't leak security-sensitive information
10. Verify screen reader access is logged for security auditing
11. Accessibility API access requires OS-level permission
12. Only authorized assistive technology can access accessibility tree
13. Sensitive content (passwords) properly masked in accessibility tree
14. Cross-origin content has limited accessibility exposure
15. Accessibility events sanitized to prevent leakage
16. Remote accessibility requires authentication
17. Accessibility API cannot be used for fingerprinting
18. ARIA attributes don't leak sensitive information
19. Accessibility access auditable
20. Browser communicates securely with assistive technology
**Pass Criteria**: OS permission required AND sensitive data masked AND cross-origin limited AND remote access authenticated
**Fail Criteria**: No permission required OR passwords exposed OR cross-origin fully accessible OR remote access unauthenticated
**Evidence**: Accessibility permission flows, accessibility tree dumps showing masking, cross-origin accessibility tests, remote access authentication verification, fingerprinting tests, audit logs
**References**:
- WAI-ARIA: https://www.w3.org/TR/wai-aria-1.2/
- Accessibility Object Model: https://wicg.github.io/aom/spec/
- Chrome Accessibility: https://www.chromium.org/developers/design-documents/accessibility/
- macOS Accessibility: https://developer.apple.com/documentation/accessibility
- Windows Accessibility: https://docs.microsoft.com/en-us/windows/win32/winauto/entry-uiauto-win32
### Assessment: SYS-REQ-31 (Native messaging restrictions)
**Reference**: SYS-REQ-31 - Browser shall enforce security restrictions on native messaging between extensions and native applications
**Given**: A conformant browser with SYS-1 and EXT-1 or higher capability
**Task**: Native messaging bridges the browser extension sandbox and native applications, creating risks of sandbox escape, privilege escalation, arbitrary code execution, and malware installation if not properly controlled. Malicious extensions could exploit native messaging to execute system commands, access sensitive files, or install malware. Manifest permissions, host registration, extension ID validation, message validation, and privilege limitation prevent native messaging abuse while enabling legitimate browser-native integration.
**Verification**:
1. Create test extension with nativeMessaging permission
2. Verify extension requires explicit permission declaration in manifest
3. Test that native messaging host is registered with browser
4. Verify only explicitly allowed extensions can communicate with native host
5. Test that native messaging requires user installation of native component
6. Verify message validation occurs on browser side
7. Test that native host process runs with limited privileges
8. Verify native messaging cannot bypass extension sandbox
9. Test that uninstalling extension terminates native messaging connections
10. Verify enterprise policies can restrict or acceptlist native messaging
11. nativeMessaging permission required in manifest
12. Native host is registered in browser's native messaging directory
13. Only permitted extensions (by ID) can connect to host
14. User should manually install native host application
15. Messages validated by browser before passing to/from host
16. Native host runs with limited OS privileges
17. Extension sandbox not bypassed via native messaging
18. Extension uninstall terminates native connections
19. Enterprise policies can control native messaging
20. Native host path validation prevents arbitrary execution
**Pass Criteria**: Manifest permission required AND host registration required AND extension ID validation AND user installs host
**Fail Criteria**: No permission required OR no host registration OR any extension can connect OR automatic host installation
**Evidence**: Extension manifest examples, native host registration files, permission validation tests, message validation logs, privilege analysis of native host, enterprise policy tests
**References**:
- Chrome Native Messaging: https://developer.chrome.com/docs/extensions/develop/concepts/native-messaging
- Firefox Native Messaging: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_messaging
### Assessment: SYS-REQ-32 (Host OS integration security)
**Reference**: SYS-REQ-32 - Browser shall securely integrate with host operating system features while maintaining sandbox boundaries and security isolation
**Given**: A conformant browser with SYS-1 or higher capability
**Task**: Host OS integration provides essential functionality but creates attack surfaces for credential theft, certificate validation bypass, policy evasion, and privilege escalation if not properly secured. Insecure credential access exposes passwords, certificate store bypass enables MITM attacks, and policy violations undermine enterprise security. Secure IPC for credentials, OS certificate store usage, file association validation, policy compliance, and update signature verification maintain security boundaries while enabling OS integration.
**Verification**:
1. Test OS credential integration (Windows Credential Manager, macOS Keychain) and verify secure access
2. Verify browser uses OS certificate store with proper validation
3. Test OS notification integration respects permission model
4. Verify file type association handlers are validated and sandboxed
5. Test protocol handler registration requires user confirmation
6. Verify OS-level print dialog prevents renderer access to print system
7. Test that OS share APIs require user gesture and confirmation
8. Verify browser respects OS security policies (AppLocker, Gatekeeper, SELinux)
9. Test that browser updates use OS-level signature verification
10. Verify browser profile directories use OS access controls
11. OS credential storage accessed securely (encrypted IPC)
12. OS certificate store used with proper validation
13. OS notifications require permission and are per-origin
14. File associations validated before handler invocation
15. Protocol handlers require user confirmation
16. Print system accessed via broker, not renderer
17. OS share APIs require user gesture
18. Browser respects OS security policies
19. Updates verified with OS-level signatures
20. Profile directories protected with OS ACLs
**Pass Criteria**: Secure credential access AND certificate store used AND handlers validated AND security policies respected
**Fail Criteria**: Insecure credential access OR certificate store bypassed OR handlers not validated OR policies ignored
**Evidence**: Credential access flow analysis, certificate store usage verification, file association tests, protocol handler registration flows, OS policy compliance tests, update signature verification, ACL analysis
**References**:
- Windows Credential Manager: https://docs.microsoft.com/en-us/windows/security/identity-protection/credential-guard/
- macOS Keychain: https://developer.apple.com/documentation/security/keychain_services
- Code Signing: https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distribution
- Windows AppLocker: https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-application-control/applocker/applocker-overview
- SELinux: https://www.redhat.com/en/topics/linux/what-is-selinux
### Assessment: SYS-REQ-33 (Block all device API access at SYS-0)
**Reference**: SYS-REQ-33 - Browser shall block all device API access (no camera, microphone, location, etc.) at SYS-0 capability level
**Given**: A conformant browser with SYS-0 capability (fully sandboxed, no system access)
**Task**: At SYS-0 capability, browsers must completely deny access to all device hardware APIs to minimize attack surface and prevent fingerprinting, location tracking, surveillance, and privacy violations. Allowing camera, microphone, geolocation, or sensor APIs at this level contradicts the security posture of zero system access, enabling malicious sites to track users, capture audio/video without consent, or perform sophisticated fingerprinting attacks. Complete device API blocking with permission UI disabled, API surface removed, and feature policy enforcement ensures zero hardware access.
**Verification**:
1. Navigate to test pages that request camera access using browser media APIs and verify requests are blocked
2. Test microphone access requests and confirm they fail immediately without permission prompts
3. Attempt to access geolocation API and verify it returns an error without prompting
4. Test device motion and orientation sensor APIs and confirm they are blocked
5. Attempt to access ambient light sensor API and verify it is unavailable
6. Test battery status API access and confirm it is blocked
7. Verify proximity sensor API is not available at SYS-0 level
8. Test vibration API and confirm it is blocked or returns immediately without effect
9. Attempt to access NFC, Bluetooth, and USB APIs and verify they are completely unavailable
10. Verify that permission UI for all device APIs is disabled and not rendered
11. All camera access requests fail without user prompting
12. All microphone requests fail immediately
13. Geolocation API returns error without permission dialogs
14. Motion and orientation sensors blocked
15. Ambient light sensor unavailable
16. Battery status API blocked
17. Proximity sensor not exposed
18. Vibration API disabled or no-op
19. NFC, Bluetooth, USB APIs completely unavailable
20. No permission UI rendered for any device API
**Pass Criteria**: All device hardware APIs blocked AND no permission prompts shown AND API surface not exposed AND feature policy enforced
**Fail Criteria**: Any device API accessible OR permission prompts shown OR APIs available in JavaScript scope
**Evidence**: API access test results showing blocked requests, JavaScript console showing undefined API objects, network logs showing no device enumeration, permission UI absence verification, feature policy analysis
**References**:
- Media Capture and Streams API: https://www.w3.org/TR/mediacapture-streams/
- Geolocation API: https://www.w3.org/TR/geolocation-API/
- Generic Sensor API: https://www.w3.org/TR/generic-sensor/
- Web Bluetooth: https://webbluetoothcg.github.io/web-bluetooth/
- WebUSB: https://wicg.github.io/webusb/
### Assessment: SYS-REQ-34 (Block native messaging interfaces at SYS-0)
**Reference**: SYS-REQ-34 - Browser shall not expose any native messaging interfaces at SYS-0 capability level
**Given**: A conformant browser with SYS-0 capability (fully sandboxed, no system access)
**Task**: Native messaging interfaces allow extensions and web content to communicate with native applications on the host system, creating privileged channels for file access, process execution, and system command invocation. At SYS-0, these interfaces must be completely disabled to prevent sandbox escape, unauthorized native code execution, and host system compromise. Exposing native messaging contradicts zero system access policy, enabling malicious code to bypass browser security boundaries. Complete removal of native messaging APIs, configuration interfaces, and manifest support prevents these attack vectors.
**Verification**:
1. Search browser extension API documentation to verify native messaging APIs are not documented for SYS-0
2. Attempt to load an extension with native messaging permissions and verify it is rejected
3. Test extension manifest with "nativeMessaging" permission and confirm browser refuses to load it
4. Attempt to call native messaging APIs from extension context and verify they are undefined
5. Search for native messaging host configuration directories and verify they are not created or accessed
6. Test that extension installation UI does not show native messaging permission requests
7. Verify browser process does not spawn or communicate with native messaging hosts
8. Review browser API surface and confirm native messaging functions are not exposed
9. Test that browser configuration UI does not offer native messaging settings
10. Verify browser security logs do not show any native messaging connection attempts
11. Native messaging APIs undefined in extension context
12. Extensions with native messaging permissions rejected at install
13. Manifests declaring nativeMessaging fail validation
14. Native messaging host directories not accessed
15. No permission UI for native messaging shown
16. Browser does not spawn native host processes
17. API documentation excludes native messaging at SYS-0
18. Configuration UI lacks native messaging options
19. Security logs show zero native messaging attempts
20. Feature completely absent from browser capabilities
**Pass Criteria**: Native messaging APIs undefined AND extensions with native messaging rejected AND no host processes spawned AND configuration disabled
**Fail Criteria**: Native messaging APIs accessible OR extensions with permission load OR native hosts spawned OR configuration options available
**Evidence**: Extension manifest rejection logs, API availability tests showing undefined objects, process monitoring showing no native messaging hosts, configuration UI screenshots, security log analysis
**References**:
- Chrome Native Messaging: https://developer.chrome.com/docs/apps/nativeMessaging/
- Mozilla Native Messaging: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_messaging
- Browser Extension Security: https://www.w3.org/community/webextensions/
### Assessment: SYS-REQ-35 (Block host OS integration at SYS-0)
**Reference**: SYS-REQ-35 - Browser shall block all host OS integration features at SYS-0 capability level
**Given**: A conformant browser with SYS-0 capability (fully sandboxed, no system access)
**Task**: Host OS integration features including file associations, protocol handlers, OS notifications, credential storage access, certificate store integration, and system dialog invocation create pathways between sandboxed browser content and privileged OS functionality. At SYS-0, all integration must be blocked to maintain complete isolation, preventing protocol handler hijacking, file association exploits, notification spam, credential theft, and OS-level privilege escalation. Disabling OS integration prevents malicious content from escaping browser boundaries to manipulate host system configuration or access sensitive OS services.
**Verification**:
1. Attempt to register custom protocol handlers and verify registration is blocked
2. Test file type association requests and confirm they are rejected
3. Attempt to trigger OS notification API and verify it fails without permission prompts
4. Test access to OS credential storage (keychain, credential manager) and confirm it is blocked
5. Verify browser does not access or validate certificates using OS certificate store
6. Attempt to invoke OS print dialog and confirm it is unavailable or non-functional
7. Test OS share/send APIs and verify they are completely disabled
8. Attempt to register as default browser and confirm the feature is unavailable
9. Test system dialog invocation (file picker, color picker) and verify dialogs do not appear
10. Verify browser respects OS security policies but does not integrate with OS security features
11. Protocol handler registration fails
12. File association requests rejected
13. OS notifications blocked without prompts
14. Credential storage not accessible
15. OS certificate store not used
16. Print dialog unavailable
17. Share APIs disabled
18. Default browser registration blocked
19. System dialogs do not invoke
20. No OS security feature integration
**Pass Criteria**: All protocol handlers blocked AND file associations rejected AND OS notifications disabled AND credential storage inaccessible AND system dialogs blocked
**Fail Criteria**: Protocol handlers register OR file associations created OR notifications work OR credential storage accessible OR system dialogs appear
**Evidence**: Protocol registration test results, file association rejection logs, notification API failure messages, credential storage access attempts showing errors, certificate validation method analysis, dialog invocation tests
**References**:
- Custom Protocol Handlers: https://developer.mozilla.org/en-US/docs/Web/API/Navigator/registerProtocolHandler
- Web App Manifest: https://www.w3.org/TR/appmanifest/
- Notifications API: https://notifications.spec.whatwg.org/
- Credential Management API: https://www.w3.org/TR/credential-management-1/
### Assessment: SYS-REQ-36 (PWA permission scope restrictions)
**Reference**: SYS-REQ-36 - PWA permissions shall not exceed web context permissions at SYS-2 capability level
**Given**: A conformant browser with SYS-2 capability supporting Progressive Web Applications
**Task**: Progressive Web Applications installed from browsers should not gain additional permissions beyond what the same web content has in browser context, preventing PWA installation from becoming a privilege escalation vector. If PWAs automatically gain filesystem access, native API access, or reduced permission prompting not available to web contexts, malicious actors can exploit PWA installation as a persistence mechanism with elevated privileges. Enforcing permission parity ensures PWAs remain scoped to the same security model as their web origins, with identical permission requirements, prompting, and revocation.
**Verification**:
1. Open a web application in browser tab and document available API permissions
2. Install the same application as PWA and enumerate available APIs in installed context
3. Compare permission scopes between browser tab context and PWA context for camera API
4. Test microphone access in both contexts and verify identical permission prompting behavior
5. Verify geolocation API requires same user consent in PWA as in browser tab
6. Test filesystem access in browser tab and PWA, confirming equal restrictions
7. Attempt to access USB devices in both contexts and verify same permission model applies
8. Test Bluetooth API access and confirm PWAs don't bypass permission requirements
9. Verify notification permissions require same user consent regardless of install state
10. Test that PWA installation does not auto-grant any permissions that web context requires explicit consent for
11. PWA and web contexts have identical API availability
12. Camera permissions identical across contexts
13. Microphone prompts same for PWA and web
14. Geolocation requires same consent
15. Filesystem access equally restricted
16. USB permissions identical
17. Bluetooth requires same user consent
18. Notification permissions consistent
19. PWA installation grants no automatic permissions
20. Permission UI and flows identical
**Pass Criteria**: PWA permissions identical to web context AND no automatic permission grants on installation AND same permission prompting behavior
**Fail Criteria**: PWA has more permissions than web context OR installation auto-grants permissions OR PWA bypasses permission prompts
**Evidence**: Permission enumeration comparison between contexts, API availability tests, permission prompt screenshots, installation permission logs, permission revocation testing
**References**:
- Progressive Web Apps: https://web.dev/progressive-web-apps/
- Permissions API: https://www.w3.org/TR/permissions/
- PWA Security: https://www.w3.org/TR/appmanifest/#security-and-privacy
### Assessment: SYS-REQ-37 (PWA installation permission restrictions)
**Reference**: SYS-REQ-37 - PWA installation shall not auto-grant extended permissions at SYS-2 capability level
**Given**: A conformant browser with SYS-2 capability supporting Progressive Web Applications
**Task**: PWA installation must not silently grant permissions that would normally require explicit user consent during runtime, as automatic permission grants bypass user agency and create security risks. If installing a PWA automatically grants camera, microphone, geolocation, filesystem, or device API access without user awareness, malicious applications can gain surveillance and data access capabilities through social engineering of the installation flow alone. All permissions must require explicit runtime consent after installation, ensuring users understand and authorize each capability access.
**Verification**:
1. Review PWA manifest for requested permissions and capabilities
2. Install a PWA that declares camera, microphone, and location permissions in manifest
3. After installation completes, verify no permissions are automatically granted without user consent
4. Launch the installed PWA and attempt to access camera, verifying permission prompt appears
5. Test microphone access from installed PWA and confirm runtime permission required
6. Attempt geolocation access and verify user must explicitly grant consent
7. Test filesystem access and confirm permission prompt required at runtime
8. Review browser permission management UI and verify no permissions granted at install time
9. Test that PWA installation flow does not include bundled permission consent
10. Verify installation UI separates "install app" from "grant permissions" actions
11. Installation completes without granting permissions
12. Camera requires runtime permission prompt
13. Microphone requires explicit user consent after install
14. Geolocation prompts user at first access
15. Filesystem permissions not granted at install
16. Permission management UI shows no auto-grants
17. Installation flow does not include permission bundling
18. Install and permission actions are separate
19. All permissions require post-install runtime consent
20. Users can install PWA and deny all permissions
**Pass Criteria**: Installation grants no permissions AND all APIs require runtime consent AND installation UI separate from permission granting
**Fail Criteria**: Any permissions auto-granted at install OR APIs accessible without runtime prompts OR installation bundles permission consent
**Evidence**: PWA installation flow screenshots, post-install permission status checks, API access tests showing permission prompts, permission management UI state, installation logs
**References**:
- Web App Manifest: https://www.w3.org/TR/appmanifest/
- Permissions API: https://www.w3.org/TR/permissions/
- PWA Installation: https://web.dev/install-criteria/
### Assessment: SYS-REQ-38 (PWA uninstallation permission revocation)
**Reference**: SYS-REQ-38 - PWA uninstallation shall revoke all granted permissions at SYS-2 capability level
**Given**: A conformant browser with SYS-2 capability supporting Progressive Web Applications
**Task**: When users uninstall Progressive Web Applications, all previously granted permissions must be immediately revoked to prevent residual access to device capabilities, storage, and user data. If permissions persist after uninstallation, uninstalled malicious PWAs could retain background notification access, maintain filesystem handles, preserve authentication tokens, or continue data collection through background sync. Complete permission revocation with persistent storage clearing, credential removal, and registration cleanup ensures uninstallation fully removes PWA capabilities.
**Verification**:
1. Install a PWA and grant it multiple permissions (camera, microphone, notifications, location)
2. Document all granted permissions through browser permission management interface
3. Verify PWA has active notification subscriptions and background sync registrations
4. Test that PWA has access to persistent storage, service workers, and cached data
5. Uninstall the PWA through browser UI
6. Immediately after uninstall, check permission management UI to verify all permissions revoked
7. Attempt to access previously granted APIs and verify they are no longer accessible
8. Verify notification subscriptions are cancelled and no notifications delivered
9. Check that service workers are unregistered and no longer run in background
10. Verify persistent storage, IndexedDB, and cache storage are cleared or inaccessible
11. All permissions revoked after uninstall
12. Camera access no longer available
13. Microphone permissions removed
14. Notification subscriptions cancelled
15. Background sync registrations removed
16. Service workers unregistered
17. Persistent storage cleared
18. IndexedDB data removed or inaccessible
19. Cache storage cleared
20. No residual PWA capabilities remain
**Pass Criteria**: All permissions revoked on uninstall AND service workers unregistered AND persistent storage cleared AND no residual access
**Fail Criteria**: Any permissions remain after uninstall OR service workers continue running OR storage persists OR notifications still delivered
**Evidence**: Permission status before and after uninstall, service worker registration logs, storage inspection showing cleared data, notification delivery tests, background sync status checks
**References**:
- Service Workers: https://www.w3.org/TR/service-workers/
- Storage API: https://storage.spec.whatwg.org/
- Push API: https://www.w3.org/TR/push-api/
- Background Sync: https://wicg.github.io/background-sync/spec/
### Assessment: SYS-REQ-39 (PWA permission audit logging)
**Reference**: SYS-REQ-39 - Browser shall maintain audit log of all PWA permission grants and revocations at SYS-2 capability level
**Given**: A conformant browser with SYS-2 capability supporting Progressive Web Applications
**Task**: Comprehensive audit logging of PWA permission lifecycle events enables security monitoring, forensic analysis, compliance verification, and attack detection. Without detailed logs of permission grants, revocations, installation, and uninstallation events, organizations cannot detect suspicious permission requests, identify compromised applications, investigate security incidents, or demonstrate regulatory compliance. Tamper-resistant audit logs with timestamps, origin identification, permission types, and user actions provide accountability and security visibility.
**Verification**:
1. Enable audit logging in browser configuration (if optional) or verify it is enabled by default
2. Install a PWA and grant it camera and microphone permissions
3. Review audit logs and verify they contain installation event with timestamp and origin
4. Check logs for permission grant events showing camera and microphone with user action recorded
5. Revoke microphone permission through browser settings
6. Verify revocation event logged with timestamp, permission type, and user/admin action
7. Uninstall the PWA completely
8. Confirm uninstallation event appears in logs with all associated permission revocations
9. Test that logs include sufficient detail: timestamp, origin, permission type, user action, result
10. Verify logs are protected from tampering by application code or unauthorized access
11. Installation events logged with timestamp and origin
12. Permission grants recorded per API type
13. User actions (grant/deny) captured in logs
14. Permission revocations logged with details
15. Uninstallation events recorded
16. All revocations on uninstall documented
17. Logs include complete metadata (time, origin, permission, action)
18. Logs protected from tampering
19. Enterprise admins can export and analyze logs
20. Log retention policy documented and enforced
**Pass Criteria**: All PWA permission events logged AND logs include complete metadata AND logs protected from tampering AND retention policy enforced
**Fail Criteria**: Permission events not logged OR logs lack critical metadata OR logs can be tampered with OR no retention policy
**Evidence**: Audit log exports showing permission lifecycle events, log integrity verification, log access control testing, retention policy documentation, log format analysis
**References**:
- Audit Logging Best Practices: https://owasp.org/www-community/Log_Injection
- NIST Audit Logging: https://csrc.nist.gov/publications/detail/sp/800-92/final
- Browser Security Logging: https://chromium.googlesource.com/chromium/src/+/master/docs/security/audit-logging.md
### Assessment: SYS-REQ-40 (Enterprise PWA permission policy controls)
**Reference**: SYS-REQ-40 - Enterprise administrators shall be able to configure PWA permission policies at SYS-2 capability level
**Given**: A conformant browser with SYS-2 capability supporting Progressive Web Applications and enterprise policy management
**Task**: Enterprise environments require centralized control over PWA capabilities to enforce organizational security policies, prevent data exfiltration, comply with regulations, and manage risk. Without enterprise policy controls, users can install PWAs that violate corporate security standards, access sensitive device APIs, persist beyond management, or bypass security monitoring. Group policy integration with allowlist/blocklist controls, forced permission denials, and audit requirements enables IT administrators to govern PWA security posture.
**Verification**:
1. Access browser enterprise policy configuration interface (Group Policy, MDM, policy JSON)
2. Configure policy to block PWA installation from all origins except allowlisted domains
3. Attempt to install PWA from non-allowlisted origin and verify installation is blocked
4. Configure policy to deny camera permissions for all PWAs enterprise-wide
5. Install allowed PWA and attempt camera access, verifying it is blocked by policy
6. Configure policy requiring audit logging for all PWA permission events
7. Verify audit logging is enforced and cannot be disabled by users
8. Test policy to set maximum storage quota for PWAs
9. Configure policy blocking specific PWA capabilities (background sync, notifications)
10. Verify policy overrides user preferences and PWA manifest requests
11. Policy blocks non-allowlisted PWA installations
12. Camera permissions enforced denied by policy
13. Audit logging requirement cannot be bypassed
14. Storage quotas enforced per policy
15. Specific capabilities blocked as configured
16. Policy overrides user preferences
17. Policy overrides PWA manifest permissions
18. Centralized policy management available
19. Policy violations logged to enterprise monitoring
20. Users cannot circumvent policy restrictions
**Pass Criteria**: Enterprise policies enforced AND allowlist/blocklist controls work AND permission denials override user grants AND policy violations logged
**Fail Criteria**: Policies not enforced OR users can bypass restrictions OR PWAs override policy OR no violation logging
**Evidence**: Policy configuration documentation, installation blocking tests, permission denial verification, audit logs showing policy enforcement, user bypass attempt results, policy override testing
**References**:
- Chrome Enterprise Policies: https://chromeenterprise.google/policies/
- Firefox Enterprise Policies: https://github.com/mozilla/policy-templates
- Microsoft Edge Policies: https://docs.microsoft.com/en-us/deployedge/microsoft-edge-policies
- Mobile Device Management: https://www.w3.org/TR/app-manifest/#controlling-installation
### Assessment: SYS-REQ-41 (Native-equivalent API access controls at SYS-3)
**Reference**: SYS-REQ-41 - Browser shall allow native-equivalent API access with user consent at SYS-3 capability level
**Given**: A conformant browser with SYS-3 capability (native-equivalent system access)
**Task**: At SYS-3 capability, browsers enable native-equivalent API access for advanced web applications requiring deep system integration, but this access must require explicit, informed user consent to prevent abuse. Native-equivalent APIs may include direct filesystem access, arbitrary USB/serial device communication, advanced Bluetooth capabilities, or system command execution, creating significant security risks if granted without user understanding. Clear consent flows with risk warnings, per-API authorization, revocability, and audit trails balance functionality with security.
**Verification**:
1. Identify native-equivalent APIs available at SYS-3 (File System Access API, WebUSB, Serial API, etc.)
2. Attempt to access File System Access API and verify user consent prompt appears with clear warnings
3. Test that consent prompt explains the risks and capabilities being granted
4. Grant consent and verify API access is enabled for the origin
5. Revoke permission through browser settings and verify API access is blocked
6. Test WebUSB device access and confirm per-device consent prompts appear
7. Verify consent for one USB device does not grant access to all devices
8. Test Serial API access and confirm user must explicitly authorize each serial port
9. Attempt Bluetooth access beyond standard Web Bluetooth scope and verify enhanced consent required
10. Verify all native-equivalent API usage logged for security auditing
11. Native-equivalent APIs require consent prompts
12. Prompts include clear risk warnings
13. Per-API authorization required
14. Permissions can be revoked through settings
15. WebUSB requires per-device consent
16. Serial API requires per-port authorization
17. Enhanced Bluetooth requires additional consent
18. All API usage logged comprehensively
19. Consent prompts indicate SYS-3 privilege level
20. Users can deny access without breaking basic web functionality
**Pass Criteria**: Native-equivalent APIs gated by consent AND prompts include risk warnings AND per-API authorization AND permissions revocable AND usage logged
**Fail Criteria**: APIs accessible without consent OR prompts lack risk warnings OR blanket authorization granted OR permissions not revocable
**Evidence**: Consent prompt screenshots with risk warnings, permission grant/revoke testing, API access logs, per-device authorization verification, permission management UI analysis
**References**:
- File System Access API: https://wicg.github.io/file-system-access/
- WebUSB API: https://wicg.github.io/webusb/
- Web Serial API: https://wicg.github.io/serial/
- Permissions API: https://www.w3.org/TR/permissions/
### Assessment: SYS-REQ-42 (Transparent UI for native integration at SYS-3)
**Reference**: SYS-REQ-42 - Browser shall provide transparent UI for all native integration features at SYS-3 capability level
**Given**: A conformant browser with SYS-3 capability (native-equivalent system access)
**Task**: Users must have complete visibility into which web applications have native-equivalent capabilities, what system resources they access, and when access occurs, enabling informed decisions and security awareness. Without transparent UI, malicious applications can silently access filesystem, devices, or system APIs without user knowledge, facilitating data theft, surveillance, and system compromise. Comprehensive UI with active access indicators, permission management interfaces, usage history, and clear capability explanations ensures user awareness and control.
**Verification**:
1. Grant filesystem access to a web application through File System Access API
2. Verify browser UI displays active indicator when application accesses filesystem
3. Access browser permission management interface and verify it lists all granted native capabilities
4. Test that permission UI clearly explains each granted capability in user-friendly language
5. Verify browser provides usage history showing when and how native APIs were accessed
6. Test active USB device access and confirm browser shows indicator (icon, notification, or status)
7. Open serial port connection and verify browser displays active connection indicator
8. Test that users can click indicators to view details about active native API usage
9. Verify permission management UI allows users to view, modify, and revoke native capabilities
10. Test that revoking permission immediately stops API access and updates UI
11. Active filesystem access indicator visible
12. Permission management UI lists all native capabilities
13. Capabilities explained in clear language
14. Usage history accessible and detailed
15. USB access shows active indicator
16. Serial connections display connection status
17. Indicators link to detailed information
18. Users can revoke permissions through UI
19. Revocation immediately effective and reflected in UI
20. No native access occurs without UI visibility
**Pass Criteria**: Active access indicators visible AND permission management comprehensive AND usage history available AND revocation through UI functional
**Fail Criteria**: No access indicators OR permission UI incomplete OR no usage history OR revocation not available
**Evidence**: Active indicator screenshots during API usage, permission management UI documentation, usage history exports, indicator interaction testing, revocation workflow verification
**References**:
- User Interface Security: https://www.w3.org/TR/security-privacy-questionnaire/
- Browser UI Design: https://chromium.googlesource.com/chromium/src/+/master/docs/ui/
- Permission UX Best Practices: https://web.dev/permissions-ux/
### Assessment: SYS-REQ-43 (Security warnings for privileged API access at SYS-3)
**Reference**: SYS-REQ-43 - Browser shall display security warnings for privileged API access at SYS-3 capability level
**Given**: A conformant browser with SYS-3 capability (native-equivalent system access)
**Task**: Privileged API access at SYS-3 grants capabilities equivalent to native applications, including filesystem access, device control, and system integration, requiring prominent security warnings to prevent user confusion and social engineering attacks. Without clear warnings, users may not understand the security implications of granting native-equivalent access, enabling attackers to gain persistent filesystem access, device control, or system-level privileges through deceptive prompts. Warning UI with risk explanations, consequences, and alternatives helps users make informed security decisions.
**Verification**:
1. Trigger File System Access API permission request from a web application
2. Verify permission prompt includes clear security warning about filesystem access risks
3. Confirm warning explains that the site will gain ability to read/write files directly
4. Test WebUSB permission prompt and verify it warns about device control risks
5. Confirm USB warning explains potential for device firmware access and modification
6. Trigger Serial API permission and verify warning about direct hardware communication
7. Test that warnings are visually distinct (color, icons, prominence) from normal permission prompts
8. Verify warnings cannot be easily dismissed or bypassed through rapid clicking
9. Test that warnings require explicit "I understand the risks" acknowledgment
10. Verify warnings are shown on first access and periodically for ongoing privileged access
11. Filesystem access prompts include clear warnings
12. Warnings explain read/write capabilities and risks
13. USB prompts warn about device control implications
14. USB warnings note firmware access potential
15. Serial API warnings explain hardware communication risks
16. Warnings visually distinct from standard prompts
17. Dismissal requires deliberate user action
18. Explicit risk acknowledgment required
19. Warnings shown on first and periodic subsequent access