Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(343)

Side by Side Diff: chrome/browser/safe_browsing/download_protection_service.cc

Issue 2934373002: Record Code Signature of Downloaded DMG files (Closed)
Patch Set: correcting rebase mixup Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/safe_browsing/download_protection_service_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/safe_browsing/download_protection_service.h" 5 #include "chrome/browser/safe_browsing/download_protection_service.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 10
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 DownloadProtectionService* service, 355 DownloadProtectionService* service,
356 const scoped_refptr<SafeBrowsingDatabaseManager>& database_manager, 356 const scoped_refptr<SafeBrowsingDatabaseManager>& database_manager,
357 BinaryFeatureExtractor* binary_feature_extractor) 357 BinaryFeatureExtractor* binary_feature_extractor)
358 : item_(item), 358 : item_(item),
359 url_chain_(item->GetUrlChain()), 359 url_chain_(item->GetUrlChain()),
360 referrer_url_(item->GetReferrerUrl()), 360 referrer_url_(item->GetReferrerUrl()),
361 tab_url_(item->GetTabUrl()), 361 tab_url_(item->GetTabUrl()),
362 tab_referrer_url_(item->GetTabReferrerUrl()), 362 tab_referrer_url_(item->GetTabReferrerUrl()),
363 archived_executable_(false), 363 archived_executable_(false),
364 archive_is_valid_(ArchiveValid::UNSET), 364 archive_is_valid_(ArchiveValid::UNSET),
365 #if defined(OS_MACOSX)
366 disk_image_signature_(nullptr),
367 #endif
365 callback_(callback), 368 callback_(callback),
366 service_(service), 369 service_(service),
367 binary_feature_extractor_(binary_feature_extractor), 370 binary_feature_extractor_(binary_feature_extractor),
368 database_manager_(database_manager), 371 database_manager_(database_manager),
369 pingback_enabled_(service_->enabled()), 372 pingback_enabled_(service_->enabled()),
370 finished_(false), 373 finished_(false),
371 type_(ClientDownloadRequest::WIN_EXECUTABLE), 374 type_(ClientDownloadRequest::WIN_EXECUTABLE),
372 start_time_(base::TimeTicks::Now()), 375 start_time_(base::TimeTicks::Now()),
373 skipped_url_whitelist_(false), 376 skipped_url_whitelist_(false),
374 skipped_certificate_whitelist_(false), 377 skipped_certificate_whitelist_(false),
(...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after
819 else 822 else
820 StartExtractFileFeatures(); 823 StartExtractFileFeatures();
821 } 824 }
822 825
823 void OnDmgAnalysisFinished(const ArchiveAnalyzerResults& results) { 826 void OnDmgAnalysisFinished(const ArchiveAnalyzerResults& results) {
824 DCHECK_CURRENTLY_ON(BrowserThread::UI); 827 DCHECK_CURRENTLY_ON(BrowserThread::UI);
825 DCHECK_EQ(ClientDownloadRequest::MAC_EXECUTABLE, type_); 828 DCHECK_EQ(ClientDownloadRequest::MAC_EXECUTABLE, type_);
826 if (!service_) 829 if (!service_)
827 return; 830 return;
828 831
832 if (results.signature_blob.size() > 0) {
833 disk_image_signature_ =
834 base::MakeUnique<std::vector<uint8_t>>(results.signature_blob);
835 }
836
829 // Even if !results.success, some of the DMG may have been parsed. 837 // Even if !results.success, some of the DMG may have been parsed.
830 archive_is_valid_ = 838 archive_is_valid_ =
831 (results.success ? ArchiveValid::VALID : ArchiveValid::INVALID); 839 (results.success ? ArchiveValid::VALID : ArchiveValid::INVALID);
832 archived_executable_ = results.has_executable; 840 archived_executable_ = results.has_executable;
833 archived_binary_.CopyFrom(results.archived_binary); 841 archived_binary_.CopyFrom(results.archived_binary);
834 DVLOG(1) << "DMG analysis has finished for " << item_->GetFullPath().value() 842 DVLOG(1) << "DMG analysis has finished for " << item_->GetFullPath().value()
835 << ", has_executable=" << results.has_executable 843 << ", has_executable=" << results.has_executable
836 << ", success=" << results.success; 844 << ", success=" << results.success;
837 845
838 int64_t uma_file_type = FileTypePolicies::GetInstance()->UmaValueForFile( 846 int64_t uma_file_type = FileTypePolicies::GetInstance()->UmaValueForFile(
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
1064 item_->GetUserData(kDownloadReferrerChainDataKey)); 1072 item_->GetUserData(kDownloadReferrerChainDataKey));
1065 if (referrer_chain_data && 1073 if (referrer_chain_data &&
1066 !referrer_chain_data->GetReferrerChain()->empty()) { 1074 !referrer_chain_data->GetReferrerChain()->empty()) {
1067 request.mutable_referrer_chain()->Swap( 1075 request.mutable_referrer_chain()->Swap(
1068 referrer_chain_data->GetReferrerChain()); 1076 referrer_chain_data->GetReferrerChain());
1069 if (type_ == ClientDownloadRequest::SAMPLED_UNSUPPORTED_FILE) 1077 if (type_ == ClientDownloadRequest::SAMPLED_UNSUPPORTED_FILE)
1070 SafeBrowsingNavigationObserverManager::SanitizeReferrerChain( 1078 SafeBrowsingNavigationObserverManager::SanitizeReferrerChain(
1071 request.mutable_referrer_chain()); 1079 request.mutable_referrer_chain());
1072 } 1080 }
1073 1081
1082 #if defined(OS_MACOSX)
1083 UMA_HISTOGRAM_BOOLEAN(
1084 "SBClientDownload."
1085 "DownloadFileHasDmgSignature",
1086 disk_image_signature_ != nullptr);
1087
1088 if (disk_image_signature_) {
1089 request.set_udif_code_signature(disk_image_signature_->data(),
1090 disk_image_signature_->size());
1091 }
1092 #endif
1093
1074 if (archive_is_valid_ != ArchiveValid::UNSET) 1094 if (archive_is_valid_ != ArchiveValid::UNSET)
1075 request.set_archive_valid(archive_is_valid_ == ArchiveValid::VALID); 1095 request.set_archive_valid(archive_is_valid_ == ArchiveValid::VALID);
1076 request.mutable_signature()->CopyFrom(signature_info_); 1096 request.mutable_signature()->CopyFrom(signature_info_);
1077 if (image_headers_) 1097 if (image_headers_)
1078 request.set_allocated_image_headers(image_headers_.release()); 1098 request.set_allocated_image_headers(image_headers_.release());
1079 if (archived_executable_) 1099 if (archived_executable_)
1080 request.mutable_archived_binary()->Swap(&archived_binary_); 1100 request.mutable_archived_binary()->Swap(&archived_binary_);
1081 if (!request.SerializeToString(&client_download_request_data_)) { 1101 if (!request.SerializeToString(&client_download_request_data_)) {
1082 FinishRequest(UNKNOWN, REASON_INVALID_REQUEST_PROTO); 1102 FinishRequest(UNKNOWN, REASON_INVALID_REQUEST_PROTO);
1083 return; 1103 return;
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
1259 GURL referrer_url_; 1279 GURL referrer_url_;
1260 // URL chain of redirects leading to (but not including) |tab_url|. 1280 // URL chain of redirects leading to (but not including) |tab_url|.
1261 std::vector<GURL> tab_redirects_; 1281 std::vector<GURL> tab_redirects_;
1262 // URL and referrer of the window the download was started from. 1282 // URL and referrer of the window the download was started from.
1263 GURL tab_url_; 1283 GURL tab_url_;
1264 GURL tab_referrer_url_; 1284 GURL tab_referrer_url_;
1265 1285
1266 bool archived_executable_; 1286 bool archived_executable_;
1267 ArchiveValid archive_is_valid_; 1287 ArchiveValid archive_is_valid_;
1268 1288
1289 #if defined(OS_MACOSX)
1290 std::unique_ptr<std::vector<uint8_t>> disk_image_signature_;
1291 #endif
1292
1269 ClientDownloadRequest_SignatureInfo signature_info_; 1293 ClientDownloadRequest_SignatureInfo signature_info_;
1270 std::unique_ptr<ClientDownloadRequest_ImageHeaders> image_headers_; 1294 std::unique_ptr<ClientDownloadRequest_ImageHeaders> image_headers_;
1271 google::protobuf::RepeatedPtrField<ClientDownloadRequest_ArchivedBinary> 1295 google::protobuf::RepeatedPtrField<ClientDownloadRequest_ArchivedBinary>
1272 archived_binary_; 1296 archived_binary_;
1273 CheckDownloadCallback callback_; 1297 CheckDownloadCallback callback_;
1274 // Will be NULL if the request has been canceled. 1298 // Will be NULL if the request has been canceled.
1275 DownloadProtectionService* service_; 1299 DownloadProtectionService* service_;
1276 scoped_refptr<BinaryFeatureExtractor> binary_feature_extractor_; 1300 scoped_refptr<BinaryFeatureExtractor> binary_feature_extractor_;
1277 scoped_refptr<SafeBrowsingDatabaseManager> database_manager_; 1301 scoped_refptr<SafeBrowsingDatabaseManager> database_manager_;
1278 const bool pingback_enabled_; 1302 const bool pingback_enabled_;
(...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after
2029 out_request->mutable_referrer_chain()); 2053 out_request->mutable_referrer_chain());
2030 UMA_HISTOGRAM_COUNTS_100( 2054 UMA_HISTOGRAM_COUNTS_100(
2031 "SafeBrowsing.ReferrerURLChainSize.PPAPIDownloadAttribution", 2055 "SafeBrowsing.ReferrerURLChainSize.PPAPIDownloadAttribution",
2032 out_request->referrer_chain_size()); 2056 out_request->referrer_chain_size());
2033 UMA_HISTOGRAM_ENUMERATION( 2057 UMA_HISTOGRAM_ENUMERATION(
2034 "SafeBrowsing.ReferrerAttributionResult.PPAPIDownloadAttribution", result, 2058 "SafeBrowsing.ReferrerAttributionResult.PPAPIDownloadAttribution", result,
2035 SafeBrowsingNavigationObserverManager::ATTRIBUTION_FAILURE_TYPE_MAX); 2059 SafeBrowsingNavigationObserverManager::ATTRIBUTION_FAILURE_TYPE_MAX);
2036 } 2060 }
2037 2061
2038 } // namespace safe_browsing 2062 } // namespace safe_browsing
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/safe_browsing/download_protection_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698