{"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/single-user-injection-for-invisible-shilling","title":"Single-User Injection for Invisible Shilling Attack against Recommender Systems","arxiv_id":"2308.10467","date":"2023-08-21","proceeding":null,"authors":["Chengzhi Huang","Hui Li"],"abstract":"Recommendation systems (RS) are crucial for alleviating the information overload problem. Due to its pivotal role in guiding users to make decisions, unscrupulous parties are lured to launch attacks against RS to affect the decisions of normal users and gain illegal profits. Among various types of attacks, shilling attack is one of the most subsistent and profitable attacks. In shilling attack, an adversarial party injects a number of well-designed fake user profiles into the system to mislead RS so that the attack goal can be achieved. Although existing shilling attack methods have achieved promising results, they all adopt the attack paradigm of multi-user injection, where some fake user profiles are required. This paper provides the first study of shilling attack in an extremely limited scenario: only one fake user profile is injected into the victim RS to launch shilling attacks (i.e., single-user injection). We propose a novel single-user injection method SUI-Attack for invisible shilling attack. SUI-Attack is a graph based attack method that models shilling attack as a node generation task over the user-item bipartite graph of the victim RS, and it constructs the fake user profile by generating user features and edges that link the fake user to items. Extensive experiments demonstrate that SUI-Attack can achieve promising attack results in single-user injection. In addition to its attack power, SUI-Attack increases the stealthiness of shilling attack and reduces the risk of being detected. We provide our implementation at: https://github.com/KDEGroup/SUI-Attack.","url_abs":"https://arxiv.org/abs/2308.10467v1","url_pdf":"https://arxiv.org/pdf/2308.10467v1.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":"single-user-injection-for-invisible-shilling","repo_url":"https://github.com/kdegroup/sui-attack","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"recommendation-systems","task_name":"Recommendation Systems"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2308.10467","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2308.10467"}},"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/kdegroup/sui-attack","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_fixture":1,"ran":9,"unverified":4},"by_repo_kind":{"official":{"samples":14,"ran":10,"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":"7d9344ac520f8918","entry":"calc_loss","repo":"kdegroup/sui-attack","repo_kind":"official","path":"models/influence/influence_function.py","file_url":"https://github.com/kdegroup/sui-attack/blob/HEAD/models/influence/influence_function.py","link_basis":"plan_row","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7d9344ac520f8918"}},{"code_sha256_prefix":"b118561228a8b77b","entry":"get_param_dict","repo":"kdegroup/sui-attack","repo_kind":"official","path":"utils.py","file_url":"https://github.com/kdegroup/sui-attack/blob/HEAD/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b118561228a8b77b"}},{"code_sha256_prefix":"45e51146ba983e97","entry":"grad_z","repo":"kdegroup/sui-attack","repo_kind":"official","path":"models/influence/influence_function.py","file_url":"https://github.com/kdegroup/sui-attack/blob/HEAD/models/influence/influence_function.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"45e51146ba983e97"}},{"code_sha256_prefix":"54320bbdc1da7aa6","entry":"gumbel_top_k","repo":"kdegroup/sui-attack","repo_kind":"official","path":"graph.py","file_url":"https://github.com/kdegroup/sui-attack/blob/HEAD/graph.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"54320bbdc1da7aa6"}},{"code_sha256_prefix":"62c0f0f999b06c36","entry":"load_fake_array","repo":"kdegroup/sui-attack","repo_kind":"official","path":"utils.py","file_url":"https://github.com/kdegroup/sui-attack/blob/HEAD/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"62c0f0f999b06c36"}},{"code_sha256_prefix":"02e0131402c87afa","entry":"move","repo":"kdegroup/sui-attack","repo_kind":"official","path":"utils.py","file_url":"https://github.com/kdegroup/sui-attack/blob/HEAD/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"02e0131402c87afa"}},{"code_sha256_prefix":"e69b19a3945839ac","entry":"mse_loss","repo":"kdegroup/sui-attack","repo_kind":"official","path":"models/recommender/WMF.py","file_url":"https://github.com/kdegroup/sui-attack/blob/HEAD/models/recommender/WMF.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e69b19a3945839ac"}},{"code_sha256_prefix":"e30156b28108e611","entry":"mult_ce_loss","repo":"kdegroup/sui-attack","repo_kind":"official","path":"models/recommender/WMF.py","file_url":"https://github.com/kdegroup/sui-attack/blob/HEAD/models/recommender/WMF.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e30156b28108e611"}},{"code_sha256_prefix":"98f7100e95444343","entry":"save_fake","repo":"kdegroup/sui-attack","repo_kind":"official","path":"models/baseline.py","file_url":"https://github.com/kdegroup/sui-attack/blob/HEAD/models/baseline.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"98f7100e95444343"}},{"code_sha256_prefix":"1ca6bfbc19414e74","entry":"sparse2tensor","repo":"kdegroup/sui-attack","repo_kind":"official","path":"models/recommender/RsData.py","file_url":"https://github.com/kdegroup/sui-attack/blob/HEAD/models/recommender/RsData.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1ca6bfbc19414e74"}},{"code_sha256_prefix":"601a1c1306a134de","entry":"create_trainvaltest_split","repo":"kdegroup/sui-attack","repo_kind":"official","path":"data_pre.py","file_url":"https://github.com/kdegroup/sui-attack/blob/HEAD/data_pre.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":"601a1c1306a134de"}},{"code_sha256_prefix":"2d5a913e453f8011","entry":"get_loader","repo":"kdegroup/sui-attack","repo_kind":"official","path":"data_pre.py","file_url":"https://github.com/kdegroup/sui-attack/blob/HEAD/data_pre.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":"2d5a913e453f8011"}},{"code_sha256_prefix":"aeab26784be32147","entry":"load_data","repo":"kdegroup/sui-attack","repo_kind":"official","path":"data_pre.py","file_url":"https://github.com/kdegroup/sui-attack/blob/HEAD/data_pre.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":"aeab26784be32147"}},{"code_sha256_prefix":"469bb312ad962696","entry":"normalize","repo":"kdegroup/sui-attack","repo_kind":"official","path":"graph.py","file_url":"https://github.com/kdegroup/sui-attack/blob/HEAD/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":"469bb312ad962696"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}