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

Unified Diff: chrome/browser/safe_browsing/database_manager.cc

Issue 611603002: Add the goog-unwanted-shavar list to a new SafeBrowsing PrefixSet. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Lots of additions + tests, still WIP Created 6 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/safe_browsing/database_manager.cc
diff --git a/chrome/browser/safe_browsing/database_manager.cc b/chrome/browser/safe_browsing/database_manager.cc
index 712271ba657f0c31e19fc9bbd71aed6ef6fae19d..ba50c4716f95ce64bd29552b87785d973c516ced 100644
--- a/chrome/browser/safe_browsing/database_manager.cc
+++ b/chrome/browser/safe_browsing/database_manager.cc
@@ -112,6 +112,8 @@ SBThreatType GetThreatTypeFromListType(safe_browsing_util::ListType list_type) {
return SB_THREAT_TYPE_URL_PHISHING;
case safe_browsing_util::MALWARE:
return SB_THREAT_TYPE_URL_MALWARE;
+ case safe_browsing_util::UNWANTEDURL:
+ return SB_THREAT_TYPE_URL_UNWANTED;
case safe_browsing_util::BINURL:
return SB_THREAT_TYPE_BINARY_MALWARE_URL;
case safe_browsing_util::EXTENSIONBLACKLIST:
@@ -171,6 +173,7 @@ void SafeBrowsingDatabaseManager::Client::OnSafeBrowsingResult(
switch (check.check_type) {
case safe_browsing_util::MALWARE:
case safe_browsing_util::PHISH:
+ case safe_browsing_util::UNWANTEDURL:
DCHECK_EQ(1u, check.urls.size());
OnCheckBrowseUrlResult(
check.urls[0], check.url_results[0], check.url_metadata[0]);
@@ -217,6 +220,7 @@ SafeBrowsingDatabaseManager::SafeBrowsingDatabaseManager(
enable_extension_blacklist_(false),
enable_side_effect_free_whitelist_(false),
enable_ip_blacklist_(false),
+ enable_unwanted_software_blacklist_(false),
update_in_progress_(false),
database_update_in_progress_(false),
closing_database_(false),
@@ -253,6 +257,10 @@ SafeBrowsingDatabaseManager::SafeBrowsingDatabaseManager(
// phishing protection for now.
enable_ip_blacklist_ = enable_csd_whitelist_;
+ //FIXME: Figure out how to turn this on and off. It looks like the malware
+ //list is always on, should the uslist also be?
+ enable_unwanted_software_blacklist_ = true;
+
enum SideEffectFreeWhitelistStatus {
SIDE_EFFECT_FREE_WHITELIST_ENABLED,
SIDE_EFFECT_FREE_WHITELIST_DISABLED,
@@ -409,6 +417,7 @@ bool SafeBrowsingDatabaseManager::CheckBrowseUrl(const GURL& url,
std::vector<SBThreatType> expected_threats;
expected_threats.push_back(SB_THREAT_TYPE_URL_MALWARE);
expected_threats.push_back(SB_THREAT_TYPE_URL_PHISHING);
+ expected_threats.push_back(SB_THREAT_TYPE_URL_UNWANTED);
const base::TimeTicks start = base::TimeTicks::Now();
if (!MakeDatabaseAvailable()) {
@@ -421,32 +430,58 @@ bool SafeBrowsingDatabaseManager::CheckBrowseUrl(const GURL& url,
return false;
}
- std::vector<SBPrefix> prefix_hits;
- std::vector<SBFullHashResult> cache_hits;
+ std::vector<SBPrefix> browse_prefix_hits;
+ std::vector<SBFullHashResult> browse_cache_hits;
+ bool browse_prefix_match = database_->ContainsBrowseUrl(
+ url, &browse_prefix_hits, &browse_cache_hits);
- bool prefix_match =
- database_->ContainsBrowseUrl(url, &prefix_hits, &cache_hits);
+ std::vector<SBPrefix> unwanted_prefix_hits;
+ std::vector<SBFullHashResult> unwanted_cache_hits;
+ bool unwanted_prefix_match = database_->ContainsUnwantedSoftwareUrl(
+ url, &unwanted_prefix_hits, &unwanted_cache_hits);
UMA_HISTOGRAM_TIMES("SB2.FilterCheck", base::TimeTicks::Now() - start);
- if (!prefix_match)
+ if (!browse_prefix_match && !unwanted_prefix_match)
return true; // URL is okay.
- // Needs to be asynchronous, since we could be in the constructor of a
- // ResourceDispatcherHost event handler which can't pause there.
- SafeBrowsingCheck* check = new SafeBrowsingCheck(std::vector<GURL>(1, url),
- std::vector<SBFullHash>(),
- client,
- safe_browsing_util::MALWARE,
- expected_threats);
- check->need_get_hash = cache_hits.empty();
- check->prefix_hits.swap(prefix_hits);
- check->cache_hits.swap(cache_hits);
- checks_.insert(check);
+ if (browse_prefix_match) {
+ // Needs to be asynchronous, since we could be in the constructor of a
+ // ResourceDispatcherHost event handler which can't pause there.
+ SafeBrowsingCheck* check =
+ new SafeBrowsingCheck(std::vector<GURL>(1, url),
+ std::vector<SBFullHash>(),
+ client,
+ safe_browsing_util::MALWARE,
+ expected_threats);
+ check->need_get_hash = browse_cache_hits.empty();
+ check->prefix_hits.swap(browse_prefix_hits);
+ check->cache_hits.swap(browse_cache_hits);
+ checks_.insert(check);
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(&SafeBrowsingDatabaseManager::OnCheckDone, this, check));
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(&SafeBrowsingDatabaseManager::OnCheckDone, this, check));
+ }
+
+ if (unwanted_prefix_match) {
+ // Needs to be asynchronous, since we could be in the constructor of a
+ // ResourceDispatcherHost event handler which can't pause there.
+ SafeBrowsingCheck* check =
+ new SafeBrowsingCheck(std::vector<GURL>(1, url),
+ std::vector<SBFullHash>(),
+ client,
+ safe_browsing_util::UNWANTEDURL,
+ expected_threats);
+ check->need_get_hash = unwanted_cache_hits.empty();
+ check->prefix_hits.swap(unwanted_prefix_hits);
+ check->cache_hits.swap(unwanted_cache_hits);
+ checks_.insert(check);
mattm 2014/11/06 01:06:11 This is going to be a problem if both browse_prefi
mattm 2014/11/06 01:22:36 Actually there should be no need for the separate
gab 2014/11/06 17:47:46 I caught on to do the same thing yesterday after s
gab 2014/11/07 00:12:09 Implementation in patch set 6.
mattm 2014/11/07 00:27:09 SafeBrowsingCheck actually checks all lists, then
gab 2014/11/07 18:54:17 I see, as discussed yesterday, makes sense. See la
+
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(&SafeBrowsingDatabaseManager::OnCheckDone, this, check));
+ }
return false;
}
@@ -705,7 +740,8 @@ SafeBrowsingDatabase* SafeBrowsingDatabaseManager::GetDatabase() {
enable_download_whitelist_,
enable_extension_blacklist_,
enable_side_effect_free_whitelist_,
- enable_ip_blacklist_);
+ enable_ip_blacklist_,
+ enable_unwanted_software_blacklist_);
database->Init(SafeBrowsingService::GetBaseFilename());
{

Powered by Google App Engine
This is Rietveld 408576698