From 3f5f8054fb6e7e734c77caa3549470d129fa5133 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Sun, 2 Jul 2023 14:25:35 +0200 Subject: [PATCH] added log in calls without TrafficAnnotationTag --- build/patches/00Internal-firewall.patch | 243 ++++++++++++++++++------ 1 file changed, 186 insertions(+), 57 deletions(-) diff --git a/build/patches/00Internal-firewall.patch b/build/patches/00Internal-firewall.patch index 03f9fa0b..a12bda67 100644 --- a/build/patches/00Internal-firewall.patch +++ b/build/patches/00Internal-firewall.patch @@ -27,14 +27,15 @@ in services/firewall/tools/rules.xml services/firewall/tools/codegen.py | 82 ++++ services/firewall/tools/decode_template.py | 85 ++++ services/firewall/tools/gen_builders.py | 65 +++ - services/firewall/tools/rules.xml | 78 +++ + services/firewall/tools/rules.xml | 81 ++++ services/firewall/tools/rules_model.py | 35 ++ + services/network/network_context.cc | 73 +++ .../network/public/cpp/simple_url_loader.cc | 18 + .../network/public/cpp/simple_url_loader.h | 3 + .../loader/fetch/url_loader/url_loader.cc | 145 +++++- .../scripts/auditor/auditor.py | 1 + .../scripts/auditor/util.py | 1 + - 27 files changed, 1424 insertions(+), 16 deletions(-) + 28 files changed, 1500 insertions(+), 16 deletions(-) create mode 100644 services/firewall/public/BUILD.gn create mode 100644 services/firewall/public/firewall_features.cc create mode 100644 services/firewall/public/firewall_features.h @@ -71,7 +72,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc #include "services/media_session/public/cpp/features.h" #include "services/network/public/cpp/features.h" #include "services/network/public/cpp/network_switches.h" -@@ -7858,6 +7859,11 @@ const FeatureEntry kFeatureEntries[] = { +@@ -7854,6 +7855,11 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(page_info::kPageInfoHideSiteSettings)}, #endif // !BUILDFLAG(IS_ANDROID) @@ -683,9 +684,8 @@ new file mode 100644 + + + -+ ++ + -+ + + + @@ -699,12 +699,12 @@ new file mode 100644 + + + -+ ++ + + + + -+ ++ + + + @@ -716,7 +716,7 @@ new file mode 100644 + + + -+ ++ + + + @@ -727,7 +727,7 @@ new file mode 100644 + + + -+ ++ + + + @@ -770,19 +770,16 @@ new file mode 100644 + + + -+ + + + + + + -+ + + + + -+ + + + @@ -809,11 +806,8 @@ new file mode 100644 + + + -+ ++ + -+ -+ -+ + + + @@ -830,7 +824,6 @@ new file mode 100644 + + + -+ + + + @@ -846,7 +839,7 @@ new file mode 100644 + + + -+ ++ + + + @@ -864,9 +857,9 @@ new file mode 100644 + + + -+ ++ + -+ ++ + + + @@ -886,7 +879,7 @@ new file mode 100644 + + + -+ ++ + + + @@ -894,7 +887,7 @@ new file mode 100644 + + + -+ ++ + + + @@ -903,7 +896,7 @@ new file mode 100644 + + + -+ ++ + + + @@ -933,7 +926,6 @@ new file mode 100644 + + + -+ + + + @@ -942,16 +934,16 @@ new file mode 100644 + + + ++ + + + + + -+ -+ -+ -+ -+ ++ ++ ++ ++ + + + @@ -973,7 +965,6 @@ new file mode 100644 + + + -+ + + + @@ -982,8 +973,7 @@ new file mode 100644 + + + -+ -+ ++ + + + @@ -991,25 +981,22 @@ new file mode 100644 + + + -+ + + + + -+ -+ -+ ++ ++ ++ + -+ + + + + + + -+ + -+ ++ + + + @@ -1024,8 +1011,10 @@ new file mode 100644 + + + -+ -+ ++ ++ ++ ++ + + + @@ -1033,10 +1022,9 @@ new file mode 100644 + + + -+ + + -+ ++ + + + @@ -1054,21 +1042,34 @@ new file mode 100644 + + + -+ ++ + + -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + diff --git a/services/firewall/tools/builders_template.py b/services/firewall/tools/builders_template.py new file mode 100644 @@ -1398,7 +1399,7 @@ diff --git a/services/firewall/tools/rules.xml b/services/firewall/tools/rules.x new file mode 100644 --- /dev/null +++ b/services/firewall/tools/rules.xml -@@ -0,0 +1,78 @@ +@@ -0,0 +1,81 @@ + + + + ++ ++ ++ + + + @@ -1517,6 +1521,131 @@ new file mode 100644 + ]) + +RULES_XML_TYPE = models.DocumentType(_RULES_CONFIGURATION_TYPE) +diff --git a/services/network/network_context.cc b/services/network/network_context.cc +--- a/services/network/network_context.cc ++++ b/services/network/network_context.cc +@@ -86,6 +86,7 @@ + #include "net/url_request/url_request.h" + #include "net/url_request/url_request_context.h" + #include "net/url_request/url_request_context_builder.h" ++#include "services/firewall/public/firewall_service.h" + #include "services/network/brokered_client_socket_factory.h" + #include "services/network/cookie_manager.h" + #include "services/network/cors/cors_url_loader_factory.h" +@@ -1525,6 +1526,9 @@ void NetworkContext::OnNewSCTAuditingReportSent() { + void NetworkContext::CreateUDPSocket( + mojo::PendingReceiver receiver, + mojo::PendingRemote listener) { ++ if (base::FeatureList::IsEnabled(firewall::features::kEnableFirewall)) { ++ LOG(INFO) << "---LOGGING CreateUDPSocket"; ++ } + socket_factory_->CreateUDPSocket(std::move(receiver), std::move(listener)); + } + +@@ -1537,6 +1541,17 @@ void NetworkContext::CreateRestrictedUDPSocket( + mojo::PendingRemote listener, + CreateRestrictedUDPSocketCallback callback) { + // SimpleHostResolver is transitively owned by |this|. ++ if (base::FeatureList::IsEnabled(firewall::features::kEnableFirewall)) { ++ auto firewall_service = std::make_unique(nullptr); ++ //if (firewall_service->IsAllowed(traffic_annotation.unique_id_hash_code)) { ++ auto entry = firewall_service->GetEntry(traffic_annotation.unique_id_hash_code); ++ LOG(INFO) << "---LOGGING CreateRestrictedUDPSocket: " ++ << (entry.has_value() ? entry->name : "no-name") ++ << "(" << traffic_annotation.unique_id_hash_code << ")" ++ << " addr: " << addr.ToString() ++ << " path: " << (entry.has_value() ? entry->path : "no-path"); ++ //} ++ } + socket_factory_->CreateRestrictedUDPSocket( + addr, mode, traffic_annotation, std::move(params), std::move(receiver), + std::move(listener), SimpleHostResolver::Create(this), +@@ -1549,6 +1564,17 @@ void NetworkContext::CreateTCPServerSocket( + const net::MutableNetworkTrafficAnnotationTag& traffic_annotation, + mojo::PendingReceiver receiver, + CreateTCPServerSocketCallback callback) { ++ if (base::FeatureList::IsEnabled(firewall::features::kEnableFirewall)) { ++ auto firewall_service = std::make_unique(nullptr); ++ //if (firewall_service->IsAllowed(traffic_annotation.unique_id_hash_code)) { ++ auto entry = firewall_service->GetEntry(traffic_annotation.unique_id_hash_code); ++ LOG(INFO) << "---LOGGING CreateTCPServerSocket: " ++ << (entry.has_value() ? entry->name : "no-name") ++ << "(" << traffic_annotation.unique_id_hash_code << ")" ++ << " local_addr: " << local_addr.ToString() ++ << " path: " << (entry.has_value() ? entry->path : "no-path"); ++ //} ++ } + socket_factory_->CreateTCPServerSocket( + local_addr, std::move(options), + static_cast(traffic_annotation), +@@ -1563,6 +1589,21 @@ void NetworkContext::CreateTCPConnectedSocket( + mojo::PendingReceiver receiver, + mojo::PendingRemote observer, + CreateTCPConnectedSocketCallback callback) { ++ if (base::FeatureList::IsEnabled(firewall::features::kEnableFirewall)) { ++ auto firewall_service = std::make_unique(nullptr); ++ //if (firewall_service->IsAllowed(traffic_annotation.unique_id_hash_code)) { ++ auto entry = firewall_service->GetEntry(traffic_annotation.unique_id_hash_code); ++ LOG(INFO) << "---LOGGING CreateTCPConnectedSocket: " ++ << (entry.has_value() ? entry->name : "no-name") ++ << "(" << traffic_annotation.unique_id_hash_code << ")" ++ << " addr: " << remote_addr_list.front().ToString() ++ << " path: " << (entry.has_value() ? entry->path : "no-path"); ++ // std::move(callback) ++ // .Run(net::ERR_FAILED, absl::nullopt, absl::nullopt, ++ // mojo::ScopedDataPipeConsumerHandle(), ++ // mojo::ScopedDataPipeProducerHandle()); ++ //} ++ } + socket_factory_->CreateTCPConnectedSocket( + local_addr, remote_addr_list, std::move(tcp_connected_socket_options), + static_cast(traffic_annotation), +@@ -1574,6 +1615,20 @@ void NetworkContext::CreateTCPBoundSocket( + const net::MutableNetworkTrafficAnnotationTag& traffic_annotation, + mojo::PendingReceiver receiver, + CreateTCPBoundSocketCallback callback) { ++ if (base::FeatureList::IsEnabled(firewall::features::kEnableFirewall)) { ++ auto firewall_service = std::make_unique(nullptr); ++ //if (firewall_service->IsAllowed(traffic_annotation.unique_id_hash_code)) { ++ auto entry = firewall_service->GetEntry(traffic_annotation.unique_id_hash_code); ++ LOG(INFO) << "---LOGGING CreateTCPBoundSocket: " ++ << (entry.has_value() ? entry->name : "no-name") ++ << "(" << traffic_annotation.unique_id_hash_code << ")" ++ << " path: " << (entry.has_value() ? entry->path : "no-path"); ++ // std::move(callback) ++ // .Run(net::ERR_FAILED, absl::nullopt, absl::nullopt, ++ // mojo::ScopedDataPipeConsumerHandle(), ++ // mojo::ScopedDataPipeProducerHandle()); ++ //} ++ } + socket_factory_->CreateTCPBoundSocket( + local_addr, + static_cast(traffic_annotation), +@@ -1639,6 +1694,24 @@ void NetworkContext::CreateWebSocket( + mojo::PendingRemote auth_handler, + mojo::PendingRemote header_client, + const absl::optional& throttling_profile_id) { ++ if (base::FeatureList::IsEnabled(firewall::features::kEnableFirewall)) { ++ auto firewall_service = std::make_unique(nullptr); ++ if (!firewall_service->IsAllowed(traffic_annotation.unique_id_hash_code)) { ++ auto entry = firewall_service->GetEntry(traffic_annotation.unique_id_hash_code); ++ LOG(INFO) << "---ABORTED CreateWebSocket: " ++ << (entry.has_value() ? entry->name : "no-name") ++ << "(" << traffic_annotation.unique_id_hash_code << ")" ++ << " url " << url ++ << " path: " << (entry.has_value() ? entry->path : "no-path"); ++ ++ mojo::Remote handshake_client_remote( ++ std::move(handshake_client)); ++ handshake_client_remote->OnFailure("Insufficient resources", ++ net::ERR_INSUFFICIENT_RESOURCES, -1); ++ handshake_client_remote.reset(); ++ return; ++ } ++ } + #if !BUILDFLAG(IS_IOS) + if (!websocket_factory_) + websocket_factory_ = std::make_unique(this); diff --git a/services/network/public/cpp/simple_url_loader.cc b/services/network/public/cpp/simple_url_loader.cc --- a/services/network/public/cpp/simple_url_loader.cc +++ b/services/network/public/cpp/simple_url_loader.cc