Badacze z firmy JFrog odkryli w obrazie Dockera „cabotage-app” token, który daje dostęp z uprawnieniami administratora do repozytoriów Python, PyPI i Python Software Foundation na GitHubie. Token został znaleziony w pliku binarnym „__pycache__/build.cpython-311.pyc” z przekompilowanym kodem bajtowym.

Jak informują przedstawiciele repozytorium PyPI, token został utworzony w 2023 roku dla dewelopera ewdurbin (Ee Durbin), który w organizacji Python Software Foundation zajmuje stanowisko dyrektora ds. infrastruktury. Token zapewniał dostęp z uprawnieniami administratora do wszystkich repozytoriów i organizacji projektu, w tym wszystkich repozytoriów organizacji pypi, python, psf i pypa. Problematyczny obraz Dockera z tokenem został opublikowany w katalogu Docker Hub 3 marca 2023 roku, a usunięty 11 czerwca 2024 roku, co oznacza, że przez 16 miesięcy był dostępny publicznie. Token został odwołany 28 czerwca.
Ciekawe, że w dostępnych kodach źródłowych, na podstawie których został wygenerowany problematyczny plik z kodem bajtowym, nie ma wzmianki o tokenie. Autor kodu wyjaśnił, że w trakcie opracowywania narzędzia cabotage-app5 na swoim lokalnym systemie napotkał ograniczenia intensywności dostępu do API GitHub podczas wykonywania funkcji automatycznego ładowania plików z GitHub, a aby obejść limity nałożone na anonimowe zapytania do GitHub, tymczasowo dodał swój roboczy token do kodu. Przed publikacją napisanego kodu token został usunięty, ale deweloper nie uwzględnił, że wzmianka o tokenie została przekompilowana w pliku z kodem bajtowym, który później trafił do obrazu dockera. def _fetch_github_file( — github_repository=„owner/repo”, ref=„main”, access_token=None, filename=„Dockerfile” + github_repository=„owner/repo”, + ref=„main”, + access_token=„0d6a9bb5af126f73350a2afc058492765446aaad”, + filename=„Dockerfile”, ):
Przeprowadzony przez deweloperów Pythona audyt aktywności w repozytoriach na GitHubie nie ujawnił żadnych zewnętrznych prób dostępu przy użyciu ujawnionego tokena. Biorąc pod uwagę, że od 2017 roku GitHub jest podstawową platformą do rozwoju CPython, wpadnięcie tokena w ręce osoby trzeciej mogło doprowadzić do całkowitej kompromitacji infrastruktury używanej do rozwoju Pythona oraz repozytoriów PyPI i możliwości wprowadzenia złośliwego oprogramowania do CPython i menedżera pakietów PyPI.
Incydent pokazuje znaczenie analizy wycieków nie tylko w kodzie źródłowym, plikach konfiguracyjnych i zmiennych środowiskowych, ale także w plikach binarnych. W kontekście Pythona użytkownicy powinni również zwracać uwagę na obecność w pobranych projektach plików pyc z skompilowanym kodem bajtowym, ponieważ te pliki mogą zawierać ukryte modyfikacje, które nie są obecne w kodzie źródłowym.
Źródło: opennet.ru
