{"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/arxiv-2510-15083","title":"SMOTE and Mirrors: Exposing Privacy Leakage from Synthetic Minority Oversampling","arxiv_id":"2510.15083","date":"2025-10-16","proceeding":"ICLR","authors":["Georgi Ganev","Reza Nazari","Rees Davison","Amir Dizche","Xinmin Wu","Ralph Abbey","Jorge Silva","Emiliano De Cristofaro"],"abstract":"The Synthetic Minority Over-sampling Technique (SMOTE) is one of the most widely used methods for addressing class imbalance and generating synthetic data. Despite its popularity, little attention has been paid to its privacy implications; yet, it is used in the wild in many privacy-sensitive applications. In this work, we conduct the first systematic study of privacy leakage in SMOTE: we begin by showing that prevailing evaluation practices, i.e., naive distinguishing and distance-to-closest-record metrics, completely fail to detect any leakage and that membership inference attacks (MIAs) can be instantiated with high accuracy. Then, by exploiting SMOTE's geometric properties, we build two novel attacks with very limited assumptions: DistinSMOTE, which perfectly distinguishes real from synthetic records in augmented datasets, and ReconSMOTE, which reconstructs real minority records from synthetic datasets with perfect precision and recall approaching one under realistic imbalance ratios. We also provide theoretical guarantees for both attacks. Experiments on eight standard imbalanced datasets confirm the practicality and effectiveness of these attacks. Overall, our work reveals that SMOTE is inherently non-private and disproportionately exposes minority records, highlighting the need to reconsider its use in privacy-sensitive applications and as a baseline for assessing the privacy of modern generative models.","url_abs":"https://arxiv.org/abs/2510.15083","url_pdf":"https://arxiv.org/pdf/2510.15083","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2510.15083","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2510.15083"}},"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":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/sascommunities/smote-mirrors","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":6},"by_repo_kind":{"found_in_text":{"samples":6,"ran":0,"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":"e0cdc713f55f8fb4","entry":"check_collinear","repo":"sascommunities/smote-mirrors","repo_kind":"found_in_text","path":"code/attacks/utils.py","file_url":"https://github.com/sascommunities/smote-mirrors/blob/HEAD/code/attacks/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e0cdc713f55f8fb4"}},{"code_sha256_prefix":"4c7c66ddd341db5e","entry":"check_midpoint","repo":"sascommunities/smote-mirrors","repo_kind":"found_in_text","path":"code/attacks/utils.py","file_url":"https://github.com/sascommunities/smote-mirrors/blob/HEAD/code/attacks/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4c7c66ddd341db5e"}},{"code_sha256_prefix":"607ef5c1ac937dbb","entry":"featurize_X","repo":"sascommunities/smote-mirrors","repo_kind":"found_in_text","path":"code/attacks/membership_attack.py","file_url":"https://github.com/sascommunities/smote-mirrors/blob/HEAD/code/attacks/membership_attack.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"607ef5c1ac937dbb"}},{"code_sha256_prefix":"54e767bd9df0a50d","entry":"find_intersection_point","repo":"sascommunities/smote-mirrors","repo_kind":"found_in_text","path":"code/attacks/utils.py","file_url":"https://github.com/sascommunities/smote-mirrors/blob/HEAD/code/attacks/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"54e767bd9df0a50d"}},{"code_sha256_prefix":"020be57eeea6712b","entry":"imbalance_data","repo":"sascommunities/smote-mirrors","repo_kind":"found_in_text","path":"code/datasets/utils.py","file_url":"https://github.com/sascommunities/smote-mirrors/blob/HEAD/code/datasets/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"020be57eeea6712b"}},{"code_sha256_prefix":"3d7f429ad3a6970b","entry":"prepare_data","repo":"sascommunities/smote-mirrors","repo_kind":"found_in_text","path":"code/datasets/utils.py","file_url":"https://github.com/sascommunities/smote-mirrors/blob/HEAD/code/datasets/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"3d7f429ad3a6970b"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.CR","source":"arxiv_api"},"syntology_extracted_results":null}