Newer
Older
10001
10002
10003
10004
10005
10006
10007
10008
10009
10010
10011
10012
10013
10014
10015
10016
10017
10018
10019
10020
10021
10022
10023
10024
10025
10026
10027
10028
10029
10030
10031
10032
10033
10034
10035
10036
10037
10038
10039
10040
10041
10042
10043
10044
10045
10046
10047
10048
10049
10050
10051
10052
10053
10054
10055
10056
10057
10058
10059
10060
10061
10062
10063
10064
10065
10066
10067
10068
10069
10070
10071
10072
10073
10074
10075
10076
10077
10078
10079
10080
10081
10082
10083
10084
10085
10086
10087
10088
10089
10090
10091
10092
10093
10094
10095
10096
10097
10098
10099
10100
10101
10102
10103
10104
10105
10106
10107
10108
10109
10110
10111
10112
10113
10114
10115
10116
10117
10118
10119
10120
10121
10122
10123
10124
10125
10126
10127
10128
10129
10130
10131
10132
10133
10134
10135
10136
10137
10138
10139
10140
10141
10142
10143
10144
10145
10146
10147
10148
10149
10150
10151
10152
10153
10154
10155
10156
10157
10158
10159
10160
10161
10162
10163
10164
10165
10166
10167
10168
10169
10170
10171
10172
10173
10174
10175
10176
10177
10178
10179
10180
10181
10182
10183
10184
10185
10186
10187
10188
10189
10190
10191
10192
10193
10194
10195
10196
10197
10198
10199
10200
10201
10202
10203
10204
10205
10206
10207
10208
10209
10210
10211
10212
10213
10214
10215
10216
10217
10218
10219
10220
10221
10222
10223
10224
10225
10226
10227
10228
10229
10230
10231
10232
10233
10234
10235
10236
10237
10238
10239
10240
10241
10242
10243
10244
10245
10246
10247
10248
10249
10250
10251
10252
10253
10254
10255
10256
10257
10258
10259
10260
10261
10262
10263
10264
10265
10266
10267
10268
10269
10270
10271
10272
10273
10274
10275
10276
10277
10278
10279
10280
10281
10282
10283
10284
10285
10286
10287
10288
10289
10290
10291
10292
10293
10294
10295
10296
10297
10298
10299
10300
10301
10302
10303
10304
10305
10306
10307
10308
10309
10310
10311
10312
10313
10314
10315
10316
10317
10318
10319
10320
10321
10322
10323
10324
10325
10326
10327
10328
10329
10330
10331
10332
10333
10334
10335
10336
10337
10338
10339
10340
10341
10342
10343
10344
10345
10346
10347
10348
10349
10350
10351
10352
10353
10354
10355
10356
10357
10358
10359
10360
10361
10362
10363
10364
10365
10366
10367
10368
10369
10370
10371
10372
10373
10374
10375
10376
10377
10378
10379
10380
10381
10382
10383
10384
10385
10386
10387
10388
10389
10390
10391
10392
10393
10394
10395
10396
10397
10398
10399
10400
10401
10402
10403
10404
10405
10406
10407
10408
10409
10410
10411
10412
10413
10414
10415
10416
10417
10418
10419
10420
10421
10422
10423
10424
10425
10426
10427
10428
10429
10430
10431
10432
10433
10434
10435
10436
10437
10438
10439
10440
10441
10442
10443
10444
10445
10446
10447
10448
10449
10450
10451
10452
10453
10454
10455
10456
10457
10458
10459
10460
10461
10462
10463
10464
10465
10466
10467
10468
10469
10470
10471
10472
10473
10474
10475
10476
10477
10478
10479
10480
10481
10482
10483
10484
10485
10486
10487
10488
10489
10490
10491
10492
10493
10494
10495
10496
10497
10498
10499
10500
10501
10502
10503
10504
10505
10506
10507
10508
10509
10510
10511
10512
10513
10514
10515
10516
10517
10518
10519
10520
10521
10522
10523
10524
10525
10526
10527
10528
10529
10530
10531
10532
10533
10534
10535
10536
10537
10538
10539
10540
10541
10542
10543
10544
10545
10546
10547
10548
10549
10550
10551
10552
10553
10554
10555
10556
10557
10558
10559
10560
10561
10562
10563
10564
10565
10566
10567
10568
10569
10570
10571
10572
10573
10574
10575
10576
10577
10578
10579
10580
10581
10582
10583
10584
10585
10586
10587
10588
10589
10590
10591
10592
10593
10594
10595
10596
10597
10598
10599
10600
10601
10602
10603
10604
10605
10606
10607
10608
10609
10610
10611
10612
10613
10614
10615
10616
10617
10618
10619
10620
10621
10622
10623
10624
10625
10626
10627
10628
10629
10630
10631
10632
10633
10634
10635
10636
10637
10638
10639
10640
10641
10642
10643
10644
10645
10646
10647
10648
10649
10650
10651
10652
10653
10654
10655
10656
10657
10658
10659
10660
10661
10662
10663
10664
10665
10666
10667
10668
10669
10670
10671
10672
10673
10674
10675
10676
10677
10678
10679
10680
10681
10682
10683
10684
10685
10686
10687
10688
10689
10690
10691
10692
10693
10694
10695
10696
10697
10698
10699
10700
10701
10702
10703
10704
10705
10706
10707
10708
10709
10710
10711
10712
10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
8. Monitor overall system CPU and verify browser doesn't exceed limits → Users can terminate high-CPU tabs easily
9. Test that users can identify and terminate high-CPU tabs → System CPU usage remains reasonable under load
10. Verify CPU priority scheduling favors foreground/visible content → 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 → Connection limits enforced per origin (6-10 connections)
2. Monitor network usage per origin using browser DevTools Network panel → HTTP/2 stream limits enforced (max concurrent streams)
3. Test connection limits per origin (typically 6-10 connections) → Background tabs have reduced network priority
4. Verify HTTP/2 and HTTP/3 multiplexing limits → WebSocket connections limited per origin
5. Test bandwidth throttling for background tabs → Large transfers pausable and cancellable
6. Verify WebSocket connection limits per origin → Connection pooling prevents excessive sockets
7. Test that large downloads can be paused or cancelled → Browser task manager shows network usage per tab
8. Monitor overall browser network usage and verify limits → Network throttling options available in DevTools
9. Test that fetch() requests respect connection pooling limits → Overall browser network reasonable under load
10. Verify users can identify and control network-heavy tabs → 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 → Storage quotas enforced per-origin (typically 50-100MB default)
2. Attempt to exceed storage quota using IndexedDB and verify QuotaExceededError → StorageManager API accurately reports usage and quota
3. Test localStorage quota limits (typically 5-10MB) → QuotaExceededError thrown when limits reached
4. Verify Cache API respects storage quota → localStorage limited to 5-10MB per origin
5. Test that storage quota is per-origin and isolated → Cache API storage counted toward quota
6. Verify persistent storage requires explicit user permission → Persistent storage requires user permission
7. Test that storage usage is accurately reported in browser settings → Browser settings show per-origin storage usage
8. Verify storage can be cleared per-origin by user → Users can clear storage per-origin
9. Test that incognito/private mode has separate, limited storage → Incognito mode has separate, limited quota
10. Verify storage quota warnings or prompts for large allocations → 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 → Foreground tabs run at higher OS process priority
2. Verify foreground tab processes have higher priority than background → Background tabs run at reduced priority (low or below normal)
3. Test that audio-playing tabs maintain elevated priority → Audio-playing tabs maintain adequate priority
4. Verify visible tabs have higher priority than hidden tabs → Priority changes dynamically when switching tabs
5. Test process priority changes when switching tabs → CPU scheduler gives preference to high-priority processes
6. Monitor CPU scheduling and verify foreground processes get preference → Extension processes have appropriate priority
7. Test that extension processes have appropriate priority → Utility processes prioritized by criticality
8. Verify utility processes (network, GPU) have appropriate priority → Frozen tabs have lowest priority
9. Test that frozen background tabs have lowest priority → No process starvation occurs
10. Verify process priorities don't allow starvation → 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 → Multiple sandbox layers (syscall filter, namespace isolation, capability dropping)
2. Test syscall filtering using strace/dtruss to verify blocked calls → Dangerous syscalls blocked (execve, ptrace, mount, etc.)
3. Attempt known sandbox escape techniques and verify they're mitigated → IPC messages validated in broker process
4. Verify IPC validation prevents malformed messages from escaping sandbox → Process debugging APIs blocked
5. Test that renderer processes cannot ptrace or debug other processes → Memory corruption contained within sandbox
6. Verify memory corruption in renderer doesn't allow privilege escalation → GPU sandbox independent from renderer
7. Test that GPU process sandbox is separate from renderer sandbox → Kernel exploit mitigations active (SMEP, SMAP, KPTI)
8. Verify kernel exploit mitigations (SMEP, SMAP, KPTI) are active → Regular fuzzing for sandbox bypasses
9. Test fuzzing results for sandbox bypass vulnerabilities → Security updates address known escapes
10. Verify security updates address discovered sandbox escapes → 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 → Site Isolation active for all sites or at least sensitive origins
2. Test that high-resolution timers are reduced precision (performance.now() granularity) → Timer precision reduced to 100 microseconds or coarser
3. Verify SharedArrayBuffer requires cross-origin isolation headers → SharedArrayBuffer requires COOP+COEP headers
4. Test that cross-origin data is not accessible in same process → Cross-origin data in separate processes
5. Verify CORB (Cross-Origin Read Blocking) prevents sensitive data leaks → CORB blocks cross-origin reads of sensitive MIME types
6. Test that speculative execution cannot leak cross-origin data → Spectre PoC exploits fail to leak data
7. Verify process-per-site-instance isolation for sensitive origins → Process-per-site-instance for banks, login pages
8. Test that COOP/COEP headers enable process isolation → COOP/COEP enable strict process isolation
9. Verify kernel page-table isolation (KPTI) is active on system → KPTI active on vulnerable systems
10. Test that Spectre PoC exploits are mitigated → 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 → Timer precision reduced (100 microseconds or coarser)
2. Verify SharedArrayBuffer is disabled or requires isolation headers → SharedArrayBuffer requires COOP+COEP isolation
3. Test that cache timing attacks are mitigated through process isolation → Process isolation prevents cache-based side channels
4. Verify rendering timing cannot leak cross-origin information → Rendering timing doesn't leak cross-origin data
5. Test that event loop timing is not exploitable for side channels → Event loop timing not exploitable
6. Verify CSS timing attacks are mitigated (e.g., :visited link timing) → :visited link styling restricted to prevent timing attacks
7. Test that network timing doesn't leak cross-origin data → Network timing (Resource Timing API) sanitized for cross-origin
8. Verify SVG filter timing attacks are prevented → SVG filter timing attacks mitigated
9. Test that WebGL cannot be used for timing side channels → WebGL timing attacks prevented through various restrictions
10. Verify fingerprinting surfaces are minimized or permissions-gated → 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) → WebAuthn requires secure context (HTTPS or localhost)
2. Verify registration requires HTTPS context (except localhost) → User verification enforced when requested by relying party
3. Test that user verification (PIN/biometric) is enforced when required → Attestation validation prevents cloned/fake authenticators
4. Verify authenticator attestation is validated correctly → Credentials strictly origin-bound (site isolation)
5. Test that credentials are origin-bound and not accessible cross-origin → User presence required (physical interaction)
6. Verify user presence is required (physical touch/button press) → CTAP2 protocol correctly implemented
7. Test that CTAP2 protocol is properly implemented for FIDO2 devices → Extensions cannot intercept or modify WebAuthn
8. Verify browser extensions cannot intercept WebAuthn operations → Users choose authenticator from picker
9. Test that authenticator selection respects user choice → Platform authenticators use OS-level secure enclaves
10. Verify platform authenticators (Touch ID, Windows Hello) are isolated → 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) → Accessibility API access requires OS-level permission
2. Verify browser exposes accessibility tree to authorized assistive technology only → Only authorized assistive technology can access accessibility tree
3. Test that accessibility API requires user opt-in or OS-level permission → Sensitive content (passwords) properly masked in accessibility tree
4. Verify accessibility tree doesn't leak sensitive data (passwords, hidden content) → Cross-origin content has limited accessibility exposure
5. Test that cross-origin content has restricted accessibility exposure → Accessibility events sanitized to prevent leakage
6. Verify accessibility events don't leak timing or user interaction information → Remote accessibility requires authentication
7. Test that remote accessibility access (enterprise tools) requires authentication → Accessibility API cannot be used for fingerprinting
8. Verify accessibility API cannot be abused for fingerprinting → ARIA attributes don't leak sensitive information
9. Test that ARIA attributes don't leak security-sensitive information → Accessibility access auditable
10. Verify screen reader access is logged for security auditing → 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 → nativeMessaging permission required in manifest
2. Verify extension requires explicit permission declaration in manifest → Native host is registered in browser's native messaging directory
3. Test that native messaging host is registered with browser → Only permitted extensions (by ID) can connect to host
4. Verify only explicitly allowed extensions can communicate with native host → User should manually install native host application
5. Test that native messaging requires user installation of native component → Messages validated by browser before passing to/from host
6. Verify message validation occurs on browser side → Native host runs with limited OS privileges
7. Test that native host process runs with limited privileges → Extension sandbox not bypassed via native messaging
8. Verify native messaging cannot bypass extension sandbox → Extension uninstall terminates native connections
9. Test that uninstalling extension terminates native messaging connections → Enterprise policies can control native messaging
10. Verify enterprise policies can restrict or acceptlist native messaging → 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 → OS credential storage accessed securely (encrypted IPC)
2. Verify browser uses OS certificate store with proper validation → OS certificate store used with proper validation
3. Test OS notification integration respects permission model → OS notifications require permission and are per-origin
4. Verify file type association handlers are validated and sandboxed → File associations validated before handler invocation
5. Test protocol handler registration requires user confirmation → Protocol handlers require user confirmation
6. Verify OS-level print dialog prevents renderer access to print system → Print system accessed via broker, not renderer
7. Test that OS share APIs require user gesture and confirmation → OS share APIs require user gesture
8. Verify browser respects OS security policies (AppLocker, Gatekeeper, SELinux) → Browser respects OS security policies
9. Test that browser updates use OS-level signature verification → Updates verified with OS-level signatures
10. Verify browser profile directories use OS access controls → 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 shall 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 → All camera access requests fail without user prompting
2. Test microphone access requests and confirm they fail immediately without permission prompts → All microphone requests fail immediately
3. Attempt to access geolocation API and verify it returns an error without prompting → Geolocation API returns error without permission dialogs
4. Test device motion and orientation sensor APIs and confirm they are blocked → Motion and orientation sensors blocked
5. Attempt to access ambient light sensor API and verify it is unavailable → Ambient light sensor unavailable
6. Test battery status API access and confirm it is blocked → Battery status API blocked
7. Verify proximity sensor API is not available at SYS-0 level → Proximity sensor not exposed
8. Test vibration API and confirm it is blocked or returns immediately without effect → Vibration API disabled or no-op
9. Attempt to access NFC, Bluetooth, and USB APIs and verify they are completely unavailable → NFC, Bluetooth, USB APIs completely unavailable
10. Verify that permission UI for all device APIs is disabled and not rendered → 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 shall 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 → Native messaging APIs undefined in extension context
2. Attempt to load an extension with native messaging permissions and verify it is rejected → Extensions with native messaging permissions rejected at install
3. Test extension manifest with "nativeMessaging" permission and confirm browser refuses to load it → Manifests declaring nativeMessaging fail validation
4. Attempt to call native messaging APIs from extension context and verify they are undefined → Native messaging host directories not accessed
5. Search for native messaging host configuration directories and verify they are not created or accessed → No permission UI for native messaging shown
6. Test that extension installation UI does not show native messaging permission requests → Browser does not spawn native host processes
7. Verify browser process does not spawn or communicate with native messaging hosts → API documentation excludes native messaging at SYS-0
8. Review browser API surface and confirm native messaging functions are not exposed → Configuration UI lacks native messaging options
9. Test that browser configuration UI does not offer native messaging settings → Security logs show zero native messaging attempts
10. Verify browser security logs do not show any native messaging connection attempts → 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 shall 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 → Protocol handler registration fails
2. Test file type association requests and confirm they are rejected → File association requests rejected
3. Attempt to trigger OS notification API and verify it fails without permission prompts → OS notifications blocked without prompts
4. Test access to OS credential storage (keychain, credential manager) and confirm it is blocked → Credential storage not accessible
5. Verify browser does not access or validate certificates using OS certificate store → OS certificate store not used
6. Attempt to invoke OS print dialog and confirm it is unavailable or non-functional → Print dialog unavailable
7. Test OS share/send APIs and verify they are completely disabled → Share APIs disabled
8. Attempt to register as default browser and confirm the feature is unavailable → Default browser registration blocked
9. Test system dialog invocation (file picker, color picker) and verify dialogs do not appear → System dialogs do not invoke
10. Verify browser respects OS security policies but does not integrate with OS security features → 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 → PWA and web contexts have identical API availability
2. Install the same application as PWA and enumerate available APIs in installed context → Camera permissions identical across contexts
3. Compare permission scopes between browser tab context and PWA context for camera API → Microphone prompts same for PWA and web
4. Test microphone access in both contexts and verify identical permission prompting behavior → Geolocation requires same consent
5. Verify geolocation API requires same user consent in PWA as in browser tab → Filesystem access equally restricted
6. Test filesystem access in browser tab and PWA, confirming equal restrictions → USB permissions identical
7. Attempt to access USB devices in both contexts and verify same permission model applies → Bluetooth requires same user consent
8. Test Bluetooth API access and confirm PWAs don't bypass permission requirements → Notification permissions consistent
9. Verify notification permissions require same user consent regardless of install state → PWA installation grants no automatic permissions
10. Test that PWA installation does not auto-grant any permissions that web context requires explicit consent for → 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 should 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 shall require explicit runtime consent after installation, ensuring users understand and authorize each capability access.
**Verification**:
1. Review PWA manifest for requested permissions and capabilities → Installation completes without granting permissions
2. Install a PWA that declares camera, microphone, and location permissions in manifest → Camera requires runtime permission prompt
3. After installation completes, verify no permissions are automatically granted without user consent → Microphone requires explicit user consent after install
4. Launch the installed PWA and attempt to access camera, verifying permission prompt appears → Geolocation prompts user at first access
5. Test microphone access from installed PWA and confirm runtime permission required → Filesystem permissions not granted at install
6. Attempt geolocation access and verify user should explicitly grant consent → Permission management UI shows no auto-grants
7. Test filesystem access and confirm permission prompt required at runtime → Installation flow does not include permission bundling
8. Review browser permission management UI and verify no permissions granted at install time → Install and permission actions are separate
9. Test that PWA installation flow does not include bundled permission consent → All permissions require post-install runtime consent
10. Verify installation UI separates "install app" from "grant permissions" actions → 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 shall 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) → All permissions revoked after uninstall
2. Document all granted permissions through browser permission management interface → Camera access no longer available
3. Verify PWA has active notification subscriptions and background sync registrations → Microphone permissions removed
4. Test that PWA has access to persistent storage, service workers, and cached data → Notification subscriptions cancelled
5. Uninstall the PWA through browser UI → Background sync registrations removed
6. Immediately after uninstall, check permission management UI to verify all permissions revoked → Service workers unregistered
7. Attempt to access previously granted APIs and verify they are no longer accessible → Persistent storage cleared
8. Verify notification subscriptions are cancelled and no notifications delivered → IndexedDB data removed or inaccessible
9. Check that service workers are unregistered and no longer run in background → Cache storage cleared
10. Verify persistent storage, IndexedDB, and cache storage are cleared or inaccessible → 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 → Installation events logged with timestamp and origin
2. Install a PWA and grant it camera and microphone permissions → Permission grants recorded per API type
3. Review audit logs and verify they contain installation event with timestamp and origin → User actions (grant/deny) captured in logs
4. Check logs for permission grant events showing camera and microphone with user action recorded → Permission revocations logged with details
5. Revoke microphone permission through browser settings → Uninstallation events recorded
6. Verify revocation event logged with timestamp, permission type, and user/admin action → All revocations on uninstall documented
7. Uninstall the PWA completely → Logs include complete metadata (time, origin, permission, action)
8. Confirm uninstallation event appears in logs with all associated permission revocations → Logs protected from tampering
9. Test that logs include sufficient detail: timestamp, origin, permission type, user action, result → Enterprise admins can export and analyze logs
10. Verify logs are protected from tampering by application code or unauthorized access → 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) → Policy blocks non-allowlisted PWA installations
2. Configure policy to block PWA installation from all origins except allowlisted domains → Camera permissions enforced denied by policy
3. Attempt to install PWA from non-allowlisted origin and verify installation is blocked → Audit logging requirement cannot be bypassed
4. Configure policy to deny camera permissions for all PWAs enterprise-wide → Storage quotas enforced per policy
5. Install allowed PWA and attempt camera access, verifying it is blocked by policy → Specific capabilities blocked as configured
6. Configure policy requiring audit logging for all PWA permission events → Policy overrides user preferences
7. Verify audit logging is enforced and cannot be disabled by users → Policy overrides PWA manifest permissions
8. Test policy to set maximum storage quota for PWAs → Centralized policy management available
9. Configure policy blocking specific PWA capabilities (background sync, notifications) → Policy violations logged to enterprise monitoring
10. Verify policy overrides user preferences and PWA manifest requests → 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 should 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.) → Native-equivalent APIs require consent prompts
2. Attempt to access File System Access API and verify user consent prompt appears with clear warnings → Prompts include clear risk warnings
3. Test that consent prompt explains the risks and capabilities being granted → Per-API authorization required
4. Grant consent and verify API access is enabled for the origin → Permissions can be revoked through settings
5. Revoke permission through browser settings and verify API access is blocked → WebUSB requires per-device consent
6. Test WebUSB device access and confirm per-device consent prompts appear → Serial API requires per-port authorization
7. Verify consent for one USB device does not grant access to all devices → Enhanced Bluetooth requires additional consent
8. Test Serial API access and confirm user should explicitly authorize each serial port → All API usage logged comprehensively
9. Attempt Bluetooth access beyond standard Web Bluetooth scope and verify enhanced consent required → Consent prompts indicate SYS-3 privilege level
10. Verify all native-equivalent API usage logged for security auditing → 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 shall 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 → Active filesystem access indicator visible
2. Verify browser UI displays active indicator when application accesses filesystem → Permission management UI lists all native capabilities
3. Access browser permission management interface and verify it lists all granted native capabilities → Capabilities explained in clear language
4. Test that permission UI clearly explains each granted capability in user-friendly language → Usage history accessible and detailed
5. Verify browser provides usage history showing when and how native APIs were accessed → USB access shows active indicator
6. Test active USB device access and confirm browser shows indicator (icon, notification, or status) → Serial connections display connection status
7. Open serial port connection and verify browser displays active connection indicator → Indicators link to detailed information
8. Test that users can click indicators to view details about active native API usage → Users can revoke permissions through UI
9. Verify permission management UI allows users to view, modify, and revoke native capabilities → Revocation immediately effective and reflected in UI
10. Test that revoking permission immediately stops API access and updates UI → 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 → Filesystem access prompts include clear warnings
2. Verify permission prompt includes clear security warning about filesystem access risks → Warnings explain read/write capabilities and risks
3. Confirm warning explains that the site will gain ability to read/write files directly → USB prompts warn about device control implications
4. Test WebUSB permission prompt and verify it warns about device control risks → USB warnings note firmware access potential
5. Confirm USB warning explains potential for device firmware access and modification → Serial API warnings explain hardware communication risks
6. Trigger Serial API permission and verify warning about direct hardware communication → Warnings visually distinct from standard prompts
7. Test that warnings are visually distinct (color, icons, prominence) from normal permission prompts → Dismissal requires deliberate user action
8. Verify warnings cannot be easily dismissed or bypassed through rapid clicking → Explicit risk acknowledgment required
9. Test that warnings require explicit "I understand the risks" acknowledgment → Warnings shown on first and periodic subsequent access
10. Verify warnings are shown on first access and periodically for ongoing privileged access → Warning language calibrated to user understanding level
**Pass Criteria**: Privileged APIs show security warnings AND warnings explain specific risks AND visual distinction from normal prompts AND explicit acknowledgment required
**Fail Criteria**: No warnings shown OR warnings lack risk details OR warnings visually identical to normal prompts OR easy bypass available
**Evidence**: Permission prompt screenshots with security warnings, warning text analysis, user interaction flow documentation, bypass attempt testing, warning frequency verification
**References**:
- Security Warning Design: https://www.usenix.org/conference/soups2019/presentation/reeder
- Effective Permission Prompts: https://web.dev/permission-ux/
- User Security Indicators: https://www.w3.org/TR/security-privacy-questionnaire/
### Assessment: SYS-REQ-44 (Extended system access audit logging at SYS-3)
**Reference**: SYS-REQ-44 - Browser shall log all extended system access for security auditing at SYS-3 capability level
**Given**: A conformant browser with SYS-3 capability (native-equivalent system access)
**Task**: Native-equivalent system access at SYS-3 creates significant security risk requiring comprehensive audit logging for attack detection, forensic investigation, compliance verification, and insider threat monitoring. Without detailed logs capturing filesystem access, device interactions, API usage patterns, and permission changes, organizations cannot detect data exfiltration, identify compromised applications, investigate security incidents, or meet regulatory audit requirements. Tamper-resistant logs with complete metadata enable security visibility and accountability.
**Verification**:
1. Enable or verify audit logging is active for SYS-3 capability level → All filesystem operations logged with paths
2. Grant filesystem access to a web application and access multiple files → USB device interactions logged comprehensively
3. Review audit logs and verify they contain entries for each file access with path, operation, timestamp → Serial port access and data transmission recorded
4. Connect and communicate with a USB device through WebUSB → Permission changes logged with full context
5. Verify logs capture device connection, data transfer, and disconnection events → Logs include complete metadata for each event
6. Open serial port connection and transmit data → Log entries are timestamped with high precision
7. Confirm logs document serial port access, configuration, and data transmission → Logs protected from tampering or deletion
8. Revoke a permission through browser settings → Enterprise administrators can export logs
9. Verify permission revocation logged with timestamp, origin, and permission type → Log retention meets security and compliance needs
10. Test that logs include complete metadata: timestamp, origin, API, resource, operation, result, user context → Logs integrate with SIEM and security monitoring tools
**Pass Criteria**: All extended system access logged AND logs include complete metadata AND tamper protection enforced AND enterprise export available
**Fail Criteria**: System access not logged OR logs lack critical metadata OR logs can be tampered with OR no export capability
**Evidence**: Audit log exports showing system access events, log completeness verification, tamper protection testing, SIEM integration demonstration, retention policy documentation
**References**:
- Security Audit Logging: https://csrc.nist.gov/publications/detail/sp/800-92/final
- Browser Security Logs: https://chromium.googlesource.com/chromium/src/+/master/docs/security/audit-logging.md
- SIEM Integration: https://owasp.org/www-community/Log_Injection
### Assessment: SYS-REQ-45 (User permission review and revocation at SYS-3)
**Reference**: SYS-REQ-45 - Users shall be able to review and revoke all system permissions at SYS-3 capability level
**Given**: A conformant browser with SYS-3 capability (native-equivalent system access)
**Task**: Users shall have complete visibility and control over all granted system permissions to manage their security posture, respond to threats, and maintain privacy. Without comprehensive permission review and revocation interfaces, users cannot identify over-privileged applications, remove access from compromised sites, or recover from accidental permission grants. Centralized permission management with per-origin listings, granular revocation, usage visibility, and immediate enforcement enables user control and security hygiene.
**Verification**:
1. Grant multiple system permissions (filesystem, USB, serial, notifications) to various web origins → All granted permissions visible in management UI
2. Navigate to browser permission management interface → Permissions organized by origin and type
3. Verify interface displays all granted permissions organized by origin and permission type → High-privilege permissions clearly marked
4. Test that interface clearly identifies high-privilege permissions (filesystem, device access) → Individual permission revocation functional
5. Select a permission and revoke it through the management interface → Revocation takes effect immediately
6. Immediately test that the web application can no longer access the revoked resource → Applications receive permission denial after revocation
7. Verify error or permission denial shown to application after revocation → Bulk revocation available per origin
8. Test bulk revocation of all permissions for a specific origin → Usage history shown for each permission
9. Confirm all permissions removed and application loses all system access → No hidden or unrevocable permissions exist
10. Verify permission management UI shows usage history for each permission → Interface accessible and user-friendly
**Pass Criteria**: All permissions visible in management UI AND individual revocation functional AND immediate enforcement AND usage history available
**Fail Criteria**: Permissions not listed OR revocation doesn't work OR delayed enforcement OR no usage visibility
**Evidence**: Permission management UI screenshots, revocation testing showing immediate effect, usage history exports, bulk revocation verification, hidden permission audit
**References**:
- Permissions API: https://www.w3.org/TR/permissions/
- Permission Management UX: https://web.dev/permission-ux/
- Browser Privacy Controls: https://www.w3.org/TR/privacy-controls/
### Assessment: SYS-REQ-46 (Enterprise restriction of native-equivalent features at SYS-3)
**Reference**: SYS-REQ-46 - Enterprise administrators shall be able to restrict native-equivalent features at SYS-3 capability level
**Given**: A conformant browser with SYS-3 capability supporting native-equivalent system access and enterprise policy management
**Task**: Enterprise environments require centralized control to restrict native-equivalent features that pose unacceptable risk to organizational security, intellectual property, or compliance requirements. Without enterprise policy controls, users at SYS-3 can grant unrestricted filesystem access, device control, or system integration to web applications, enabling data exfiltration, malware installation, or regulatory violations. Group policy integration with capability blocking, origin restrictions, and forced denials enables IT security governance.
**Verification**:
1. Access enterprise policy configuration interface (Group Policy, MDM, policy JSON) → File System Access API blocked by policy
2. Configure policy to block File System Access API organization-wide → Policy blocks API with clear error message
3. Attempt to use File System Access API as user and verify policy blocks access with clear error → WebUSB restricted to allowlisted origins
4. Configure policy to allow WebUSB only for specific allowlisted origins → Non-allowlisted origins denied device access
5. Test WebUSB from non-allowlisted origin and verify policy denies access → Allowlisted origins function normally
6. Test WebUSB from allowlisted origin and verify it functions → Serial API completely disabled by policy
7. Configure policy to completely disable Serial API → Administrator approval workflow enforced
8. Attempt serial port access and verify it is blocked by policy → Users cannot bypass policy restrictions
9. Configure policy requiring administrator approval for any SYS-3 capability grants → Policy violations logged to enterprise monitoring
10. Test that user permission grants require admin authorization workflow → Policies centrally managed and enforced
**Pass Criteria**: Enterprise policies block native-equivalent features AND origin allowlists enforced AND administrator approval available AND policy violations logged
**Fail Criteria**: Policies not enforced OR users bypass restrictions OR allowlists ignored OR no violation logging
**Evidence**: Policy configuration documentation, API blocking verification, origin allowlist testing, admin approval workflow demonstration, policy bypass attempt results, violation logs
**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
- Enterprise Browser Management: https://www.chromium.org/administrators/
### Assessment: SYS-REQ-47 (Native integration audit documentation at SYS-3)
**Reference**: SYS-REQ-47 - All native integration exceptions shall be documented and auditable at SYS-3 capability level
**Given**: A conformant browser with SYS-3 capability (native-equivalent system access)
**Task**: Native integration exceptions that deviate from standard web security model shall be comprehensively documented to enable security review, vulnerability assessment, compliance auditing, and risk management. Without documentation of security boundaries relaxed, APIs exposed beyond web standards, or sandbox exceptions granted, security teams cannot assess risk posture, auditors cannot verify compliance, and developers cannot understand security implications. Architecture documentation with threat models, exception justifications, and mitigation controls enables informed security governance.
**Verification**:
1. Review browser security documentation to identify documented native integration exceptions → Native integration exceptions fully documented
2. Verify documentation explains each exception's purpose, risks, and mitigations → Documentation explains purpose, risks, and mitigations
3. Confirm documentation includes threat model for native-equivalent API surface → Threat models available for native APIs
4. Review code comments and design documents for File System Access API implementation → Implementation aligns with documentation
5. Verify implementation matches documented security model and exception handling → Runtime information available about active integration
6. Test that browser provides runtime information about active native integration (developer tools, about:security) → Enterprise admin documentation comprehensive
7. Verify enterprise administrators can access detailed documentation of native features → Audit logs align with documented behavior
8. Review security audit logs and confirm they align with documented native integration behavior → No undocumented exceptions exist
9. Test that documented exceptions are the only ones present (no undocumented backdoors) → Documentation kept current with releases
10. Verify documentation is maintained and updated with browser releases → Security review process documented
**Pass Criteria**: All exceptions documented AND documentation includes threat models AND implementation matches documentation AND no undocumented exceptions
**Fail Criteria**: Exceptions not documented OR no threat models OR implementation deviates OR undocumented exceptions found
**Evidence**: Security documentation review, threat model analysis, code implementation verification, runtime security interface examination, audit log alignment testing, exception enumeration
**References**:
- Secure Development Lifecycle: https://www.microsoft.com/en-us/securityengineering/sdl/
- Threat Modeling: https://owasp.org/www-community/Threat_Modeling
- Security Documentation: https://cheatsheetseries.owasp.org/cheatsheets/Security_Documentation_Checklist.html
## 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 → Verify that the bridge logs all API access attempts including denied attempts
2. Identify all native APIs exposed to web content through the JavaScript bridge → JavaScript bridge exposes only explicitly allowlisted native APIs
3. Verify that an explicit allowlist mechanism exists (configuration file, API declaration, or programmatic registration) → Configuration files or code clearly declare which APIs are accessible
4. Attempt to call native APIs that are not in the allowlist from web content → Per-API access controls restrict which origins or contexts can call each API
5. Verify that per-API access controls exist (e.g., origin-based restrictions, permission requirements) → Attempts to call non-allowlisted APIs result in errors or exceptions
6. Test that the allowlist cannot be modified by web content at runtime → Web content cannot modify the API allowlist at runtime
7. Attempt to use reflection or dynamic invocation to bypass the allowlist → Reflection or dynamic method invocation does not bypass allowlist enforcement
**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 → All bridge API parameters undergo validation on the native side before processing
2. For each API, review the native-side validation and sanitization logic → Type checking rejects parameters of incorrect types
3. Create test cases with malicious inputs: SQL injection strings, path traversal sequences, command injection payloads, excessively long strings, null bytes, Unicode exploits → String sanitization removes or escapes dangerous characters
4. Invoke bridge APIs with malformed data: wrong types, missing parameters, extra parameters, null values, undefined values → Numeric parameters are range-checked
5. Attempt to pass JavaScript objects with prototype pollution characteristics → File paths are validated and canonicalized
6. Test that numeric parameters are range-checked and validated → Malicious inputs trigger validation errors without causing security issues
7. Verify that file paths are canonicalized and validated before use → Validation failures are logged with sufficient detail for security monitoring
8. Confirm that validation failures trigger errors and logging rather than silent failures → 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 → Confirm log retention policies are documented and enforced
2. Invoke various bridge APIs from web content → All JavaScript bridge API invocations are logged
3. Review the generated logs and verify they contain: API name, timestamp, calling origin, parameters (with sensitive data redacted), return values, success/failure status → Logs include sufficient context for security analysis (API, origin, timestamp)
4. Attempt to call blocked or restricted APIs and verify denials are logged → Both successful and failed API calls are logged
5. Generate high-volume bridge traffic and verify logging continues without loss → Sensitive parameters are redacted or hashed in logs
6. Test that sensitive data (passwords, tokens) is redacted from logs → Logs are tamper-resistant with integrity protection
7. Verify logs are stored securely with appropriate access controls → Log retention policies balance security needs and privacy requirements
**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 → Verify that iframes inherit context isolation from the parent
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. → Web content cannot access host application objects directly
3. Attempt to enumerate window properties to discover host-exposed objects → Global namespace pollution from host application is prevented
4. Test if web content can access Node.js globals (if applicable): `process`, `require`, `Buffer`, `global` → Node.js globals (if applicable) are not accessible to web content
5. Verify that the JavaScript bridge API is the only official communication channel → Only explicitly exposed JavaScript bridge APIs are accessible
6. Test that prototype pollution cannot affect host application objects → Window property enumeration does not reveal internal objects
7. Confirm that context isolation is enforced even for trusted content origins → Prototype pollution attacks do not affect host application
**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)