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
**Reference**: SYS-REQ-15 - Browser shall implement comprehensive security controls for WebUSB including device filtering, permission management, and secure contexts
**Given**: A conformant browser with SYS-1 or higher capability and WebUSB support
**Task**: WebUSB's comprehensive device access requires layered security controls beyond basic permission prompts to prevent exploitation of protected device classes, dangerous control transfers, and vendor-sensitive devices. Without interface class filtering, attackers could claim HID interfaces to log keystrokes or access mass storage to exfiltrate files. Control transfer validation, protected class filtering, vendor opt-out respect, and secure context requirements create defense-in-depth protection for USB device interactions.
**Verification**:
1. Test navigator.usb.getDevices() and verify only previously authorized devices returned
2. Verify protected USB classes are filtered (HID keyboards/mice, mass storage, video, audio)
3. Test USB device access requires user activation (transient user gesture)
4. Verify vendors can opt out devices via USB device descriptor
5. Test that WebUSB requires secure context (HTTPS or localhost)
6. Attempt interface claiming on protected interface classes and verify blocking
7. Test USB device connection events fire only for authorized devices
8. Verify control transfers are validated and potentially dangerous ones blocked
9. Test that permissions-policy can restrict WebUSB in iframes
10. Verify USB device access is auditable through DevTools protocol
11. Protected USB device classes are never shown in picker
12. Only secure contexts can access WebUSB API
13. User activation required for device requests
14. Previously authorized devices require getDevices() call
15. Protected interface classes cannot be claimed
16. Device connection events only for authorized devices
17. Control transfers are validated for safety
18. Permissions Policy successfully restricts WebUSB
19. DevTools shows USB activity for debugging
20. Vendor opt-out mechanism is respected
**Pass Criteria**: Protected classes filtered AND secure context required AND user activation needed AND control transfers validated
**Fail Criteria**: Protected classes available OR insecure context works OR no user activation required OR dangerous transfers allowed
**Evidence**: Device picker showing filtered devices, secure context requirement tests, protected interface class blocking logs, control transfer validation tests, Permissions Policy test results
**References**:
- WebUSB Specification: https://wicg.github.io/webusb/
- WebUSB Protected Interface Classes: https://wicg.github.io/webusb/#protected-interface-classes
- USB Implementers Forum: https://www.usb.org/
- Chrome WebUSB Security: https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/security/permissions-for-powerful-web-platform-features.md
### Assessment: SYS-REQ-16 (WebBluetooth security)
**Reference**: SYS-REQ-16 - Browser shall implement security controls for Web Bluetooth including GATT blocklist, device filtering, and permission management
**Given**: A conformant browser with SYS-1 or higher capability and Web Bluetooth support
**Task**: Web Bluetooth GATT services provide deep access to device functionality, creating risks of HID service exploitation for keystroke injection, firmware update service abuse for device bricking or malware installation, and fingerprinting through device name enumeration. Without a comprehensive GATT blocklist, malicious sites could exploit dangerous services to compromise connected devices or user privacy. GATT blocklist enforcement, service UUID filtering, device name sanitization, and secure context requirements prevent Bluetooth-based attacks.
**Verification**:
1. Test navigator.bluetooth.getDevices() returns only previously authorized devices
2. Verify GATT blocklist prevents access to dangerous services (HID, firmware update)
3. Test that Web Bluetooth requires secure context (HTTPS or localhost)
4. Verify user activation required for requestDevice() calls
5. Test service UUID filters work correctly in device selection
6. Attempt to access blocklisted GATT characteristics and verify blocking
7. Test that optional services still require user awareness
8. Verify device name filtering prevents fingerprinting
9. Test permissions-policy restricts Web Bluetooth in cross-origin iframes
10. Verify Bluetooth scanning requires explicit user permission
11. Secure context (HTTPS/localhost) required for all Web Bluetooth APIs
12. User activation required for device requests
13. GATT blocklist prevents access to dangerous services/characteristics
14. Service UUID filtering correctly limits accessible services
15. Blocklisted characteristics return errors when accessed
16. Optional services declared in requestDevice()
17. Device names sanitized to prevent fingerprinting
18. Permissions Policy successfully restricts Web Bluetooth
19. Bluetooth scanning requires separate permission
20. Only previously granted devices in getDevices()
**Pass Criteria**: Secure context required AND GATT blocklist enforced AND user activation needed AND fingerprinting prevented
**Fail Criteria**: Insecure context works OR blocklist bypassed OR no user activation required OR fingerprinting possible
**Evidence**: Secure context requirement tests, GATT blocklist enforcement logs, service UUID filtering results, fingerprinting prevention tests, Permissions Policy test results
**References**:
- Web Bluetooth Specification: https://webbluetoothcg.github.io/web-bluetooth/
- Web Bluetooth GATT Blocklist: https://github.com/WebBluetoothCG/registries/blob/master/gatt_blocklist.txt
- Bluetooth GATT Specifications: https://www.bluetooth.com/specifications/specs/
- Web Bluetooth Security Model: https://webbluetoothcg.github.io/web-bluetooth/#security-and-privacy-considerations
- Chrome Web Bluetooth Security: https://sites.google.com/a/chromium.org/dev/developers/design-documents/bluetooth-design-docs
### Assessment: SYS-REQ-17 (WebNFC permission management)
**Reference**: SYS-REQ-17 - Browser shall enforce permission controls for Web NFC API with user prompts and secure context requirements
**Given**: A conformant browser with SYS-1 or higher capability and Web NFC support
**Task**: Web NFC enables reading and writing NFC tags, creating risks of malicious tag writing to deploy phishing attacks, NFC relay attacks, unauthorized data collection from contactless payment cards, and privacy violations through persistent NFC scanning. Background NFC access could enable covert tag reading while users are unaware. Secure context requirements, permission prompts with user gestures, background operation blocking, and dangerous tag filtering prevent NFC-based attacks while enabling legitimate tag interactions.
**Verification**:
1. Test NDEFReader.scan() and verify permission prompt appears
2. Verify Web NFC requires secure context (HTTPS or localhost)
3. Test that NFC access requires user gesture for permission prompt
4. Grant NFC permission and verify scan operations work
5. Test NDEFReader.write() and verify it respects same permission
6. Verify cross-origin iframe NFC access is blocked without permission policy
7. Test permission revocation immediately stops NFC scanning
8. Verify NFC operations blocked when page in background
9. Test that dangerous NFC tag types are filtered or sandboxed
10. Verify NFC access is per-origin and isolated
11. Secure context (HTTPS/localhost) required for Web NFC
12. Permission prompt appears before NFC access granted
13. User gesture required to trigger permission prompt
14. Both scan and write operations respect same permission
15. Cross-origin iframe access blocked without delegation
16. Permission revocation stops active scans
17. Background pages cannot perform NFC operations
18. Dangerous tag operations are restricted
19. Permissions are per-origin and isolated
20. NFC indicators show when NFC is active
**Pass Criteria**: Secure context required AND permission prompt shown AND user gesture needed AND background access blocked
**Fail Criteria**: Insecure context works OR no permission prompt OR no user gesture required OR background access allowed
**Evidence**: NFC permission prompt screenshots, secure context requirement tests, user gesture verification, background access blocking tests, cross-origin test results, dangerous tag filtering verification
**References**:
- Web NFC API: https://w3c.github.io/web-nfc/
- Web NFC Security: https://w3c.github.io/web-nfc/#security-and-privacy
- NFC Forum Specifications: https://nfc-forum.org/our-work/specification-releases/
- Web NFC Explainer: https://github.com/w3c/web-nfc/blob/gh-pages/EXPLAINER.md
### Assessment: SYS-REQ-18 (Sensor API permissions)
**Reference**: SYS-REQ-18 - Browser shall enforce permission controls for Generic Sensor APIs including accelerometer, gyroscope, and magnetometer
**Given**: A conformant browser with SYS-1 or higher capability and Sensor API support
**Task**: Generic Sensor APIs expose motion and environmental data that enable fingerprinting, keylogging through motion analysis, PIN theft via accelerometer side channels, and location tracking through magnetometer readings. High-frequency sensor access amplifies these attacks by providing precise timing data for cryptographic attacks. Secure context requirements, permission controls, background operation suspension, frequency limits, and Permissions Policy enforcement prevent sensor-based attacks while enabling legitimate motion and orientation detection.
**Verification**:
1. Test Accelerometer creation and verify permission prompt or policy enforcement
2. Verify secure context required for sensor APIs
3. Test Gyroscope access and verify same permission model
4. Create Magnetometer sensor and verify permissions
5. Test that high-frequency sensor access may require additional permissions
6. Verify sensors stop when page moves to background
7. Test cross-origin iframe sensor access requires permission policy delegation
8. Verify sensor permissions are per-origin
9. Test that ambient light sensor respects privacy considerations
10. Verify sensor access can be blocked via Permissions Policy
11. Secure context required for all Sensor APIs
12. Permission prompts or policies apply before sensor access
13. High-frequency access may require explicit permission
14. Sensors automatically pause in background
15. Cross-origin access requires Permissions Policy delegation
16. Permissions are per-origin and isolated
17. Privacy-sensitive sensors have additional restrictions
18. Permissions Policy can block sensor access
19. Sensor frequency is limited to prevent fingerprinting
20. Clear user controls for sensor permissions
**Pass Criteria**: Secure context required AND permissions enforced AND background pausing works AND Permissions Policy respected
**Fail Criteria**: Insecure context works OR no permissions enforced OR background access allowed OR policy ignored
**Evidence**: Sensor permission prompt screenshots, secure context requirement tests, background pausing verification, Permissions Policy test results, frequency limiting tests, cross-origin blocking verification
**References**:
- Generic Sensor API: https://www.w3.org/TR/generic-sensor/
- Sensor Security Model: https://www.w3.org/TR/generic-sensor/#security-and-privacy
- Accelerometer API: https://www.w3.org/TR/accelerometer/
- Gyroscope API: https://www.w3.org/TR/gyroscope/
- Permissions Policy: https://www.w3.org/TR/permissions-policy-1/
### Assessment: SYS-REQ-19 (Battery Status API restrictions)
**Reference**: SYS-REQ-19 - Browser shall implement privacy restrictions for Battery Status API to prevent fingerprinting
**Given**: A conformant browser with SYS-1 or higher capability
**Task**: Battery Status API historically enabled precise device fingerprinting through battery level, charging time, and discharge rate patterns that uniquely identify devices across browsing sessions and origins. High-precision battery data combined with timing information creates a persistent tracking identifier resistant to cookie deletion. Rounding battery levels, quantizing timing data, throttling updates, and rate limiting prevent battery-based fingerprinting while providing sufficient information for legitimate power management features.
**Verification**:
1. Test navigator.getBattery() and observe battery information returned
2. Verify battery level is rounded to prevent high-precision fingerprinting
3. Test battery timing information is quantized to prevent tracking
4. Verify battery status updates are throttled
5. Test that battery information is not available in insecure contexts
6. Verify battery status in cross-origin iframes requires permission policy
7. Test that frequent battery queries are rate-limited
8. Verify battery API can be disabled via browser settings or policy
9. Test that battery charging state changes are debounced
10. Verify no access to detailed battery analytics or history
11. Battery level rounded to coarse granularity (e.g., 1% or 5%)
12. Timing information quantized to prevent precise measurements
13. Update frequency throttled to prevent tracking
14. Secure context recommended for battery API access
15. Cross-origin access requires Permissions Policy
16. Rate limiting prevents rapid polling
17. Battery API can be disabled by user/policy
18. Charging state changes debounced
19. No historical battery data exposed
20. API surface minimized for privacy
**Pass Criteria**: Battery data quantized AND updates throttled AND rate limiting enforced AND no detailed analytics exposed
**Fail Criteria**: Precise battery data OR no throttling OR no rate limiting OR historical data exposed
**Evidence**: Battery level precision tests, timing quantization measurements, update frequency analysis, rate limiting verification, cross-origin test results, privacy analysis reports
**References**:
- Battery Status API: https://www.w3.org/TR/battery-status/
- Battery API Privacy Concerns: https://www.w3.org/TR/battery-status/#privacy-considerations
- Web API Privacy: https://www.w3.org/TR/fingerprinting-guidance/
- Chrome Battery Status: https://chromestatus.com/feature/4537134732017664
### Assessment: SYS-REQ-20 (Hardware resource limits)
**Reference**: SYS-REQ-20 - Browser shall enforce resource limits to prevent excessive consumption of CPU, memory, and system resources
**Given**: A conformant browser with SYS-1 or higher capability
**Task**: Unrestricted hardware resource consumption enables denial-of-service attacks that freeze browsers, crash systems, drain battery, or make devices unusable through memory exhaustion, CPU monopolization, or GPU resource depletion. Malicious scripts with infinite loops or excessive allocations can render browsers unresponsive. Per-origin resource limits, background throttling, script timeouts, and memory quotas prevent resource-based DoS attacks while maintaining browser and system responsiveness.
**Verification**:
1. Create test page that attempts to allocate excessive memory and verify limits
2. Test CPU-intensive operations and verify throttling or limits applied
3. Monitor browser resource usage with intensive JavaScript loops
4. Test WebWorker resource limits and verify isolation
5. Verify background tab resource throttling is active
6. Test WebAssembly memory limits and verify enforcement
7. Monitor GPU memory usage and verify limits on WebGL contexts
8. Test that runaway scripts trigger timeout warnings or termination
9. Verify resource limits apply per-origin or per-process
10. Test that browser remains responsive under resource pressure
11. Memory allocation limits prevent excessive consumption
12. CPU-intensive operations are throttled
13. Background tabs have reduced resource quotas
14. WebWorkers have separate resource limits
15. WebAssembly memory is bounded and enforced
16. GPU memory limits prevent resource exhaustion
17. Script timeouts prevent infinite loops
18. Resource limits are per-origin or per-process
19. Browser UI remains responsive under load
20. User can terminate runaway processes/tabs
**Pass Criteria**: Memory limits enforced AND CPU throttling active AND background throttling works AND script timeouts prevent hangs
**Fail Criteria**: No memory limits OR no CPU throttling OR background tabs not throttled OR scripts can hang indefinitely
**Evidence**: Memory allocation test results, CPU usage graphs showing throttling, background tab resource measurements, WebWorker limit tests, script timeout logs, browser responsiveness tests
**References**:
- WebAssembly Memory: https://webassembly.github.io/spec/core/syntax/modules.html#memories
- Script Execution Limits: https://html.spec.whatwg.org/multipage/webappapis.html#long-tasks
- 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
## 6.8 Embedded Browser Security Assessments
This section covers assessment procedures for requirements EMB-REQ-1 through EMB-REQ-32, addressing the unique security challenges of embedded browsers (WebView components, browser engines integrated into native applications). These assessments focus on JavaScript bridge security, native API exposure control, content source trust management, and host application boundary protection.
### Assessment: EMB-REQ-1 (JavaScript bridge API allowlists)
**Reference**: EMB-REQ-1 - JavaScript bridges shall implement explicit allowlists of exposed native APIs with per-API access controls
**Given**: A conformant embedded browser with JavaScript bridge capability (EMB-1 or higher)
**Task**: JavaScript bridges expose native device APIs to web content, creating critical attack surfaces where unrestricted API exposure enables privilege escalation, data exfiltration, malware installation, and complete device compromise. Without explicit allowlists, malicious web content can invoke any native API through reflection or dynamic invocation. Explicit API allowlisting with per-API access controls, runtime immutability, reflection blocking, and comprehensive logging prevents bridge-based attacks while enabling controlled native functionality.
**Verification**:
1. Review the embedded browser's JavaScript bridge configuration and implementation code
2. Identify all native APIs exposed to web content through the JavaScript bridge
3. Verify that an explicit allowlist mechanism exists (configuration file, API declaration, or programmatic registration)
4. Attempt to call native APIs that are not in the allowlist from web content
5. Verify that per-API access controls exist (e.g., origin-based restrictions, permission requirements)
6. Test that the allowlist cannot be modified by web content at runtime
7. Attempt to use reflection or dynamic invocation to bypass the allowlist
8. Verify that the bridge logs all API access attempts including denied attempts
9. JavaScript bridge exposes only explicitly allowlisted native APIs
10. Configuration files or code clearly declare which APIs are accessible
11. Per-API access controls restrict which origins or contexts can call each API
12. Attempts to call non-allowlisted APIs result in errors or exceptions
13. Web content cannot modify the API allowlist at runtime
14. Reflection or dynamic method invocation does not bypass allowlist enforcement
15. All API access attempts are logged for security auditing
**Pass Criteria**: Only explicitly allowlisted APIs are callable from web content AND per-API access controls are enforced AND allowlist cannot be modified by web content
**Fail Criteria**: Any non-allowlisted API is callable OR access controls are bypassable OR web content can modify the allowlist
**Evidence**: JavaScript bridge configuration files, implementation code review, test results showing blocked API calls, security logs showing denied access attempts, penetration test reports
**References**:
- OWASP Mobile Top 10 - M1: Improper Platform Usage: https://owasp.org/www-project-mobile-top-10/
- Android WebView addJavascriptInterface Security: https://developer.android.com/reference/android/webkit/WebView#addJavascriptInterface(java.lang.Object,%20java.lang.String)
- iOS WKWebView Configuration: https://developer.apple.com/documentation/webkit/wkwebviewconfiguration
- Electron Context Bridge: https://www.electronjs.org/docs/latest/api/context-bridge
- CWE-749: Exposed Dangerous Method or Function: https://cwe.mitre.org/data/definitions/749.html
### Assessment: EMB-REQ-2 (JavaScript bridge input validation)
**Reference**: EMB-REQ-2 - All data crossing the JavaScript bridge shall be validated, sanitized, and type-checked on the native side
**Given**: A conformant embedded browser with JavaScript bridge capability (EMB-1 or higher)
**Task**: JavaScript bridge parameters originate from untrusted web content and can contain injection payloads, type confusion attacks, buffer overflows, path traversal sequences, or prototype pollution that exploit native code vulnerabilities. Without comprehensive validation, attackers can achieve SQL injection into native databases, command injection for arbitrary code execution, or path traversal to access sensitive files. Native-side validation with type checking, sanitization, range checking, and path canonicalization prevents injection attacks across the trust boundary.
**Verification**:
1. Identify all native APIs exposed via JavaScript bridge that accept parameters
2. For each API, review the native-side validation and sanitization logic
3. Create test cases with malicious inputs: SQL injection strings, path traversal sequences, command injection payloads, excessively long strings, null bytes, Unicode exploits
4. Invoke bridge APIs with malformed data: wrong types, missing parameters, extra parameters, null values, undefined values
5. Attempt to pass JavaScript objects with prototype pollution characteristics
6. Test that numeric parameters are range-checked and validated
7. Verify that file paths are canonicalized and validated before use
8. Confirm that validation failures trigger errors and logging rather than silent failures
9. All bridge API parameters undergo validation on the native side before processing
10. Type checking rejects parameters of incorrect types
11. String sanitization removes or escapes dangerous characters
12. Numeric parameters are range-checked
13. File paths are validated and canonicalized
14. Malicious inputs trigger validation errors without causing security issues
15. Validation failures are logged with sufficient detail for security monitoring
16. No SQL injection, command injection, or path traversal vulnerabilities exist
**Pass Criteria**: All bridge parameters are validated, sanitized, and type-checked AND malicious inputs are rejected safely AND validation failures are logged
**Fail Criteria**: Any injection vulnerability exists OR type checking is missing OR validation can be bypassed
**Evidence**: Code review showing validation logic, penetration test results, fuzzing test results, validation error logs, security assessment reports
**References**:
- OWASP Input Validation Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html
- CWE-20: Improper Input Validation: https://cwe.mitre.org/data/definitions/20.html
- CWE-89: SQL Injection: https://cwe.mitre.org/data/definitions/89.html
- CWE-78: OS Command Injection: https://cwe.mitre.org/data/definitions/78.html
- Android WebView Security Best Practices: https://developer.android.com/develop/ui/views/layout/webapps/webview#security
### Assessment: EMB-REQ-3 (JavaScript bridge logging)
**Reference**: EMB-REQ-3 - JavaScript bridge communications shall be logged with sufficient detail for security auditing
**Given**: A conformant embedded browser with JavaScript bridge capability (EMB-1 or higher)
**Task**: JavaScript bridge logging is critical for detecting and investigating attacks where malicious web content attempts to exploit native APIs through the bridge. Without comprehensive audit logs, security teams cannot detect unauthorized API access, track attack patterns, or investigate security incidents. Proper logging of all bridge communications enables security monitoring systems to identify suspicious patterns such as repeated failed API calls, attempts to access restricted functionality, or unusual parameter values that may indicate injection attacks or reconnaissance activities.
**Verification**:
1. Configure the embedded browser to enable JavaScript bridge logging
2. Invoke various bridge APIs from web content
3. Review the generated logs and verify they contain: API name, timestamp, calling origin, parameters (with sensitive data redacted), return values, success/failure status
4. Attempt to call blocked or restricted APIs and verify denials are logged
5. Generate high-volume bridge traffic and verify logging continues without loss
6. Test that sensitive data (passwords, tokens) is redacted from logs
7. Verify logs are stored securely with appropriate access controls
8. Confirm log retention policies are documented and enforced
9. All JavaScript bridge API invocations are logged
10. Logs include sufficient context for security analysis (API, origin, timestamp)
11. Both successful and failed API calls are logged
12. Sensitive parameters are redacted or hashed in logs
13. Logs are tamper-resistant with integrity protection
14. Log retention policies balance security needs and privacy requirements
15. Logs are accessible to security monitoring systems
**Pass Criteria**: All bridge API calls are logged with sufficient detail AND sensitive data is redacted AND logs have integrity protection
**Fail Criteria**: API calls are not logged OR insufficient detail is recorded OR sensitive data appears in plaintext
**Evidence**: Log samples showing bridge API calls, log configuration files, security monitoring dashboards, log retention policy documentation
**References**:
- OWASP Logging Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html
- NIST SP 800-92: Guide to Computer Security Log Management: https://csrc.nist.gov/publications/detail/sp/800-92/final
- CWE-778: Insufficient Logging: https://cwe.mitre.org/data/definitions/778.html
### Assessment: EMB-REQ-4 (Context isolation)
**Reference**: EMB-REQ-4 - Embedded browsers shall implement context isolation to prevent web content from accessing host application objects
**Given**: A conformant embedded browser with context isolation capability (EMB-1 or higher)
**Task**: Context isolation is essential to prevent malicious web content from breaking out of its sandbox and directly accessing host application objects, which could lead to privilege escalation, data theft, or code execution in the host application context. Without proper isolation, attackers can enumerate the JavaScript global namespace to discover and exploit unintended host APIs, access sensitive application data structures, or manipulate host application behavior through prototype pollution. This boundary violation represents one of the most critical security threats in embedded browser architectures.
**Verification**:
1. Load web content in the embedded browser
2. From web content JavaScript, attempt to access global objects that might belong to the host: `window.hostApp`, `window.native`, `window.android`, `window.nativeInterface`, etc.
3. Attempt to enumerate window properties to discover host-exposed objects
4. Test if web content can access Node.js globals (if applicable): `process`, `require`, `Buffer`, `global`
5. Verify that the JavaScript bridge API is the only official communication channel
6. Test that prototype pollution cannot affect host application objects
7. Confirm that context isolation is enforced even for trusted content origins
8. Verify that iframes inherit context isolation from the parent
9. Web content cannot access host application objects directly
10. Global namespace pollution from host application is prevented
11. Node.js globals (if applicable) are not accessible to web content
12. Only explicitly exposed JavaScript bridge APIs are accessible
13. Window property enumeration does not reveal internal objects
14. Prototype pollution attacks do not affect host application
15. Context isolation applies to all embedded content regardless of origin
**Pass Criteria**: Web content has no direct access to host objects AND only official bridge APIs are accessible
**Fail Criteria**: Any host application object is directly accessible from web content OR context isolation can be bypassed
**Evidence**: Penetration test results showing blocked access attempts, code review of context isolation implementation, test scripts attempting to access host objects, browser console showing security errors
**References**:
- Electron Context Isolation: https://www.electronjs.org/docs/latest/tutorial/context-isolation
- Chromium Isolated Worlds: https://chromium.googlesource.com/chromium/src/+/master/third_party/blink/renderer/bindings/core/v8/V8BindingDesign.md#Isolated-World
- iOS WKWebView JavaScript Isolation: https://developer.apple.com/documentation/webkit/wkwebview
- Android WebView Isolation: https://developer.android.com/reference/android/webkit/WebView
### Assessment: EMB-REQ-5 (User consent for sensitive APIs)
**Reference**: EMB-REQ-5 - Native APIs exposed via JavaScript bridges shall require explicit user consent for sensitive operations
**Given**: A conformant embedded browser exposing sensitive APIs via JavaScript bridge (EMB-2 or higher)
**Task**: User consent for sensitive APIs is critical to prevent malicious web content from silently accessing privacy-sensitive functionality like camera, microphone, location, files, or contacts without the user's knowledge. Without explicit consent requirements, attackers can exploit JavaScript bridge APIs to exfiltrate sensitive data, track user location, or access private information. Proper consent mechanisms protect users from invisible attacks where compromised or malicious web content attempts unauthorized access to device capabilities that could violate user privacy or security expectations.
**Verification**:
1. Identify all sensitive operations exposed via the JavaScript bridge (e.g., file access, location, camera, contacts, payments)
2. Attempt to invoke sensitive APIs from web content without prior user consent
3. Verify that a clear, non-dismissible consent dialog appears for each sensitive operation
4. Test that consent dialogs clearly identify the requesting origin and the specific permission being requested
5. Verify that consent can be granted permanently, temporarily (session-only), or denied
6. Test that denied permissions are enforced consistently
7. Verify that users can revoke previously granted permissions
8. Confirm that consent state persists across browser sessions according to user choice
9. Sensitive API calls trigger user consent prompts before execution
10. Consent dialogs clearly identify the origin and permission type
11. Users can grant, deny, or revoke permissions
12. Denied permissions prevent API execution
13. Consent state is properly persisted and enforced
14. No sensitive operations occur without explicit user consent
15. Consent UI cannot be spoofed or bypassed by web content
**Pass Criteria**: All sensitive API calls require explicit user consent AND consent UI is clear and non-spoofable AND permission state is properly enforced
**Fail Criteria**: Any sensitive operation occurs without user consent OR consent UI is bypassable OR permissions are not enforced
**Evidence**: Screenshots of consent dialogs, test results showing blocked operations without consent, user consent audit logs, permission state persistence verification
**References**:
- Android Runtime Permissions: https://developer.android.com/training/permissions/requesting
- iOS Permission Prompts: https://developer.apple.com/design/human-interface-guidelines/patterns/accessing-private-data
- W3C Permissions API: https://www.w3.org/TR/permissions/
### Assessment: EMB-REQ-6 (No system-level API exposure without controls)
**Reference**: EMB-REQ-6 - Host applications shall not expose system-level APIs (file system, process execution, native module loading) through JavaScript bridges without additional security controls