{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/graph-universal-adversarial-attacks-a-few-bad","title":"Graph Universal Adversarial Attacks: A Few Bad Actors Ruin Graph Learning Models","arxiv_id":"2002.04784","date":"2020-02-12","proceeding":null,"authors":["Xiao Zang","Yi Xie","Jie Chen","Bo Yuan"],"abstract":"Deep neural networks, while generalize well, are known to be sensitive to small adversarial perturbations. This phenomenon poses severe security threat and calls for in-depth investigation of the robustness of deep learning models. With the emergence of neural networks for graph structured data, similar investigations are urged to understand their robustness. It has been found that adversarially perturbing the graph structure and/or node features may result in a significant degradation of the model performance. In this work, we show from a different angle that such fragility similarly occurs if the graph contains a few bad-actor nodes, which compromise a trained graph neural network through flipping the connections to any targeted victim. Worse, the bad actors found for one graph model severely compromise other models as well. We call the bad actors ``anchor nodes'' and propose an algorithm, named GUA, to identify them. Thorough empirical investigations suggest an interesting finding that the anchor nodes often belong to the same class; and they also corroborate the intuitive trade-off between the number of anchor nodes and the attack success rate. For the dataset Cora which contains 2708 nodes, as few as six anchor nodes will result in an attack success rate higher than 80\\% for GCN and other three models.","url_abs":"https://arxiv.org/abs/2002.04784v2","url_pdf":"https://arxiv.org/pdf/2002.04784v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"graph-universal-adversarial-attacks-a-few-bad","repo_url":"https://github.com/chisam0217/Graph-Universal-Attack","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"graph-learning","task_name":"Graph Learning"},{"task_slug":"graph-neural-network","task_name":"Graph Neural Network"}],"methods":[{"method_slug":"gcn","method_name":"GCN"},{"method_slug":"graph-neural-network","method_name":"Graph Neural Network"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2002.04784","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2002.04784"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/chisam0217/Graph-Universal-Attack","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_draft_wrong":1,"unverified":7},"by_repo_kind":{"official":{"samples":8,"ran":1,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"3ab88254add4c192","entry":"encode_onehot","repo":"chisam0217/Graph-Universal-Attack","repo_kind":"official","path":"GUA/utils.py","file_url":"https://github.com/chisam0217/Graph-Universal-Attack/blob/HEAD/GUA/utils.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3ab88254add4c192"}},{"code_sha256_prefix":"dcd84f5838668f17","entry":"add_perturb","repo":"chisam0217/Graph-Universal-Attack","repo_kind":"official","path":"GUA/eval_baseline.py","file_url":"https://github.com/chisam0217/Graph-Universal-Attack/blob/HEAD/GUA/eval_baseline.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"dcd84f5838668f17"}},{"code_sha256_prefix":"5d8936cd49426f76","entry":"alias_draw","repo":"chisam0217/Graph-Universal-Attack","repo_kind":"official","path":"node2vec/graph.py","file_url":"https://github.com/chisam0217/Graph-Universal-Attack/blob/HEAD/node2vec/graph.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5d8936cd49426f76"}},{"code_sha256_prefix":"b097b719cf49daca","entry":"alias_setup","repo":"chisam0217/Graph-Universal-Attack","repo_kind":"official","path":"node2vec/graph.py","file_url":"https://github.com/chisam0217/Graph-Universal-Attack/blob/HEAD/node2vec/graph.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b097b719cf49daca"}},{"code_sha256_prefix":"b30d29f66472e711","entry":"count_words","repo":"chisam0217/Graph-Universal-Attack","repo_kind":"official","path":"deepwalk/evaluate_deepwalk.py","file_url":"https://github.com/chisam0217/Graph-Universal-Attack/blob/HEAD/deepwalk/evaluate_deepwalk.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b30d29f66472e711"}},{"code_sha256_prefix":"11c8a4ad13f75fe4","entry":"largest_connected_components","repo":"chisam0217/Graph-Universal-Attack","repo_kind":"official","path":"GUA/utils.py","file_url":"https://github.com/chisam0217/Graph-Universal-Attack/blob/HEAD/GUA/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"11c8a4ad13f75fe4"}},{"code_sha256_prefix":"4d18cf730d25baa5","entry":"load_npz","repo":"chisam0217/Graph-Universal-Attack","repo_kind":"official","path":"GUA/utils.py","file_url":"https://github.com/chisam0217/Graph-Universal-Attack/blob/HEAD/GUA/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4d18cf730d25baa5"}},{"code_sha256_prefix":"15e201038d5175ee","entry":"sparse2graph","repo":"chisam0217/Graph-Universal-Attack","repo_kind":"official","path":"deepwalk/evaluate_deepwalk.py","file_url":"https://github.com/chisam0217/Graph-Universal-Attack/blob/HEAD/deepwalk/evaluate_deepwalk.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"15e201038d5175ee"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}