Newer
Older
13001
13002
13003
13004
13005
13006
13007
13008
13009
13010
13011
13012
13013
13014
13015
13016
13017
13018
13019
13020
13021
13022
13023
13024
13025
13026
13027
13028
13029
13030
13031
13032
13033
13034
13035
13036
13037
13038
13039
13040
13041
13042
13043
13044
13045
13046
13047
13048
13049
13050
13051
13052
13053
13054
13055
13056
13057
13058
13059
13060
13061
13062
13063
13064
13065
13066
13067
13068
13069
13070
13071
13072
13073
13074
13075
13076
13077
13078
13079
13080
13081
13082
13083
13084
13085
13086
13087
13088
13089
13090
13091
13092
13093
13094
13095
13096
13097
13098
13099
13100
13101
13102
13103
13104
13105
13106
13107
13108
13109
13110
13111
13112
13113
13114
13115
13116
13117
13118
13119
13120
13121
13122
13123
13124
13125
13126
13127
13128
13129
13130
13131
13132
13133
13134
13135
13136
13137
13138
13139
13140
13141
13142
13143
13144
13145
13146
13147
13148
13149
13150
13151
13152
13153
13154
13155
13156
13157
13158
13159
13160
13161
13162
13163
13164
13165
13166
13167
13168
13169
13170
13171
13172
13173
13174
13175
13176
13177
13178
13179
13180
13181
13182
13183
13184
13185
13186
13187
13188
13189
13190
13191
13192
13193
13194
13195
13196
13197
13198
13199
13200
13201
13202
13203
13204
13205
13206
13207
13208
13209
13210
13211
13212
13213
13214
13215
13216
13217
13218
13219
13220
13221
13222
13223
13224
13225
13226
13227
13228
13229
13230
13231
13232
13233
13234
13235
13236
13237
13238
13239
13240
13241
13242
13243
13244
13245
13246
13247
13248
13249
13250
13251
13252
13253
13254
13255
13256
13257
13258
13259
13260
13261
13262
13263
13264
13265
13266
13267
13268
13269
13270
13271
13272
13273
13274
13275
13276
13277
13278
13279
13280
13281
13282
13283
13284
13285
13286
13287
13288
13289
13290
13291
13292
13293
13294
13295
13296
13297
13298
13299
13300
13301
13302
13303
13304
13305
13306
13307
13308
13309
13310
13311
13312
13313
13314
13315
13316
13317
13318
13319
13320
13321
13322
13323
13324
13325
13326
13327
13328
13329
13330
13331
13332
13333
13334
13335
13336
13337
13338
13339
13340
13341
13342
13343
13344
13345
13346
13347
13348
13349
13350
13351
13352
13353
13354
13355
13356
13357
13358
13359
13360
13361
13362
13363
13364
13365
13366
13367
13368
13369
13370
13371
13372
13373
13374
13375
13376
13377
13378
13379
13380
13381
13382
13383
13384
13385
13386
13387
13388
13389
13390
13391
13392
13393
13394
13395
13396
13397
13398
13399
13400
13401
13402
13403
13404
13405
13406
13407
13408
13409
13410
13411
13412
13413
13414
13415
13416
13417
13418
13419
13420
13421
13422
13423
13424
13425
13426
13427
13428
13429
13430
13431
13432
13433
13434
13435
13436
13437
13438
13439
13440
13441
13442
13443
13444
13445
13446
13447
13448
13449
13450
13451
13452
13453
13454
13455
13456
13457
13458
13459
13460
13461
13462
13463
13464
13465
13466
13467
13468
13469
13470
13471
13472
13473
13474
13475
13476
13477
13478
13479
13480
13481
13482
13483
13484
13485
13486
13487
13488
13489
13490
13491
13492
13493
13494
13495
13496
13497
13498
13499
13500
13501
13502
13503
13504
13505
13506
13507
13508
13509
13510
13511
13512
13513
13514
13515
13516
13517
13518
13519
13520
13521
13522
13523
13524
13525
13526
13527
13528
13529
13530
13531
13532
13533
13534
13535
13536
13537
13538
13539
13540
13541
13542
13543
13544
13545
13546
13547
13548
13549
13550
13551
13552
13553
13554
13555
13556
13557
13558
13559
13560
13561
13562
13563
13564
13565
13566
13567
13568
13569
13570
13571
13572
13573
13574
13575
13576
13577
13578
13579
13580
13581
13582
13583
13584
13585
13586
13587
13588
13589
13590
13591
13592
13593
13594
13595
13596
13597
13598
13599
13600
13601
13602
13603
13604
13605
13606
13607
13608
13609
13610
13611
13612
13613
13614
13615
13616
13617
13618
13619
13620
13621
13622
13623
13624
13625
13626
13627
13628
13629
13630
13631
13632
13633
13634
13635
13636
13637
13638
13639
13640
13641
13642
13643
13644
13645
13646
13647
13648
13649
13650
13651
13652
13653
13654
13655
13656
13657
13658
13659
13660
13661
13662
13663
13664
13665
13666
13667
13668
13669
13670
13671
13672
13673
13674
13675
13676
13677
13678
13679
13680
13681
13682
13683
13684
13685
13686
13687
13688
13689
13690
13691
13692
13693
13694
13695
13696
13697
13698
13699
13700
13701
13702
13703
13704
13705
13706
13707
13708
13709
13710
13711
13712
13713
13714
13715
13716
13717
13718
13719
13720
13721
13722
13723
13724
13725
13726
13727
13728
13729
13730
13731
13732
13733
13734
13735
13736
13737
13738
13739
13740
13741
13742
13743
13744
13745
13746
13747
13748
13749
13750
13751
13752
13753
13754
13755
13756
13757
13758
13759
13760
13761
13762
13763
13764
13765
13766
13767
13768
13769
13770
13771
13772
13773
13774
13775
13776
13777
13778
13779
13780
13781
13782
13783
13784
13785
13786
13787
13788
13789
13790
13791
13792
13793
13794
13795
13796
13797
13798
13799
13800
13801
13802
13803
13804
13805
13806
13807
13808
13809
13810
13811
13812
13813
13814
13815
13816
13817
13818
13819
13820
13821
13822
13823
13824
13825
13826
13827
13828
13829
13830
13831
13832
13833
13834
13835
13836
13837
13838
13839
13840
13841
13842
13843
13844
13845
13846
13847
13848
13849
13850
13851
13852
13853
13854
13855
13856
13857
13858
13859
13860
13861
13862
13863
13864
13865
13866
13867
13868
13869
13870
13871
13872
13873
13874
13875
13876
13877
13878
13879
13880
13881
13882
13883
13884
13885
13886
13887
13888
13889
13890
13891
13892
13893
13894
13895
13896
13897
13898
13899
13900
13901
13902
13903
13904
13905
13906
13907
13908
13909
13910
13911
13912
13913
13914
13915
13916
13917
13918
13919
13920
13921
13922
13923
13924
13925
13926
13927
13928
13929
13930
13931
13932
13933
13934
13935
13936
13937
13938
13939
13940
13941
13942
13943
13944
13945
13946
13947
13948
13949
13950
13951
13952
13953
13954
13955
13956
13957
13958
13959
13960
13961
13962
13963
13964
13965
13966
13967
13968
13969
13970
13971
13972
13973
13974
13975
13976
13977
13978
13979
13980
13981
13982
13983
13984
13985
13986
13987
13988
13989
13990
13991
13992
13993
13994
13995
13996
13997
13998
13999
14000
10. Passive mixed content is blocked or triggers prominent warnings
11. Mixed content errors appear in browser console with details
12. Web content cannot disable mixed content protection
13. Host application cannot weaken mixed content blocking
14. upgrade-insecure-requests CSP directive automatically upgrades HTTP to HTTPS
15. No configuration option exists to allow mixed content on HTTPS pages
**Pass Criteria**: Active mixed content is always blocked AND passive mixed content protection is enforced AND cannot be disabled
**Fail Criteria**: Mixed content loads successfully OR protection can be disabled OR insufficient warnings
**Evidence**: Browser console showing mixed content errors, test results with blocked HTTP resources, CSP header analysis, security configuration review, network traffic captures
**References**:
- W3C Mixed Content specification: https://www.w3.org/TR/mixed-content/
- Mixed Content (MDN): https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content
- CSP upgrade-insecure-requests: https://www.w3.org/TR/upgrade-insecure-requests/
- Chromium Mixed Content Policy: https://www.chromium.org/Home/chromium-security/deprecating-powerful-features-on-insecure-origins
### Assessment: EMB-REQ-22 (Trust decision logging)
**Reference**: EMB-REQ-22 - Trust decisions shall be logged with sufficient detail to detect trust boundary violations
**Given**: A conformant embedded browser with trust management (EMB-1 or higher)
**Task**: Trust decision logging is critical for detecting and investigating attacks that attempt to cross trust boundaries in embedded browsers, such as untrusted origins trying to access privileged JavaScript bridge APIs or certificate validation bypasses. Without comprehensive logging of trust decisions, security teams cannot identify patterns of attack attempts, investigate security incidents, or detect compromised trusted origins that begin exhibiting suspicious behavior. Detailed trust logs enable security monitoring systems to flag anomalies like repeated origin allowlist violations, certificate pinning failures, or unusual patterns of bridge API access that may indicate reconnaissance or active exploitation attempts.
**Verification**:
1. Configure logging for trust-related decisions in the embedded browser
2. Load content from trusted and untrusted origins
3. Review logs and verify they contain: origin, timestamp, trust decision outcome, reason for decision
4. Attempt trust boundary violations (untrusted origin accessing privileged APIs)
5. Verify that violations are logged with full context
6. Test that certificate validation decisions are logged
7. Verify that origin allowlist enforcement is logged
8. Test that logs are stored securely and cannot be tampered with by web content
9. Verify log retention policies for security-relevant events
10. All trust decisions are logged with sufficient detail
11. Logs include origin, timestamp, decision, and rationale
12. Trust boundary violations are logged with full context
13. Certificate validation results are logged
14. Origin allowlist enforcement is logged
15. Logs are protected from tampering
16. Log retention balances security needs and privacy
17. Logs are accessible for security monitoring and incident response
**Pass Criteria**: All trust decisions are logged with sufficient detail AND violations are logged AND logs are tamper-protected
**Fail Criteria**: Trust decisions are not logged OR insufficient detail OR logs can be tampered with
**Evidence**: Log samples showing trust decisions, log configuration documentation, test results showing violation logging, log integrity verification, 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-23 (Cryptographic signature verification for local content)
**Reference**: EMB-REQ-23 - Embedded browsers loading local/bundled content shall verify cryptographic signatures before execution
**Given**: A conformant embedded browser loading bundled/local content (EMB-2 or higher)
**Task**: Cryptographic signature verification for local content protects against tampering attacks where attackers with file system access attempt to modify bundled HTML, JavaScript, or CSS files to inject malicious code. Without signature verification, local privilege escalation or compromised backup/restore processes could allow attackers to silently modify embedded browser content that executes with full JavaScript bridge API access. Digital signatures ensure content integrity from build time through deployment, detecting any unauthorized modifications and preventing execution of tampered local resources that could otherwise compromise the entire host application through bridge exploitation.
**Verification**:
1. Identify local/bundled content loaded by the embedded browser (HTML, JS, CSS files)
2. Verify that all bundled content is cryptographically signed
3. Review signature verification implementation in the browser initialization code
4. Attempt to modify bundled content and verify that signature verification fails
5. Test that signature verification failures prevent content loading
6. Verify that signature verification uses secure algorithms (RSA-2048+, ECDSA P-256+)
7. Test that signature verification cannot be bypassed or disabled
8. Verify that signing keys are properly protected in the host application
9. All local/bundled content has cryptographic signatures
10. Signature verification occurs before content execution
11. Modified content fails signature verification
12. Signature verification failures block content loading
13. Secure signature algorithms are used
14. Signature verification cannot be bypassed
15. Signing keys are protected from extraction
16. Verification process is logged
**Pass Criteria**: All local content is signed AND signatures are verified before execution AND verification cannot be bypassed
**Fail Criteria**: Unsigned content can be loaded OR signature verification is bypassable OR weak signature algorithms
**Evidence**: Signed content bundles, signature verification code review, test results with modified content, cryptographic algorithm analysis, key protection documentation
**References**:
- Code Signing Best Practices (NIST): https://csrc.nist.gov/publications/detail/sp/800-183/final
- Android APK Signature Scheme: https://source.android.com/docs/security/features/apksigning
- Authenticode for Windows: https://docs.microsoft.com/en-us/windows-hardware/drivers/install/authenticode
### Assessment: EMB-REQ-24 (Redirect chain trust enforcement)
**Reference**: EMB-REQ-24 - Host applications shall implement mechanisms to detect and prevent redirect chains that exit trusted domains
**Given**: A conformant embedded browser with origin allowlist (EMB-1 or higher)
**Task**: Redirect chain trust enforcement prevents open redirect attacks where trusted origins inadvertently redirect to attacker-controlled domains, potentially exposing JavaScript bridge APIs to malicious content. Without redirect validation, attackers can exploit legitimate redirects on trusted sites to bypass origin allowlists, tricking the embedded browser into loading malicious content that appears to come from a trusted source. Multi-hop redirect chains are particularly dangerous because each hop in the chain could be manipulated to eventually land on an untrusted domain, requiring comprehensive validation of the entire redirect path to prevent trust boundary violations.
**Verification**:
1. Configure trusted origin allowlist in the embedded browser
2. Load a page from a trusted origin that redirects to another trusted origin
3. Verify that trusted-to-trusted redirects are allowed
4. Load a page from a trusted origin that redirects to an untrusted origin
5. Verify that trusted-to-untrusted redirects are blocked
6. Test multi-hop redirect chains: trusted → trusted → untrusted
7. Verify that all redirects in the chain are validated against allowlist
8. Test that redirect blocking triggers security logging
9. Verify that JavaScript-based redirects are also subject to trust enforcement
10. Redirect chain validation is enforced
11. Trusted-to-trusted redirects are allowed
12. Any redirect to untrusted origin is blocked
13. Multi-hop redirect chains are fully validated
14. Both HTTP and JavaScript redirects are subject to enforcement
15. Blocked redirects trigger error pages and security logs
16. Users are notified when redirects are blocked
17. No bypass mechanism exists for redirect enforcement
**Pass Criteria**: Redirect chains are fully validated AND untrusted redirects are blocked AND enforcement covers all redirect types
**Fail Criteria**: Redirects to untrusted origins succeed OR JavaScript redirects bypass enforcement OR multi-hop validation is incomplete
**Evidence**: Redirect test results, browser console showing blocked redirects, security logs, network traffic captures showing redirect chains, error page screenshots
**References**:
- OWASP Open Redirect: https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html
- CWE-601: URL Redirection to Untrusted Site: https://cwe.mitre.org/data/definitions/601.html
- Android WebView shouldOverrideUrlLoading: https://developer.android.com/reference/android/webkit/WebViewClient#shouldOverrideUrlLoading(android.webkit.WebView,%20android.webkit.WebResourceRequest)
- iOS WKNavigationDelegate decidePolicyFor: https://developer.apple.com/documentation/webkit/wknavigationdelegate/1455641-webview
### Assessment: EMB-REQ-25 (HSTS enforcement for trusted origins)
**Reference**: EMB-REQ-25 - Embedded browsers shall enforce strict transport security (HSTS) for all trusted content origins
**Given**: A conformant embedded browser (EMB-1 or higher)
**Task**: HSTS enforcement for trusted origins protects against SSL stripping attacks where network attackers intercept initial HTTP requests and prevent upgrade to HTTPS, allowing interception of all subsequent traffic. Without HSTS, embedded browsers are vulnerable during the brief window between application launch and the first HTTPS connection, when attackers can downgrade connections to HTTP and conduct man-in-the-middle attacks. HSTS ensures that all connections to trusted origins use HTTPS, with non-bypassable certificate validation, preventing network-level attackers from intercepting or modifying content loaded by the embedded browser even on compromised networks.
**Verification**:
1. Configure trusted content origins with HSTS headers: `Strict-Transport-Security: max-age=31536000; includeSubDomains; preload`
2. Make initial HTTPS request to trusted origin and verify HSTS header is received and cached
3. Attempt to make HTTP request to same origin and verify automatic upgrade to HTTPS
4. Test that HSTS enforcement continues after browser restart (persistence)
5. Verify that HSTS includeSubDomains flag is respected for subdomains
6. Test that HSTS preload list is supported and enforced
7. Attempt to bypass HSTS through direct IP access or hosts file manipulation
8. Verify that certificate errors on HSTS hosts cannot be bypassed
9. HSTS headers are parsed and cached correctly
10. HTTP requests to HSTS hosts are automatically upgraded to HTTPS
11. HSTS state persists across browser sessions
12. includeSubDomains flag applies to all subdomains
13. HSTS preload list is maintained and enforced
14. HSTS cannot be bypassed through IP access or other means
15. Certificate errors on HSTS hosts are non-bypassable
16. HSTS enforcement is logged
**Pass Criteria**: HSTS is enforced for all trusted origins AND HTTP is automatically upgraded AND certificate errors are non-bypassable
**Fail Criteria**: HSTS can be bypassed OR HTTP connections succeed to HSTS hosts OR certificate errors are bypassable
**Evidence**: Network traffic captures showing HTTPS upgrades, HSTS cache inspection, test results with HTTP requests, certificate error bypass attempts, HSTS preload list verification
**References**:
- RFC 6797: HTTP Strict Transport Security (HSTS): https://datatracker.ietf.org/doc/html/rfc6797
- HSTS Preload List: https://hstspreload.org/
- OWASP HSTS: https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Strict_Transport_Security_Cheat_Sheet.html
- Chromium HSTS Implementation: https://www.chromium.org/hsts
### Assessment: EMB-REQ-26 (Certificate validation failure notification)
**Reference**: EMB-REQ-26 - Certificate validation failures for trusted content sources shall trigger immediate user notification and content blocking
**Given**: A conformant embedded browser loading trusted remote content (EMB-1 or higher)
**Task**: Immediate notification and blocking on certificate validation failures for trusted content prevents silent man-in-the-middle attacks where users unknowingly interact with compromised content. Without clear error notifications and strict blocking, users might not realize that certificate validation has failed, allowing attackers to serve malicious content that appears to come from trusted origins. Non-bypassable certificate error handling for trusted origins ensures that even sophisticated attacks using fraudulent certificates cannot trick the embedded browser into loading untrusted content, protecting the integrity of the JavaScript bridge API access model.
**Verification**:
1. Configure trusted content origins with valid certificates
2. Simulate certificate validation failures: expired certificate, hostname mismatch, untrusted CA, revoked certificate
3. Verify that each failure type triggers immediate error notification
4. Verify that content loading is completely blocked (no partial loading)
5. Test that error notifications clearly explain the problem to users
6. Verify that no "continue anyway" option exists for trusted origin failures
7. Test that certificate failures are logged to security event log
8. Verify that host application is notified of certificate failures via callback
9. Certificate validation failures are detected for all failure types
10. User receives immediate, clear error notification
11. Content loading is completely blocked on validation failure
12. Error messages explain the specific certificate problem
13. No bypass mechanism exists for certificate errors on trusted origins
14. Certificate failures are logged with full details
15. Host application can register for certificate failure callbacks
16. Failure handling differs for trusted vs. untrusted origins
**Pass Criteria**: All certificate failures block content AND trigger immediate user notification AND are non-bypassable for trusted origins
**Fail Criteria**: Any certificate failure allows content loading OR notifications are missing/unclear OR bypass options exist
**Evidence**: Error page screenshots, certificate failure logs, test results with various failure types, user notification interface documentation, host callback implementation
**References**:
- RFC 5280: Certificate Validation: https://datatracker.ietf.org/doc/html/rfc5280
- CA/Browser Forum Baseline Requirements: https://cabforum.org/baseline-requirements-documents/
- Android WebView onReceivedSslError: https://developer.android.com/reference/android/webkit/WebViewClient#onReceivedSslError(android.webkit.WebView,%20android.webkit.SslErrorHandler,%20android.net.http.SslError)
- iOS WKNavigationDelegate didReceive challenge: https://developer.apple.com/documentation/webkit/wknavigationdelegate/1455638-webview
### Assessment: EMB-REQ-27 (Network security configuration)
**Reference**: EMB-REQ-27 - Host applications shall implement network security configurations that prevent cleartext traffic to trusted domains
**Given**: A conformant embedded browser (EMB-1 or higher)
**Task**:
1. Review network security configuration for the embedded browser (Android Network Security Config, iOS App Transport Security, or equivalent)
2. Verify that cleartext HTTP traffic is disabled for trusted domains
3. Attempt to make HTTP requests to trusted domains and verify they are blocked
4. Test that HTTPS-only enforcement cannot be disabled at runtime
5. Verify that network security configuration applies to all network APIs (WebView, XHR, fetch, WebSocket)
6. Test that certificate pinning configuration is integrated with network security config
7. Verify that configuration is declarative and cannot be modified by web content
8. Test that cleartext traffic blocking is logged
**Verification**:
- Network security configuration enforces HTTPS-only for trusted domains
- Cleartext HTTP traffic is blocked at the network layer
- HTTPS enforcement applies to all network APIs uniformly
- Configuration is declarative and immutable at runtime
- Certificate pinning is integrated into network security config
- Blocked cleartext traffic is logged
- Configuration is documented and auditable
- Platform-specific security features are properly utilized (NSConfig, ATS)
**Pass Criteria**: Cleartext traffic to trusted domains is blocked at network layer AND configuration is immutable AND applies to all network APIs
**Fail Criteria**: Cleartext traffic succeeds to trusted domains OR configuration can be modified OR inconsistent enforcement across APIs
**Evidence**: Network security configuration files, network traffic captures showing blocked HTTP, test results with various network APIs, configuration documentation, platform security feature usage audit
**References**:
- Android Network Security Configuration: https://developer.android.com/training/articles/security-config
- iOS App Transport Security: https://developer.apple.com/documentation/security/preventing_insecure_network_connections
- CWE-319: Cleartext Transmission of Sensitive Information: https://cwe.mitre.org/data/definitions/319.html
### Assessment: EMB-REQ-28 (CSP enforcement for third-party content)
**Reference**: EMB-REQ-28 - Embedded browsers shall prevent trusted content from loading untrusted third-party content without explicit CSP declarations
**Given**: A conformant embedded browser with CSP support (EMB-1 or higher)
**Task**:
1. Configure trusted content page with restrictive CSP that allows only specific third-party domains
2. Attempt to load third-party content from CSP-allowed domains and verify success
3. Attempt to load third-party content from non-allowed domains and verify blocking
4. Test that inline scripts from third-party content are blocked unless allowed by CSP
5. Verify that CSP applies to all third-party resource types (scripts, styles, images, frames)
6. Test that CSP violations are reported via report-uri or report-to
7. Verify that web content cannot weaken or disable CSP policy
8. Test that host-configured CSP takes precedence over page-specified CSP
**Verification**:
- CSP restricts third-party content loading to explicitly allowed domains
- Non-allowed third-party content is blocked
- CSP applies consistently across all resource types
- CSP violations generate reports to configured endpoint
- Web content cannot bypass or weaken CSP restrictions
- Host-configured CSP cannot be overridden by page CSP
- CSP enforcement is logged
- Default CSP policy is restrictive (deny by default)
**Pass Criteria**: Third-party content loading is restricted by CSP AND violations are blocked and reported AND policy cannot be weakened by web content
**Fail Criteria**: Third-party content bypasses CSP OR policy can be weakened OR violations not reported
**Evidence**: CSP policy headers, browser console showing CSP violations, violation reports, test results with blocked third-party content, network traffic analysis
**References**:
- Content Security Policy Level 3: https://www.w3.org/TR/CSP3/
- CSP script-src directive: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src
- CSP Reporting: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP#reporting
- OWASP CSP Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html
### Assessment: EMB-REQ-29 (Per-instance trust policies)
**Reference**: EMB-REQ-29 - Trust policies shall be configurable per embedded browser instance to support multi-tenant applications
**Given**: A conformant embedded browser supporting multiple instances (EMB-2 or higher)
**Task**:
1. Create multiple embedded browser instances within the same host application
2. Configure different trust policies for each instance: different origin allowlists, different certificate pins, different CSP policies
3. Load content in each instance and verify that instance-specific policies are enforced
4. Verify that instances cannot access each other's storage or state
5. Test that trust policy configuration is isolated per instance
6. Attempt to modify one instance's trust policy from another instance
7. Verify that instance destruction cleans up trust policy state
8. Test that host application can dynamically create instances with custom policies
**Verification**:
- Trust policies can be configured independently per instance
- Each instance enforces its own trust policy correctly
- Instances are isolated from each other (no cross-instance access)
- Trust policy configuration is scoped to individual instances
- Instance creation accepts custom policy configuration
- Instance destruction cleans up policy state
- No interference between instances' trust enforcement
- Multi-tenant scenarios are properly supported
**Pass Criteria**: Per-instance trust policies are supported AND enforced correctly AND instances are isolated from each other
**Fail Criteria**: Policies cannot be configured per-instance OR instances interfere with each other OR policy isolation is broken
**Evidence**: Code showing per-instance policy configuration, test results with multiple instances, storage isolation verification, policy enforcement logs per instance, multi-tenant test scenarios
**References**:
- Android WebView Multiple Instances: https://developer.android.com/reference/android/webkit/WebView
- iOS WKWebView Configuration: https://developer.apple.com/documentation/webkit/wkwebviewconfiguration
- Electron BrowserView Isolation: https://www.electronjs.org/docs/latest/api/browser-view
- Multi-tenancy Security Best Practices: https://owasp.org/www-project-application-security-verification-standard/
### Assessment: EMB-REQ-30 (Certificate Transparency verification)
**Reference**: EMB-REQ-30 - Embedded browsers shall implement certificate transparency verification for trusted content origins
**Given**: A conformant embedded browser with Certificate Transparency support (EMB-2 or higher)
**Task**:
1. Configure trusted content origins that require Certificate Transparency
2. Load content from origins with valid SCTs (Signed Certificate Timestamps) in certificates or via TLS extension
3. Verify that content loads successfully when valid SCTs are present
4. Attempt to load content with certificates lacking SCTs from CT-required origins
5. Verify that missing or invalid SCTs block content loading for CT-required origins
6. Test that SCTs are validated against known CT logs
7. Verify that CT enforcement can be configured per-origin or globally
8. Test that CT validation failures are logged
**Verification**:
- Certificate Transparency verification is supported
- Valid SCTs allow content loading from CT-required origins
- Missing or invalid SCTs block content loading
- SCTs are validated against known CT logs
- CT enforcement policy is configurable (per-origin or global)
- CT validation failures generate clear error messages and logs
- CT log list is kept up-to-date
- CT enforcement integrates with certificate validation flow
**Pass Criteria**: CT verification is implemented AND enforced for configured origins AND invalid SCTs block content loading
**Fail Criteria**: CT verification not implemented OR can be bypassed OR invalid SCTs are accepted
**Evidence**: Network traffic captures showing SCTs, CT validation logs, test results with missing SCTs, CT log list version verification, CT enforcement configuration
**References**:
- RFC 6962: Certificate Transparency: https://datatracker.ietf.org/doc/html/rfc6962
- Chromium CT Policy: https://www.chromium.org/Home/chromium-security/certificate-transparency/
- Certificate Transparency Logs: https://www.certificate-transparency.org/
- Google CT Policy: https://github.com/GoogleChrome/CertificateTransparency/blob/master/ct_policy.md
### Assessment: EMB-REQ-31 (DNS rebinding attack prevention)
**Reference**: EMB-REQ-31 - Host applications shall detect and prevent DNS rebinding attacks targeting trusted local/internal origins
**Given**: A conformant embedded browser with local/internal origin access (EMB-2 or higher)
**Task**:
1. Identify local/internal origins accessed by the embedded browser (localhost, 127.0.0.1, private IP ranges, .local domains)
2. Simulate DNS rebinding attack: external domain initially resolves to attacker IP, then rebinds to local/internal IP
3. Verify that DNS rebinding is detected and blocked
4. Test DNS cache behavior and TTL enforcement
5. Verify that private IP address access requires explicit allowlisting
6. Test that DNS resolution results are validated against expected address ranges
7. Verify that Host header validation prevents rebinding exploitation
8. Test that DNS rebinding attempts trigger security logging
**Verification**:
- DNS rebinding attacks are detected
- Unexpected DNS resolution changes trigger blocking
- Private IP address access requires explicit configuration
- DNS cache prevents rapid rebinding
- Host header validation is enforced
- Resolution results are validated against address allowlists
- Rebinding attempts are logged as security events
- Local/internal origins have additional protection
**Pass Criteria**: DNS rebinding attacks are detected and blocked AND private IP access is restricted AND rebinding attempts are logged
**Fail Criteria**: DNS rebinding succeeds OR no private IP restrictions OR rebinding not detected
**Evidence**: DNS rebinding test results, DNS cache configuration, Host header validation tests, security logs showing rebinding attempts, private IP access policy documentation
**References**:
- DNS Rebinding Explained: https://en.wikipedia.org/wiki/DNS_rebinding
- CWE-346: Origin Validation Error: https://cwe.mitre.org/data/definitions/346.html
- Private Network Access specification: https://wicg.github.io/private-network-access/
### Assessment: EMB-REQ-32 (Trust boundary violation security events)
**Reference**: EMB-REQ-32 - Trust boundary violations shall trigger security events with sufficient context for incident response
**Given**: A conformant embedded browser with comprehensive logging (EMB-1 or higher)
**Task**:
1. Configure security event logging for the embedded browser
2. Trigger various trust boundary violations: accessing blocked origins, calling restricted APIs, certificate validation failures, CSP violations
3. Review generated security events and verify they contain: timestamp, event type, origin/source, detailed description, severity level, stack trace/context
4. Verify that security events are distinct from general application logs
5. Test that security events can be forwarded to SIEM or security monitoring systems
6. Verify that high-severity violations trigger immediate alerts
7. Test that security events include sufficient context for incident investigation
8. Verify that event generation does not disrupt application functionality
**Verification**:
- Trust boundary violations generate security events
- Events include comprehensive context: timestamp, type, origin, description, severity
- Events are distinguishable from general logs (separate channel or marked)
- Events can be exported or forwarded to security monitoring systems
- High-severity events trigger immediate alerts
- Events include actionable information for incident response
- Event logging is reliable and does not impact app stability
- Events are tamper-resistant
**Pass Criteria**: All boundary violations generate security events AND events include sufficient context AND can be forwarded to monitoring systems
**Fail Criteria**: Violations don't generate events OR insufficient context OR cannot be monitored externally
**Evidence**: Security event log samples, event schema documentation, SIEM integration configuration, alert configuration, incident response playbooks referencing events, event log integrity verification
**References**:
- NIST SP 800-61: Computer Security Incident Handling Guide: https://csrc.nist.gov/publications/detail/sp/800-61/rev-2/final
- OWASP Logging Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html
- CEF (Common Event Format): https://www.microfocus.com/documentation/arcsight/arcsight-smartconnectors/pdfdoc/common-event-format-v25/common-event-format-v25.pdf
- SIEM Integration Best Practices: https://www.sans.org/white-papers/36427/
### Assessment: EMB-REQ-33 (Block web content access to host application objects at EMB-0)
**Reference**: EMB-REQ-33 - Embedded browser shall prevent all web content access to host application objects at EMB-0 capability level
**Given**: A conformant embedded browser with EMB-0 capability (no JavaScript bridge or native API exposure)
**Task**: At EMB-0 capability, embedded browsers must completely isolate web content from host application objects, methods, and data structures to prevent JavaScript injection attacks, host context manipulation, and privilege escalation. Allowing any bridge interface, custom JavaScript objects, or window property injection at this level contradicts the security posture of complete isolation, enabling malicious web content to escape sandbox boundaries and compromise the host application. Complete object isolation with no window augmentation, strict namespace separation, and frozen global scope ensures zero native access.
**Verification**:
1. Load untrusted web content in the embedded browser
2. Attempt to access common JavaScript bridge object names (AndroidBridge, webkit, chrome, nativeInterface, etc.) and verify they are undefined
3. Enumerate window object properties and confirm no host-injected objects exist
4. Test reflection APIs (Object.keys, Object.getOwnPropertyNames) on window and verify no custom properties
5. Attempt to override native JavaScript methods and verify host does not expose overridden methods
6. Test for custom event listeners added by host and confirm none exist
7. Attempt to access parent/opener contexts and verify they are inaccessible or null
8. Verify window.external is undefined or blocked (legacy IE bridge interface)
9. Test for prompt/alert/confirm hijacking that would allow host communication
10. Verify no custom URL schemes trigger host-side callbacks at EMB-0
11. All common bridge object names undefined
12. Window object contains only standard web platform APIs
13. No host-injected properties in global scope
14. Reflection APIs show only standard properties
15. Native method overrides not exploitable for host communication
16. No custom event listeners from host
17. Parent/opener contexts inaccessible
18. window.external undefined or blocked
19. Dialog APIs do not create host communication channels
20. Custom URL schemes do not trigger host callbacks
**Pass Criteria**: All bridge objects undefined AND window object contains only standard APIs AND no host-injected properties AND no communication channels exist
**Fail Criteria**: Bridge objects accessible OR custom window properties present OR host communication possible OR custom schemes trigger callbacks
**Evidence**: JavaScript console enumeration of window properties, reflection API output showing standard APIs only, bridge access attempt logs showing errors, URL scheme handler testing, dialog API interaction verification
**References**:
- OWASP Mobile WebView Security: https://mas.owasp.org/MASTG/tests/android/MASVS-PLATFORM/MASTG-TEST-0028/
- Android WebView addJavascriptInterface: https://developer.android.com/reference/android/webkit/WebView#addJavascriptInterface(java.lang.Object,%20java.lang.String)
- iOS WKWebView Script Message Handlers: https://developer.apple.com/documentation/webkit/wkusercontentcontroller
- Electron Context Isolation: https://www.electronjs.org/docs/latest/tutorial/context-isolation
### Assessment: EMB-REQ-34 (No JavaScript bridge exposure at EMB-0)
**Reference**: EMB-REQ-34 - No JavaScript bridge or native API exposure mechanism shall exist at EMB-0 capability level
**Given**: A conformant embedded browser with EMB-0 capability (no JavaScript bridge or native API exposure)
**Task**: JavaScript bridges create privileged communication channels between web content and native host applications, fundamentally violating EMB-0's isolation requirement. Any bridge mechanism—addJavascriptInterface (Android), WKScriptMessageHandler (iOS), contextBridge (Electron), or custom implementations—enables web content to invoke native methods, access host data, and potentially execute arbitrary code in the native context. At EMB-0, all bridge registration APIs must be disabled, configuration immutable, and attempted bridge creation blocked to ensure complete isolation.
**Verification**:
1. Review embedded browser initialization code and verify no bridge registration calls present
2. Test Android WebView addJavascriptInterface and confirm the API is not called or is blocked
3. Test iOS WKWebView addScriptMessageHandler and verify no handlers are registered
4. Verify Electron contextBridge is not exposed in renderer preload scripts
5. Attempt to register custom bridge handlers at runtime and verify registration fails
6. Test legacy bridge mechanisms (window.external, custom protocol schemes) and confirm they are disabled
7. Verify embedded browser configuration prevents dynamic bridge creation
8. Review application code for bridge-related APIs and confirm none are used
9. Test that web content cannot trigger native method invocation through any mechanism
10. Verify security logs show zero bridge registration or access attempts
11. No addJavascriptInterface calls in Android WebView initialization
12. No WKScriptMessageHandler registered in iOS WKWebView
13. Electron contextBridge not exposed to renderer
14. Runtime bridge registration attempts fail
15. window.external undefined or non-functional
16. Custom protocol scheme handlers do not create bridge channels
17. Configuration prevents dynamic bridge creation
18. Application code audit shows no bridge APIs used
19. Web content cannot invoke native methods
20. Security logs confirm zero bridge activity
**Pass Criteria**: No bridge registration APIs called AND runtime bridge creation blocked AND no legacy bridge mechanisms AND web-to-native invocation impossible
**Fail Criteria**: Bridge APIs called OR dynamic registration possible OR legacy bridges functional OR native invocation succeeds
**Evidence**: Source code review showing no bridge registration, runtime bridge attempt logs showing failures, WebView/browser configuration showing bridge disabled, security log analysis showing zero bridge activity, web content isolation testing
**References**:
- Android WebView JavaScript Interface Security: https://developer.android.com/reference/android/webkit/WebView#addJavascriptInterface(java.lang.Object,%20java.lang.String)
- iOS WKWebView Message Handlers: https://developer.apple.com/documentation/webkit/wkscriptmessagehandler
- Electron Context Isolation: https://www.electronjs.org/docs/latest/tutorial/context-isolation
- OWASP WebView Security: https://mas.owasp.org/MASTG/tests/android/MASVS-PLATFORM/MASTG-TEST-0028/
### Assessment: EMB-REQ-35 (Treat all content as untrusted at EMB-0)
**Reference**: EMB-REQ-35 - Embedded browser shall treat all loaded content as completely untrusted at EMB-0 capability level
**Given**: A conformant embedded browser with EMB-0 capability (no JavaScript bridge or native API exposure)
**Task**: At EMB-0, embedded browsers must apply maximum security restrictions to all web content regardless of source origin, loading mechanism, or content type, treating even application-bundled content as potentially malicious. Trusting any content source creates privilege escalation risks where attackers who compromise trusted origins gain disproportionate access. Universal untrusted treatment with strict CSP enforcement, feature policy restrictions, and capability lockdown ensures consistent security posture across all content, preventing attackers from exploiting trust assumptions to escape isolation boundaries.
**Verification**:
1. Load content from application bundle resources and verify same security restrictions as remote content
2. Test application-bundled HTML/JS and confirm no privileged access granted
3. Load content from localhost and verify it receives no special treatment
4. Test file:// protocol content and confirm strict security policies applied
5. Verify Content Security Policy enforced uniformly for all content sources
6. Test that bundled content cannot access host APIs unavailable to remote content
7. Verify feature policy restrictions apply equally to all origins
8. Load same content from different sources (bundle, localhost, remote) and verify identical API availability
9. Test that no "trusted origin" configuration grants elevated privileges at EMB-0
10. Verify permission prompts (if any) appear for all content regardless of source
11. Bundled content has same restrictions as remote content
12. No privileged access for application resources
13. Localhost receives no elevated privileges
14. file:// content strictly restricted
15. CSP applied uniformly to all sources
16. Host APIs equally inaccessible from all origins
17. Feature policies enforced consistently
18. API availability identical across content sources
19. No trusted origin exceptions at EMB-0
20. Permission requirements uniform across origins
**Pass Criteria**: All content sources treated identically AND no privileged access for bundled content AND CSP enforced uniformly AND no trusted origin exceptions
**Fail Criteria**: Bundled content has elevated privileges OR localhost trusted OR file:// bypasses restrictions OR trusted origins exist
**Evidence**: Content source comparison testing showing identical restrictions, CSP policy verification across sources, API availability enumeration by source, bundled content security analysis, trusted origin configuration audit
**References**:
- Android WebView Local Content Security: https://developer.android.com/develop/ui/views/layout/webapps/webview#local-content
- Content Security Policy: https://www.w3.org/TR/CSP3/
- Feature Policy: https://www.w3.org/TR/permissions-policy-1/
- OWASP WebView Best Practices: https://mas.owasp.org/MASTG/tests/android/MASVS-PLATFORM/MASTG-TEST-0028/
### Assessment: EMB-REQ-36 (Allowlist-only bridge API access at EMB-1)
**Reference**: EMB-REQ-36 - Only explicitly allowlisted APIs shall be accessible from web content at EMB-1 capability level
**Given**: A conformant embedded browser with EMB-1 capability (limited JavaScript bridge with explicit allowlist)
**Task**: JavaScript bridge security depends on explicit allowlisting where only pre-approved, security-reviewed APIs are exposed to web content, preventing reflection-based attacks, dynamic invocation exploits, and unintended API exposure. Denylist approaches fail because attackers discover undocumented APIs through reflection, bypass filters with encoding tricks, or exploit newly added methods. Explicit allowlisting with runtime enforcement, reflection blocking, and comprehensive API inventory ensures web content accesses only intended interfaces, preventing bridge exploitation and host compromise.
**Verification**:
1. Review JavaScript bridge configuration and document complete allowlist of exposed APIs
2. Attempt to invoke API methods not in the allowlist and verify calls are blocked with errors
3. Use reflection APIs in JavaScript to enumerate bridge object methods
4. Verify reflection returns only allowlisted methods (or reflection is blocked entirely)
5. Test dynamic invocation (bridge[methodName]()) and confirm only allowlisted methods callable
6. Attempt to access bridge object prototype and verify it's not exploitable for additional access
7. Test method name variations (case changes, encoding) and verify strict matching enforced
8. Attempt to add methods to bridge object at runtime and verify it's immutable
9. Test that bridge API additions require host application code changes and cannot be made from web content
10. Verify documentation and implementation match (no undocumented APIs accessible)
11. Allowlisted APIs documented comprehensively
12. Non-allowlisted method calls blocked with errors
13. Reflection shows only allowlisted methods or is blocked
14. Dynamic invocation limited to allowlist
15. Prototype chain not exploitable for API discovery
16. Method name matching is strict
17. Bridge object immutable from web context
18. API additions require native code changes
19. No undocumented APIs accessible
20. Security review documentation exists for all allowlisted APIs
**Pass Criteria**: Only allowlisted APIs accessible AND reflection blocked or limited AND dynamic invocation restricted AND bridge immutable from web
**Fail Criteria**: Non-allowlisted APIs accessible OR reflection exposes unapproved methods OR dynamic invocation bypasses allowlist OR bridge mutable
**Evidence**: Bridge configuration showing explicit allowlist, reflection API output, method invocation logs showing blocked calls, immutability testing results, security review documentation for allowlisted APIs
**References**:
- OWASP API Security: https://owasp.org/www-project-api-security/
- Principle of Least Privilege: https://csrc.nist.gov/glossary/term/least_privilege
- Android WebView Interface Security: https://developer.android.com/reference/android/webkit/WebView#addJavascriptInterface(java.lang.Object,%20java.lang.String)
- Secure JavaScript Bridge Design: https://www.electronjs.org/docs/latest/tutorial/context-isolation
### Assessment: EMB-REQ-37 (Minimal and documented bridge API allowlist at EMB-1)
**Reference**: EMB-REQ-37 - Bridge API allowlist shall be minimal and documented at EMB-1 capability level
**Given**: A conformant embedded browser with EMB-1 capability (limited JavaScript bridge with explicit allowlist)
**Task**: JavaScript bridge security requires minimizing exposed API surface to reduce attack vectors, limit exploit potential, and simplify security review. Each exposed API creates opportunities for parameter injection, logic bugs, race conditions, and privilege escalation. Comprehensive documentation with security implications, threat models, input constraints, and usage examples enables security assessment, developer guidance, and audit compliance. Minimal API surface with complete documentation balances functionality needs with security risk management.
**Verification**:
1. Review complete bridge API allowlist and count exposed methods/functions
2. For each exposed API, verify security documentation exists explaining: purpose, parameters, return values, security implications, threat model
3. Verify exposed APIs represent minimum necessary for application functionality
4. Review application code and confirm all exposed bridge APIs are actually used
5. Identify any exposed APIs that are unused and flag for removal
6. Verify documentation includes input validation requirements for each API
7. Test that developers can understand API security implications from documentation alone
8. Verify threat model documentation covers potential attack vectors for each API
9. Confirm documentation includes safe usage examples and anti-patterns to avoid
10. Verify security review sign-off exists for the API surface
11. Complete API inventory documented
12. Each API has security documentation
13. Security docs include threat models
14. API surface justified as minimal
15. No unused APIs exposed
16. Input validation requirements documented
17. Security implications clearly explained
18. Attack vectors identified per API
19. Safe usage examples provided
20. Security review approval documented
**Pass Criteria**: API surface minimal and justified AND complete security documentation AND threat models per API AND security review approved
**Fail Criteria**: Excessive API surface OR missing documentation OR no threat models OR unused APIs exposed OR no security review
**Evidence**: Bridge API inventory with justifications, security documentation for each API, threat model documents, usage analysis showing API necessity, security review approval records
**References**:
- Attack Surface Reduction: https://csrc.nist.gov/glossary/term/attack_surface
- Threat Modeling: https://owasp.org/www-community/Threat_Modeling
- API Documentation Best Practices: https://swagger.io/specification/
- OWASP API Security: https://owasp.org/www-project-api-security/
### Assessment: EMB-REQ-38 (Bidirectional bridge security controls at EMB-2)
**Reference**: EMB-REQ-38 - Bidirectional bridge calls shall maintain same security controls in both directions at EMB-2 capability level
**Given**: A conformant embedded browser with EMB-2 capability (extended JavaScript bridge with bidirectional communication)
**Task**: Bidirectional JavaScript bridges enable both web-to-native and native-to-web communication, creating dual attack surfaces where malicious web content can exploit native-to-web callbacks and compromised native code can exploit web-to-native handlers. Asymmetric security controls create vulnerabilities where attackers bypass strict web-to-native validation by exploiting weaker native-to-web callback validation. Symmetric security enforcement with identical validation, logging, rate limiting, and permission checks in both directions prevents directional exploitation and maintains consistent security posture.
**Verification**:
1. Document all bidirectional bridge APIs (web-to-native calls and native-to-web callbacks)
2. Test input validation on web-to-native calls and document validation rules
3. Test input validation on native-to-web callbacks and verify identical validation strictness
4. Compare validation, sanitization, and type checking between directions
5. Verify logging is comprehensive for both web-to-native and native-to-web communications
6. Test rate limiting applies equally to both communication directions
7. Verify permission checks enforced symmetrically
8. Attempt to bypass web-to-native validation by exploiting native-to-web callback path
9. Test that callbacks cannot be used to inject unvalidated data into web context
10. Verify security audit events generated for both communication directions
11. Bidirectional APIs fully documented
12. Web-to-native calls validated comprehensively
13. Native-to-web callbacks equally validated
14. Validation rules identical in strictness
15. Logging comprehensive for both directions
16. Rate limiting symmetric
17. Permission checks enforced both ways
18. Callback path cannot bypass validation
19. Callbacks do not inject unvalidated data
20. Audit events generated for all communications
**Pass Criteria**: Validation symmetric across directions AND logging comprehensive for both AND rate limiting equal AND no bypass via callback path
**Fail Criteria**: Asymmetric validation OR logging gaps in one direction OR rate limiting inconsistent OR callback path bypasses controls
**Evidence**: Bidirectional API documentation, validation rule comparison, logging configuration showing symmetry, rate limiting policy analysis, bypass attempt test results, security audit logs
**References**:
- Secure IPC Design: https://chromium.googlesource.com/chromium/src/+/master/docs/security/mojo.md
- Bidirectional Communication Security: https://www.electronjs.org/docs/latest/tutorial/message-ports
- Input Validation: https://cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html
- Defense in Depth: https://csrc.nist.gov/glossary/term/defense_in_depth
### Assessment: EMB-REQ-39 (Web content callback handler validation at EMB-2)
**Reference**: EMB-REQ-39 - Web content callback handlers shall be validated before invocation at EMB-2 capability level
**Given**: A conformant embedded browser with EMB-2 capability (extended JavaScript bridge with bidirectional communication)
**Task**: Native-to-web callbacks invoke JavaScript functions provided by web content, creating code injection and XSS risks if callbacks execute attacker-controlled functions or pass unvalidated data. Without strict validation, malicious web content registers callback handlers that exploit native invocation context, inject payloads through callback parameters, or leverage privileged execution timing. Handler validation with type checking, origin verification, parameter sanitization, and safe invocation patterns prevents callback-based attacks while enabling legitimate bidirectional communication.
**Verification**:
1. Register web content callback handler with JavaScript bridge
2. Trigger native-to-web callback from host application
3. Verify native code validates callback handler exists and is a function before invocation
4. Test registering non-function callback and verify native code rejects or handles safely
5. Verify callback parameters are validated and sanitized on native side before passing to web
6. Test passing complex objects through callbacks and confirm type checking enforced
7. Attempt to register callback that accesses privileged global state and verify isolation maintained
8. Test callback error handling and confirm errors don't expose native stack traces
9. Verify callbacks execute in restricted context without elevated privileges
10. Test that callback invocation includes origin verification
11. Callback existence validated before invocation
12. Non-function callbacks rejected or handled safely
13. Callback parameters validated on native side
14. Type checking enforced for complex objects
15. Callbacks cannot access privileged state
16. Error handling prevents stack trace exposure
17. Callbacks execute in restricted context
18. Origin verification performed before invocation
19. Callback invocation logged for audit
20. Malicious callbacks detected and blocked
**Pass Criteria**: Callbacks validated before invocation AND parameters sanitized AND error handling safe AND origin verification performed
**Fail Criteria**: Callbacks invoked without validation OR parameters unsanitized OR errors expose details OR no origin verification
**Evidence**: Callback registration and invocation code review, parameter validation testing, error handling analysis, origin verification logs, malicious callback detection results
**References**:
- Callback Security: https://www.electronjs.org/docs/latest/tutorial/security#17-validate-the-options-of-the-webcontents-opendevtools-call
- XSS Prevention: https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html
- Safe JavaScript Invocation: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call
- Input Validation: https://cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html
### Assessment: EMB-REQ-40 (Bridge message queuing with integrity protection at EMB-2)
**Reference**: EMB-REQ-40 - Bridge shall implement message queuing with integrity protection at EMB-2 capability level
**Given**: A conformant embedded browser with EMB-2 capability (extended JavaScript bridge with bidirectional communication)
**Task**: Asynchronous JavaScript bridge communication requires message queuing to decouple sender and receiver timing, but queues create attack surfaces for message tampering, injection, reordering, and replay attacks. Without integrity protection, attackers intercept queued messages to modify parameters, inject malicious messages, reorder operations to cause logic bugs, or replay messages to duplicate actions. Authenticated message queuing with sequence numbers, cryptographic MACs, and queue integrity verification prevents message manipulation while enabling reliable asynchronous communication.
**Verification**:
1. Trigger asynchronous JavaScript bridge communication requiring message queuing
2. Verify messages include sequence numbers or timestamps for ordering
3. Attempt to tamper with queued message content and verify integrity check detects modification
4. Test message injection into queue and verify authentication prevents acceptance
5. Attempt to reorder messages in queue and verify sequence validation detects anomaly
6. Test message replay attack and verify sequence/nonce checking prevents duplicate processing
7. Verify queue implementation uses cryptographic integrity protection (MAC, signature)
8. Test queue overflow scenarios and verify graceful degradation without security compromise
9. Verify message queue is not accessible to web content for direct manipulation
10. Test that queue integrity failures trigger security events and logging
11. Messages include sequence numbers or timestamps
12. Tampering detected through integrity checks
13. Injected messages rejected due to authentication failure
14. Reordering detected and handled safely
15. Replay attacks prevented by sequence/nonce validation
16. Cryptographic integrity protection used (MAC/signature)
17. Queue overflow handled securely
18. Queue not manipulable by web content
19. Integrity failures logged as security events
20. Queue implementation resists race conditions
**Pass Criteria**: Messages integrity protected AND sequence validation enforced AND tampering detected AND replay prevention implemented
**Fail Criteria**: No integrity protection OR sequence validation absent OR tampering undetected OR replay attacks succeed
**Evidence**: Message format documentation showing integrity fields, tampering test results, injection attempt logs, replay attack prevention verification, queue implementation security review
**References**:
- Message Queue Security: https://www.rabbitmq.com/security.html
- HMAC Integrity Protection: https://csrc.nist.gov/projects/hash-functions
- Replay Attack Prevention: https://cheatsheetseries.owasp.org/cheatsheets/Cryptographic_Storage_Cheat_Sheet.html
- Secure IPC: https://chromium.googlesource.com/chromium/src/+/master/docs/security/mojo.md
### Assessment: EMB-REQ-41 (Bridge traffic anomaly monitoring at EMB-2)
**Reference**: EMB-REQ-41 - Host shall monitor bridge traffic for anomalies at EMB-2 capability level
**Given**: A conformant embedded browser with EMB-2 capability (extended JavaScript bridge with bidirectional communication)
**Task**: JavaScript bridge traffic exhibits predictable patterns during normal application usage, enabling anomaly detection to identify attacks, compromised content, or exploited vulnerabilities. Monitoring for rate anomalies, suspicious method sequences, unusual parameters, or exploit patterns enables early attack detection and incident response. Without traffic monitoring, attackers exploit bridges repeatedly, probe for vulnerabilities, or exfiltrate data without detection. Real-time anomaly detection with baseline profiling, statistical analysis, and automated alerting prevents prolonged bridge exploitation.
**Verification**:
1. Establish baseline bridge traffic profile during normal application usage
2. Configure anomaly detection with thresholds for: message rate, method frequency, parameter patterns, error rates
3. Trigger normal bridge usage and verify no false positive alerts
4. Simulate attack scenarios: rapid API calls exceeding rate limits, unusual method combinations, malformed parameters
5. Verify anomaly detection system identifies and alerts on attack traffic
6. Test that alerts include sufficient context for investigation (origin, methods called, parameters, timing)
7. Verify anomaly detection integrates with application security monitoring/SIEM
8. Test automated responses to anomalies (throttling, blocking, enhanced logging)
9. Verify baseline profiles updated automatically to reflect legitimate usage changes
10. Test that monitoring performance overhead is acceptable
11. Baseline traffic profile established
12. Anomaly detection thresholds configured
13. Normal usage generates no false positives
14. Attack scenarios detected reliably
15. Alerts include investigation context
16. SIEM integration functional
17. Automated responses implemented
18. Baseline adapts to usage changes
19. Monitoring overhead acceptable
20. Security team receives actionable alerts
**Pass Criteria**: Anomaly detection functional AND attack scenarios detected AND false positives minimal AND automated alerting works
**Fail Criteria**: No anomaly detection OR attacks undetected OR excessive false positives OR no alerting integration
**Evidence**: Baseline traffic profile documentation, anomaly detection configuration, attack simulation results showing detection, alert samples, SIEM integration logs, performance impact analysis
**References**:
- Anomaly Detection: https://csrc.nist.gov/glossary/term/anomaly_detection
- Security Monitoring: https://www.sans.org/white-papers/36472/
- SIEM Integration: https://owasp.org/www-community/Log_Injection
- Behavioral Analysis: https://csrc.nist.gov/publications/detail/sp/800-94/final
### Assessment: EMB-REQ-42 (Enterprise bridge API policy configuration at EMB-2)
**Reference**: EMB-REQ-42 - Enterprise administrators shall be able to configure bridge API policies at EMB-2 capability level
**Given**: A conformant embedded browser with EMB-2 capability supporting enterprise policy management
**Task**: Enterprise deployments require centralized control over JavaScript bridge capabilities to enforce organizational security standards, prevent data exfiltration, comply with regulations, and manage risk. Without policy controls, users or developers expose sensitive APIs that violate corporate security policies, grant excessive privileges to web content, or enable unauthorized native functionality. Enterprise policy integration with API allowlist management, permission restrictions, and audit requirements enables IT governance over bridge security posture.
**Verification**:
1. Access enterprise policy configuration interface (MDM, configuration profile, policy file)
2. Configure policy to restrict bridge API allowlist to specific approved methods
3. Deploy policy to application and verify restricted methods are inaccessible to web content
4. Test that web content attempting to access policy-blocked APIs receives clear errors
5. Configure policy requiring audit logging for all bridge communications
6. Verify policy-mandated logging cannot be disabled by application developers
7. Configure policy setting maximum rate limits for bridge API calls
8. Test that rate limits are enforced per policy configuration
9. Verify policy can completely disable bridge functionality if required
10. Test that policy changes take effect without requiring application recompilation
11. Enterprise policy interface accessible to IT administrators
12. API allowlist restrictions enforceable via policy
13. Restricted APIs blocked with clear errors
14. Audit logging requirement enforceable
15. Logging cannot be disabled when policy requires it
16. Rate limits configurable and enforced
17. Bridge functionality can be disabled by policy
18. Policy changes effective without recompilation
19. Policy violations logged to enterprise monitoring
20. Administrators can audit current bridge configuration
**Pass Criteria**: Enterprise policies enforced AND API restrictions work AND logging mandatory when required AND policy updates dynamic
**Fail Criteria**: Policies not enforced OR API restrictions bypassed OR logging can be disabled OR policy updates require recompilation
**Evidence**: Enterprise policy configuration documentation, API restriction enforcement testing, audit logging verification, rate limit enforcement analysis, policy update procedures, compliance reports
**References**:
- Enterprise Mobile Management: https://developer.apple.com/documentation/devicemanagement
- Android Enterprise: https://developers.google.com/android/work
- Mobile Application Management: https://www.microsoft.com/en-us/security/business/threat-protection/mobile-application-management
- Security Policy Enforcement: https://csrc.nist.gov/glossary/term/policy_enforcement
### Assessment: EMB-REQ-43 (Core security boundaries preserved at EMB-3)
**Reference**: EMB-REQ-43 - Full integration shall not bypass core security boundaries at EMB-3 capability level
**Given**: A conformant embedded browser with EMB-3 capability (full integration with native capabilities)
**Task**: Even with extensive native integration at EMB-3, fundamental security boundaries must remain intact to prevent complete application compromise. Core boundaries include: renderer process isolation from host process memory, web content sandboxing, origin-based security policies, and cryptographic key isolation. Bypassing these boundaries through bridge integration enables attackers who compromise web content to escalate directly to host privileges, access other origins' data, or extract cryptographic material. Maintaining core boundaries while enabling integration preserves defense-in-depth and limits exploit impact.
**Verification**:
1. Verify renderer process isolation maintained even with extensive bridge integration
2. Test that web content cannot access host process memory directly through bridge APIs
3. Verify origin-based security model enforced (same-origin policy, CORS) despite native integration
4. Test that bridge APIs cannot bypass origin restrictions to access other origins' data
5. Verify cryptographic keys and credentials remain isolated from web content
6. Test that bridge cannot expose raw file system paths or handles that bypass sandbox
7. Verify CSP and other content security policies remain enforced
8. Test that full integration does not disable process-level sandboxing
9. Verify network security policies (certificate validation, HSTS) cannot be bypassed through bridge
10. Test that bridge APIs cannot grant web content ability to load arbitrary native code
11. Renderer process isolation intact
12. Host process memory inaccessible from web content
13. Same-origin policy enforced
14. Bridge cannot bypass origin restrictions
15. Cryptographic keys isolated
16. File system sandbox boundaries maintained
17. CSP enforced for all content
18. Process sandboxing active
19. Network security policies cannot be bypassed
20. Native code loading restricted
**Pass Criteria**: Process isolation maintained AND origin policies enforced AND crypto keys isolated AND sandbox boundaries intact
**Fail Criteria**: Process isolation bypassed OR origin policies circumvented OR keys accessible OR sandbox escaped
**Evidence**: Process isolation testing, origin policy enforcement verification, cryptographic key isolation audit, sandbox boundary testing, security architecture review
**References**:
- Browser Security Architecture: https://www.chromium.org/developers/design-documents/multi-process-architecture/
- Process Isolation: https://www.chromium.org/developers/design-documents/site-isolation/
- Same-Origin Policy: https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy
- Defense in Depth: https://csrc.nist.gov/glossary/term/defense_in_depth
### Assessment: EMB-REQ-44 (User awareness of native capabilities at EMB-3)
**Reference**: EMB-REQ-44 - User shall be informed of all native capabilities granted to web content at EMB-3 capability level
**Given**: A conformant embedded browser with EMB-3 capability (full integration with native capabilities)
**Task**: Users must understand which native capabilities are accessible to web content to make informed security and privacy decisions. Without transparency, malicious web content silently accesses camera, location, contacts, filesystem, or other sensitive native APIs through bridge integration, enabling surveillance, data theft, and privacy violations. Clear capability disclosure through permission prompts, settings interfaces, and usage indicators empowers users to grant appropriate access, revoke excessive permissions, and detect unauthorized native API usage.
**Verification**:
1. Identify all native capabilities accessible through JavaScript bridge at EMB-3
2. Verify permission prompts appear when web content first requests sensitive native capabilities
3. Test that prompts clearly explain what native access is being granted (e.g., "camera access", "contact list access")
4. Access application settings and verify list of granted native capabilities is displayed
5. Verify settings interface explains each capability in user-friendly language
6. Test that users can see which web origins have been granted each capability
7. Verify active capability usage indicators appear (e.g., camera indicator when camera accessed)
8. Test that users can click indicators to see which web content is using capabilities
9. Verify capability grants are persistent and visible across application restarts
10. Test that application documentation explains bridge capabilities and permissions model
11. Permission prompts appear for sensitive capabilities
12. Prompts clearly explain native access
13. Settings show all granted capabilities
14. Capabilities explained in user-friendly terms
15. Web origins with capabilities visible
16. Active usage indicators function
17. Indicators show which content is active
18. Grants persist across restarts
19. Documentation explains permissions model
20. Users can make informed decisions
**Pass Criteria**: Permission prompts clear AND settings show all capabilities AND usage indicators present AND documentation complete
**Fail Criteria**: No permission prompts OR settings incomplete OR no usage indicators OR missing documentation
**Evidence**: Permission prompt screenshots, settings interface documentation, usage indicator demonstration, capability grant persistence testing, user documentation review
**References**:
- Permission UX Best Practices: https://web.dev/permission-ux/
- Mobile Permission Models: https://developer.android.com/guide/topics/permissions/overview
- iOS Permission Model: https://developer.apple.com/design/human-interface-guidelines/privacy
- User Privacy Controls: https://www.w3.org/TR/privacy-controls/
### Assessment: EMB-REQ-45 (User permission review and revocation at EMB-3)
**Reference**: EMB-REQ-45 - User shall be able to review and revoke native API access at EMB-3 capability level
**Given**: A conformant embedded browser with EMB-3 capability (full integration with native capabilities)
**Task**: Users must have granular control to review all granted native API permissions and revoke access to manage security posture and respond to threats. Without revocation capabilities, users cannot remove access from compromised web content, recover from accidental over-privileged grants, or adjust permissions as trust relationships change. Permission management interface with per-origin, per-capability revocation, immediate enforcement, and usage history enables user control, security hygiene, and privacy protection.