PyPI Packages Found to Expose Thousands of Secrets
2023/11/14 SecurityWeek — PyP Iパッケージにコミットされた Python コードを分析した結果において、何千ものハードコードされた認証情報が存在することが明らかになったと、コード・セキュリティ企業の GitGuardian が警告している。GitGuardian はセキュリティ研究者の Tom Forbes と共同で、約3,000の PyPI パッケージの中にある 4,000件ほどのユニークなシークレットを発見し、このうちの 760件以上が有効であると判明したとしている。
研究者たちが特定したシークレットは、AWS/Azure AD/GitHub/Dropbox/Auth0/MongoDB/MySQL/PostgreSQL/SSH/Coinbase/Twilio Master の認証情報などの、151種類のユニークなものである。
有効な認証情報は、組織にとって重大かつ差し迫った脅威となる。なぜなら、それらが脅威アクターたちに悪用される可能性があるからだ。したがって、流出した秘密を検証することは、インシデント調査において極めて重要になる。
GitGuardian によると、検証できた認証情報は 800件に満たなかったが、他の流出した認証情報が無効であるとは断定できないようだ。
同社は、「シークレットが適切にローテートされることで、初めて有効性/無効性を判定ができる。GitGuardian が自動検証に向けて取り組んでいるシークレットには、Hashicorp Vault Token/Splunk Auth Token/Kubernetes Caster Auth/Okta Token などがある」と述べている。
PyPI パッケージで流出したシークレットの件数は、時間の経過につれて増加しており、新鮮で有効な認証情報の件数も着実に増加している。過去1年間だけでも、1,000以上のシークレットが PyPI に追加されていると、同社は述べている。
さらに憂慮すべきは、流出したシークレットが複数のリリースに含まれているケースであり、その発生件数が大幅に増加しているという現実だ。
研究者たちは、「この数字を整理すると、PyPI Web サイトを通じてリリースされているプロジェクトは 45万件を超え、そこには 940万件以上のファイルが含まれている。また、それらのパッケージのリリースされたバージョンは 500万を超える。したがって、すべてのリリースで共有されたシークレットを合計すると、56,866件のシークレットが存在すると判明した」と指摘している。
流出したシークレットの大半は “.py” ファイル内で特定されたが、”.json” や “.yml” などの設定/文書ファイルや、’readme’ファイルにも認証情報が格納されていることも判明している。さらに研究者たちは、テスト・フォルダ内の各種のファイルにも、数百のシークレットが存在することを発見している。
GitGuardian は、PyPI でシークレットが漏れる主な原因は、偶発的な漏洩であると指摘している。偶発的に公開されたファイルは、パッケージ全体の公開と比べて多発している問題である。そのため、新しいリリースにおいては、それらのファイルを削除するために、プッシュが繰り返されるケースもある。
Python の開発者たちは、シークレットの漏洩を防ぐために、暗号化されていない認証情報をパッケージで使用すべきではない。また、パッケージのリリース前には必ずコードをスキャンして、シークレットを確認し、それらがローカル・マシンから転送されないようにすべきだ。
GitGuardian は、「オープンソースのパッケージでシークレットを公開することは、開発者とユーザーにとって、重大なリスクを引き起こすことになる。攻撃者たちは、この情報を悪用して不正アクセスを行い、パッケージ/メンテナへのなりすましや、ソーシャル・エンジニアリングの手口として悪用し、ユーザーを操ることが可能になる」と指摘している。
この種のシークレット漏洩が、なかなか止まりませんが、人手による防止というものが、基本的に困難なものだと思われます。そこで、PyPI に限らず、リポジトリへのプッシュ時のシークレット・スキャンが推進されていますが、すぐに結果へと結びつくものでもなさそうです。よろしければ、PyPI で検索も、ご利用ください。


You must be logged in to post a comment.