{"id":117354,"date":"2024-07-12T09:43:01","date_gmt":"2024-07-12T07:43:01","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/utechka-tokena-dlya-polnogo-dostupa-k-github-repozitoriyam-proekta-python"},"modified":"2024-07-12T09:43:01","modified_gmt":"2024-07-12T07:43:01","slug":"utechka-tokena-dlya-polnogo-dostupa-k-github-repozitoriyam-proekta-python","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/news\/utechka-tokena-dlya-polnogo-dostupa-k-github-repozitoriyam-proekta-python","title":{"rendered":"Scurgerea tokenului pentru acces complet la repositoarele GitHub ale proiectului Python","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Cercet\u0103torii de la JFrog au descoperit \u00een imaginea Docker \"cabotage-app\" un token care ofer\u0103 acces cu drepturi de administrator la repozitoarele Python, PyPI \u0219i Python Software Foundation pe GitHub. Tokenul a fost g\u0103sit \u00een fi\u0219ierul binar \"__pycache__\/build.cpython-311.pyc\" care con\u021bine bytecode compilat \u00een cache.     <center><img decoding=\"async\" alt=\"Scurgerea tokenului pentru acces complet la repositoarele GitHub ale proiectului Python\" src=\"\/wp-content\/uploads\/2024\/07\/995cd4986ccb553d612c78345dfec4ad.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Potrivit reprezentan\u021bilor repozitorului PyPI, tokenul a fost creat \u00een 2023 pentru dezvoltatorul ewdurbin (Ee Durbin), care ocup\u0103 func\u021bia de director de infrastructur\u0103 \u00een cadrul Python Software Foundation. Tokenul oferea acces cu drepturi de administrator la toate repozitoarele \u0219i organiza\u021biile proiectului, inclusiv toate repozitoarele organiza\u021biilor pypi, python, psf \u0219i pypa. Imaginea Docker problematic\u0103 cu tokenul a fost publicat\u0103 \u00een catalogul Docker Hub pe 3 martie 2023 \u0219i a fost eliminat\u0103 pe 11 iunie 2024, adic\u0103 a fost disponibil\u0103 public timp de 16 luni. Tokenul a fost revocat pe 28 iunie.      <\/p>\n<p>Este notabil c\u0103 \u00een codurile surs\u0103 disponibile, pe baza c\u0103rora a fost generat fi\u0219ierul problematic cu bytecode, men\u021bionarea tokenului lipse\u0219te. Autorul codului a explicat c\u0103, \u00een procesul de dezvoltare a instrumentului cabotage-app5 pe sistemul s\u0103u local, s-a confruntat cu limit\u0103rile de intensitate a accesului la API-ul GitHub \u00een timpul func\u021biei de \u00eenc\u0103rcare automat\u0103 a fi\u0219ierelor din GitHub, iar pentru a ocoli limitele impuse apelurilor anonime la GitHub, a ad\u0103ugat temporar tokenul s\u0103u de lucru \u00een cod. \u00cenainte de publicarea codului scris, tokenul a fost \u0219ters, dar dezvoltatorul nu a luat \u00een considerare c\u0103 men\u021bionarea tokenului a fost cached \u00een fi\u0219ierul precompilat cu bytecode, care a ajuns apoi \u00een imaginea docker.          def _fetch_github_file(     \u2014    github_repository='owner\/repo', ref='main', access_token=None, filename='Dockerfile'     +    github_repository='owner\/repo',     +    ref='main',     +    access_token='0d6a9bb5af126f73350a2afc058492765446aaad',     +    filename='Dockerfile',      ):      <\/p>\n<p>Auditul activit\u0103\u021bii \u00een repozitoarele de pe GitHub efectuat de dezvoltatorii Python nu a eviden\u021biat \u00eencerc\u0103ri externe de acces folosind tokenul expus. Av\u00e2nd \u00een vedere c\u0103, din 2017, GitHub este platforma principal\u0103 pentru dezvoltarea CPython, ob\u021binerea tokenului de c\u0103tre un actor r\u0103u inten\u021bionat ar fi putut duce la compromiterea complet\u0103 a infrastructurii utilizate pentru dezvoltarea Python \u0219i a repozitorului PyPI, precum \u0219i la \u00eencerc\u0103ri de integrare a backdoor-urilor \u00een CPython \u0219i managerul de pachete PyPI.    <\/p>\n<p>Incidentul eviden\u021biaz\u0103 importan\u021ba analizei scurgerilor nu doar \u00een codul surs\u0103, fi\u0219ierele de configurare \u0219i variabilele de mediu, ci \u0219i \u00een fi\u0219ierele binare. \u00cen contextul Python, utilizatorilor li se recomand\u0103 s\u0103 acorde aten\u021bie existen\u021bei fi\u0219ierelor pyc, care con\u021bin cod byte compilat, \u00een proiectele desc\u0103rcate, deoarece aceste fi\u0219iere pot con\u021bine modific\u0103ri ascunse care nu sunt prezente \u00een codul surs\u0103.<br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=61531\">opennet.ro<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0418\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 JFrog \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 Docker-\u043e\u0431\u0440\u0430\u0437\u0430 &#171;cabotage-app&#187; \u0442\u043e\u043a\u0435\u043d, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043a \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u043c Python, PyPI \u0438 Python Software Foundation \u043d\u0430 GitHub. \u0422\u043e\u043a\u0435\u043d \u0431\u044b\u043b \u043d\u0430\u0439\u0434\u0435\u043d \u0432 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 &#171;__pycache__\/build.cpython-311.pyc&#187; \u0441 \u043f\u0440\u043e\u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u043e\u043c. \u041f\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u0435\u043b\u0435\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f PyPI \u0442\u043e\u043a\u0435\u043d \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u0432 2023 \u0433\u043e\u0434\u0443 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 ewdurbin (Ee Durbin), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":117355,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-117354","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0418\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 JFrog \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 Docker-\u043e\u0431\u0440\u0430\u0437\u0430 &quot;cabotage-app&quot; \u0442\u043e\u043a\u0435\u043d, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043a \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u043c Python, PyPI \u0438 Python Software Foundation \u043d\u0430 GitHub.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/news\/utechka-tokena-dlya-polnogo-dostupa-k-github-repozitoriyam-proekta-python\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0423\u0442\u0435\u0447\u043a\u0430 \u0442\u043e\u043a\u0435\u043d\u0430 \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a GitHub-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Python | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0418\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 JFrog \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 Docker-\u043e\u0431\u0440\u0430\u0437\u0430 &quot;cabotage-app&quot; \u0442\u043e\u043a\u0435\u043d, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043a \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u043c Python, PyPI \u0438 Python Software Foundation \u043d\u0430 GitHub.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/news\/utechka-tokena-dlya-polnogo-dostupa-k-github-repozitoriyam-proekta-python\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2024-07-12T07:43:01+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2024-07-12T07:43:01+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Scurgerea token-ului pentru acces complet la repositoarele GitHub ale proiectului Python | ProHoster","description":"Cercet\u0103torii de la JFrog au descoperit \u00een imaginea Docker \"cabotage-app\" un token care ofer\u0103 acces cu drepturi de administrator la repositoare Python, PyPI \u0219i Python Software Foundation pe GitHub.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/news\/utechka-tokena-dlya-polnogo-dostupa-k-github-repozitoriyam-proekta-python","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0423\u0442\u0435\u0447\u043a\u0430 \u0442\u043e\u043a\u0435\u043d\u0430 \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a GitHub-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Python | ProHoster","og:description":"\u0418\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 JFrog \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 Docker-\u043e\u0431\u0440\u0430\u0437\u0430 &quot;cabotage-app&quot; \u0442\u043e\u043a\u0435\u043d, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043a \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u043c Python, PyPI \u0438 Python Software Foundation \u043d\u0430 GitHub.","og:url":"https:\/\/prohoster.info\/ro\/blog\/news\/utechka-tokena-dlya-polnogo-dostupa-k-github-repozitoriyam-proekta-python","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2024-07-12T07:43:01+00:00","article:modified_time":"2024-07-12T07:43:01+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"117354","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 04:04:30","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2026-01-23 04:04:30","updated":"2026-01-23 04:04:30","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/117354","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=117354"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/117354\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/117355"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=117354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=117354"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=117354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}