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

Side by Side Diff: components/safe_browsing_db/v4_local_database_manager.cc

Issue 2536913002: Small: PVer4: Enable syncing internal lists for Google Chrome builds. (Closed)
Patch Set: Address nparker's comments Created 4 years 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 // This file should not be build on Android but is currently getting built. 5 // This file should not be build on Android but is currently getting built.
6 // TODO(vakh): Fix that: http://crbug.com/621647 6 // TODO(vakh): Fix that: http://crbug.com/621647
7 7
8 #include "components/safe_browsing_db/v4_local_database_manager.h" 8 #include "components/safe_browsing_db/v4_local_database_manager.h"
9 9
10 #include <vector> 10 #include <vector>
(...skipping 21 matching lines...) Expand all
32 // NOTE(vakh): When adding a store here, add the corresponding store-specific 32 // NOTE(vakh): When adding a store here, add the corresponding store-specific
33 // histograms also. 33 // histograms also.
34 // NOTE(vakh): Delete file "AnyIpMalware.store". It has been renamed to 34 // NOTE(vakh): Delete file "AnyIpMalware.store". It has been renamed to
35 // "IpMalware.store". If it exists, it should be 75 bytes long. 35 // "IpMalware.store". If it exists, it should be 75 bytes long.
36 // The first argument to ListInfo specifies whether to sync hash prefixes for 36 // The first argument to ListInfo specifies whether to sync hash prefixes for
37 // that list. This can be false for two reasons: 37 // that list. This can be false for two reasons:
38 // - The server doesn't support that list yet. Once the server adds support 38 // - The server doesn't support that list yet. Once the server adds support
39 // for it, it can be changed to true. 39 // for it, it can be changed to true.
40 // - The list doesn't have hash prefixes to match. All requests lead to full 40 // - The list doesn't have hash prefixes to match. All requests lead to full
41 // hash checks. For instance: GetChromeUrlApiId() 41 // hash checks. For instance: GetChromeUrlApiId()
42
43 #if defined(GOOGLE_CHROME_BUILD)
44 const bool kSyncOnlyOnChromeBuilds = true;
45 #else
46 const bool kSyncOnlyOnChromeBuilds = false;
47 #endif
48 const bool kSyncAlways = true;
49 const bool kSyncNever = false;
42 return ListInfos({ 50 return ListInfos({
43 ListInfo(false, "CertCsdDownloadWhitelist.store", 51 ListInfo(kSyncOnlyOnChromeBuilds, "CertCsdDownloadWhitelist.store",
44 GetCertCsdDownloadWhitelistId(), SB_THREAT_TYPE_UNUSED), 52 GetCertCsdDownloadWhitelistId(), SB_THREAT_TYPE_UNUSED),
45 ListInfo(false, "ChromeFilenameClientIncident.store", 53 ListInfo(kSyncOnlyOnChromeBuilds, "ChromeFilenameClientIncident.store",
46 GetChromeFilenameClientIncidentId(), SB_THREAT_TYPE_UNUSED), 54 GetChromeFilenameClientIncidentId(), SB_THREAT_TYPE_UNUSED),
47 ListInfo(true, "IpMalware.store", GetIpMalwareId(), 55 ListInfo(kSyncAlways, "IpMalware.store", GetIpMalwareId(),
48 SB_THREAT_TYPE_UNUSED), 56 SB_THREAT_TYPE_UNUSED),
49 ListInfo(false, "UrlCsdDownloadWhitelist.store", 57 ListInfo(kSyncOnlyOnChromeBuilds, "UrlCsdDownloadWhitelist.store",
50 GetUrlCsdDownloadWhitelistId(), SB_THREAT_TYPE_UNUSED), 58 GetUrlCsdDownloadWhitelistId(), SB_THREAT_TYPE_UNUSED),
51 ListInfo(false, "UrlCsdWhitelist.store", GetUrlCsdWhitelistId(), 59 ListInfo(kSyncOnlyOnChromeBuilds, "UrlCsdWhitelist.store",
52 SB_THREAT_TYPE_UNUSED), 60 GetUrlCsdWhitelistId(), SB_THREAT_TYPE_UNUSED),
53 ListInfo(true, "UrlSoceng.store", GetUrlSocEngId(), 61 ListInfo(kSyncAlways, "UrlSoceng.store", GetUrlSocEngId(),
54 SB_THREAT_TYPE_URL_PHISHING), 62 SB_THREAT_TYPE_URL_PHISHING),
55 ListInfo(true, "UrlMalware.store", GetUrlMalwareId(), 63 ListInfo(kSyncAlways, "UrlMalware.store", GetUrlMalwareId(),
56 SB_THREAT_TYPE_URL_MALWARE), 64 SB_THREAT_TYPE_URL_MALWARE),
57 ListInfo(true, "UrlUws.store", GetUrlUwsId(), 65 ListInfo(kSyncAlways, "UrlUws.store", GetUrlUwsId(),
58 SB_THREAT_TYPE_URL_UNWANTED), 66 SB_THREAT_TYPE_URL_UNWANTED),
59 ListInfo(true, "UrlMalBin.store", GetUrlMalBinId(), 67 ListInfo(kSyncAlways, "UrlMalBin.store", GetUrlMalBinId(),
60 SB_THREAT_TYPE_BINARY_MALWARE_URL), 68 SB_THREAT_TYPE_BINARY_MALWARE_URL),
61 ListInfo(true, "ChromeExtMalware.store", GetChromeExtensionMalwareId(), 69 ListInfo(kSyncAlways, "ChromeExtMalware.store", GetChromeExtMalwareId(),
62 SB_THREAT_TYPE_EXTENSION), 70 SB_THREAT_TYPE_EXTENSION),
63 ListInfo(false, "ChromeUrlClientIncident.store", 71 ListInfo(kSyncOnlyOnChromeBuilds, "ChromeUrlClientIncident.store",
64 GetChromeUrlClientIncidentId(), 72 GetChromeUrlClientIncidentId(),
65 SB_THREAT_TYPE_BLACKLISTED_RESOURCE), 73 SB_THREAT_TYPE_BLACKLISTED_RESOURCE),
66 ListInfo(false, "", GetChromeUrlApiId(), SB_THREAT_TYPE_API_ABUSE), 74 ListInfo(kSyncNever, "", GetChromeUrlApiId(), SB_THREAT_TYPE_API_ABUSE),
67 }); 75 });
68 } 76 }
69 77
70 // Returns the severity information about a given SafeBrowsing list. The lowest 78 // Returns the severity information about a given SafeBrowsing list. The lowest
71 // value is 0, which represents the most severe list. 79 // value is 0, which represents the most severe list.
72 ThreatSeverity GetThreatSeverity(const ListIdentifier& list_id) { 80 ThreatSeverity GetThreatSeverity(const ListIdentifier& list_id) {
73 switch (list_id.threat_type()) { 81 switch (list_id.threat_type()) {
74 case MALWARE_THREAT: 82 case MALWARE_THREAT:
75 case SOCIAL_ENGINEERING_PUBLIC: 83 case SOCIAL_ENGINEERING_PUBLIC:
76 return 0; 84 return 0;
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 const std::set<FullHash>& extension_ids, 222 const std::set<FullHash>& extension_ids,
215 Client* client) { 223 Client* client) {
216 DCHECK_CURRENTLY_ON(BrowserThread::IO); 224 DCHECK_CURRENTLY_ON(BrowserThread::IO);
217 225
218 if (!enabled_) { 226 if (!enabled_) {
219 return true; 227 return true;
220 } 228 }
221 229
222 std::unique_ptr<PendingCheck> check = base::MakeUnique<PendingCheck>( 230 std::unique_ptr<PendingCheck> check = base::MakeUnique<PendingCheck>(
223 client, ClientCallbackType::CHECK_EXTENSION_IDS, 231 client, ClientCallbackType::CHECK_EXTENSION_IDS,
224 StoresToCheck({GetChromeExtensionMalwareId()}), extension_ids); 232 StoresToCheck({GetChromeExtMalwareId()}), extension_ids);
225 233
226 return HandleCheck(std::move(check)); 234 return HandleCheck(std::move(check));
227 } 235 }
228 236
229 bool V4LocalDatabaseManager::CheckResourceUrl(const GURL& url, Client* client) { 237 bool V4LocalDatabaseManager::CheckResourceUrl(const GURL& url, Client* client) {
230 DCHECK_CURRENTLY_ON(BrowserThread::IO); 238 DCHECK_CURRENTLY_ON(BrowserThread::IO);
231 239
232 if (!enabled_ || !CanCheckUrl(url)) { 240 if (!enabled_ || !CanCheckUrl(url)) {
233 return true; 241 return true;
234 } 242 }
235 243
236 std::unique_ptr<PendingCheck> check = base::MakeUnique<PendingCheck>( 244 std::unique_ptr<PendingCheck> check = base::MakeUnique<PendingCheck>(
237 client, ClientCallbackType::CHECK_RESOURCE_URL, 245 client, ClientCallbackType::CHECK_RESOURCE_URL,
238 StoresToCheck({GetChromeUrlClientIncidentId()}), 246 StoresToCheck({GetChromeUrlClientIncidentId()}),
239 std::vector<GURL>(1, url)); 247 std::vector<GURL>(1, url));
240 248
241 return HandleCheck(std::move(check)); 249 return HandleCheck(std::move(check));
242 } 250 }
243 251
244 bool V4LocalDatabaseManager::MatchCsdWhitelistUrl(const GURL& url) { 252 bool V4LocalDatabaseManager::MatchCsdWhitelistUrl(const GURL& url) {
245 DCHECK_CURRENTLY_ON(BrowserThread::IO); 253 DCHECK_CURRENTLY_ON(BrowserThread::IO);
254
255 if (!enabled_ || !v4_database_) {
256 // To make sure we are conservative we return true.
257 return true;
258 }
259
246 return HandleUrlSynchronously(url, StoresToCheck({GetUrlCsdWhitelistId()})); 260 return HandleUrlSynchronously(url, StoresToCheck({GetUrlCsdWhitelistId()}));
247 } 261 }
248 262
249 bool V4LocalDatabaseManager::MatchDownloadWhitelistString( 263 bool V4LocalDatabaseManager::MatchDownloadWhitelistString(
250 const std::string& str) { 264 const std::string& str) {
251 DCHECK_CURRENTLY_ON(BrowserThread::IO); 265 DCHECK_CURRENTLY_ON(BrowserThread::IO);
266
267 if (!enabled_ || !v4_database_) {
268 // To make sure we are conservative we return true.
269 return true;
270 }
271
252 return HandleHashSynchronously( 272 return HandleHashSynchronously(
253 str, StoresToCheck({GetCertCsdDownloadWhitelistId()})); 273 str, StoresToCheck({GetCertCsdDownloadWhitelistId()}));
254 } 274 }
255 275
256 bool V4LocalDatabaseManager::MatchDownloadWhitelistUrl(const GURL& url) { 276 bool V4LocalDatabaseManager::MatchDownloadWhitelistUrl(const GURL& url) {
257 DCHECK_CURRENTLY_ON(BrowserThread::IO); 277 DCHECK_CURRENTLY_ON(BrowserThread::IO);
278
279 if (!enabled_ || !v4_database_) {
280 // To make sure we are conservative we return true.
281 return true;
282 }
283
258 return HandleUrlSynchronously( 284 return HandleUrlSynchronously(
259 url, StoresToCheck({GetUrlCsdDownloadWhitelistId()})); 285 url, StoresToCheck({GetUrlCsdDownloadWhitelistId()}));
260 } 286 }
261 287
262 bool V4LocalDatabaseManager::MatchMalwareIP(const std::string& ip_address) { 288 bool V4LocalDatabaseManager::MatchMalwareIP(const std::string& ip_address) {
263 DCHECK_CURRENTLY_ON(BrowserThread::IO); 289 DCHECK_CURRENTLY_ON(BrowserThread::IO);
264 if (!enabled_) { 290 if (!enabled_ || !v4_database_) {
265 return false; 291 return false;
266 } 292 }
267 293
268 FullHash hashed_encoded_ip; 294 FullHash hashed_encoded_ip;
269 if (!V4ProtocolManagerUtil::IPAddressToEncodedIPV6Hash(ip_address, 295 if (!V4ProtocolManagerUtil::IPAddressToEncodedIPV6Hash(ip_address,
270 &hashed_encoded_ip)) { 296 &hashed_encoded_ip)) {
271 return false; 297 return false;
272 } 298 }
273 299
274 return HandleHashSynchronously(hashed_encoded_ip, 300 return HandleHashSynchronously(hashed_encoded_ip,
275 StoresToCheck({GetIpMalwareId()})); 301 StoresToCheck({GetIpMalwareId()}));
276 } 302 }
277 303
278 bool V4LocalDatabaseManager::MatchModuleWhitelistString( 304 bool V4LocalDatabaseManager::MatchModuleWhitelistString(
279 const std::string& str) { 305 const std::string& str) {
280 DCHECK_CURRENTLY_ON(BrowserThread::IO); 306 DCHECK_CURRENTLY_ON(BrowserThread::IO);
307
308 if (!enabled_ || !v4_database_) {
309 // To make sure we are conservative we return true.
310 return true;
311 }
312
281 return HandleHashSynchronously( 313 return HandleHashSynchronously(
282 str, StoresToCheck({GetChromeFilenameClientIncidentId()})); 314 str, StoresToCheck({GetChromeFilenameClientIncidentId()}));
283 } 315 }
284 316
285 ThreatSource V4LocalDatabaseManager::GetThreatSource() const { 317 ThreatSource V4LocalDatabaseManager::GetThreatSource() const {
286 return ThreatSource::LOCAL_PVER4; 318 return ThreatSource::LOCAL_PVER4;
287 } 319 }
288 320
289 bool V4LocalDatabaseManager::IsCsdWhitelistKillSwitchOn() { 321 bool V4LocalDatabaseManager::IsCsdWhitelistKillSwitchOn() {
290 DCHECK_CURRENTLY_ON(BrowserThread::IO); 322 DCHECK_CURRENTLY_ON(BrowserThread::IO);
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 full_hash_to_store_and_hash_prefixes)); 523 full_hash_to_store_and_hash_prefixes));
492 524
493 return false; 525 return false;
494 } 526 }
495 527
496 bool V4LocalDatabaseManager::HandleHashSynchronously( 528 bool V4LocalDatabaseManager::HandleHashSynchronously(
497 const FullHash& hash, 529 const FullHash& hash,
498 const StoresToCheck& stores_to_check) { 530 const StoresToCheck& stores_to_check) {
499 DCHECK_CURRENTLY_ON(BrowserThread::IO); 531 DCHECK_CURRENTLY_ON(BrowserThread::IO);
500 532
501 if (!enabled_ || !v4_database_) {
502 return false;
503 }
504
505 std::set<FullHash> hashes{hash}; 533 std::set<FullHash> hashes{hash};
506 std::unique_ptr<PendingCheck> check = base::MakeUnique<PendingCheck>( 534 std::unique_ptr<PendingCheck> check = base::MakeUnique<PendingCheck>(
507 nullptr, ClientCallbackType::CHECK_OTHER, stores_to_check, hashes); 535 nullptr, ClientCallbackType::CHECK_OTHER, stores_to_check, hashes);
508 536
509 FullHashToStoreAndHashPrefixesMap full_hash_to_store_and_hash_prefixes; 537 FullHashToStoreAndHashPrefixesMap full_hash_to_store_and_hash_prefixes;
510 return GetPrefixMatches(check, &full_hash_to_store_and_hash_prefixes); 538 return GetPrefixMatches(check, &full_hash_to_store_and_hash_prefixes);
511 } 539 }
512 540
513 bool V4LocalDatabaseManager::HandleUrlSynchronously( 541 bool V4LocalDatabaseManager::HandleUrlSynchronously(
514 const GURL& url, 542 const GURL& url,
515 const StoresToCheck& stores_to_check) { 543 const StoresToCheck& stores_to_check) {
516 DCHECK_CURRENTLY_ON(BrowserThread::IO); 544 DCHECK_CURRENTLY_ON(BrowserThread::IO);
517 545
518 if (!enabled_ || !v4_database_) {
519 return false;
520 }
521
522 std::unique_ptr<PendingCheck> check = base::MakeUnique<PendingCheck>( 546 std::unique_ptr<PendingCheck> check = base::MakeUnique<PendingCheck>(
523 nullptr, ClientCallbackType::CHECK_OTHER, stores_to_check, 547 nullptr, ClientCallbackType::CHECK_OTHER, stores_to_check,
524 std::vector<GURL>(1, url)); 548 std::vector<GURL>(1, url));
525 549
526 FullHashToStoreAndHashPrefixesMap full_hash_to_store_and_hash_prefixes; 550 FullHashToStoreAndHashPrefixesMap full_hash_to_store_and_hash_prefixes;
527 return GetPrefixMatches(check, &full_hash_to_store_and_hash_prefixes); 551 return GetPrefixMatches(check, &full_hash_to_store_and_hash_prefixes);
528 } 552 }
529 553
530 void V4LocalDatabaseManager::OnFullHashResponse( 554 void V4LocalDatabaseManager::OnFullHashResponse(
531 std::unique_ptr<PendingCheck> pending_check, 555 std::unique_ptr<PendingCheck> pending_check,
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
650 } 674 }
651 675
652 void V4LocalDatabaseManager::UpdateRequestCompleted( 676 void V4LocalDatabaseManager::UpdateRequestCompleted(
653 std::unique_ptr<ParsedServerResponse> parsed_server_response) { 677 std::unique_ptr<ParsedServerResponse> parsed_server_response) {
654 DCHECK_CURRENTLY_ON(BrowserThread::IO); 678 DCHECK_CURRENTLY_ON(BrowserThread::IO);
655 v4_database_->ApplyUpdate(std::move(parsed_server_response), 679 v4_database_->ApplyUpdate(std::move(parsed_server_response),
656 db_updated_callback_); 680 db_updated_callback_);
657 } 681 }
658 682
659 } // namespace safe_browsing 683 } // namespace safe_browsing
OLDNEW
« no previous file with comments | « components/safe_browsing_db/v4_local_database_manager.h ('k') | components/safe_browsing_db/v4_protocol_manager_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698