PHP プロジェクトの Git リポジトリとユーザー ベースの侵害に関するレポート

特別に設計されたユーザー エージェント ヘッダーを含むリクエストを送信する際にバックドアが有効化された、PHP プロジェクトの Git リポジトリ内での XNUMX つの悪意のあるコミットの特定に関連するインシデントの分析の最初の結果が公開されました。 攻撃者の活動の痕跡を調査する過程で、git リポジトリが配置されていた git.php.net サーバー自体はハッキングされなかったが、プロジェクト開発者のアカウントが含まれるデータベースは侵害されたと結論づけられました。 。

攻撃者は、master.php.net サーバー上の DBMS に保存されているユーザー データベースをダウンロードできた可能性があります。 master.php.net のコンテンツは、最初からインストールされた新しい main.php.net サーバーにすでに移行されています。 php.net インフラストラクチャへのアクセスに使用されるすべての開発者パスワードがリセットされ、特別なパスワード回復フォームを通じて変更プロセスが開始されました。 git.php.net および svn.php.net リポジトリは読み取り専用のままです (開発は GitHub に移行されました)。

PHP の創設者である Rasmus Lerdorf のアカウントを介して行われた最初の悪意のあるコミットが発見された後、彼のアカウントがハッキングされたと考えられ、主要な PHP 開発者の XNUMX 人である Nikita Popov が変更をロールバックし、PHP のコミット権限をブロックしました。問題のあるアカウント。 しばらくして、デジタル署名を使用したコミットの検証がなければ、php-src リポジトリにアクセスできる参加者は誰でも、架空の作成者名を置き換えることで変更を加えることができるため、ブロックすることは意味がないと気づきました。

次に、攻撃者はニキータ自身に代わって悪意のあるコミットを送信しました。 リポジトリへのアクセスを整理するために使用される gitolite サービスのログを分析することにより、実際に変更を加えた参加者を特定する試みが行われました。 すべてのコミットの説明が含まれているにもかかわらず、XNUMX つの悪意のある変更についてはログにエントリがありませんでした。 gitolite 経由の接続をバイパスしてコミットが直接追加されたため、インフラストラクチャに侵害があったことが明らかになりました。

git.php.net サーバーはすぐに無効になり、プライマリ リポジトリは GitHub に転送されました。 慌てて、リポジトリにアクセスするには、gitolite を使用した SSH に加えて、HTTPS 経由でコミットを送信できる別の入力があることを忘れていました。 この場合、git-http-backend を使用して Git と対話し、認証は Apache2 HTTP サーバーを使用して実行され、master.php.net サーバー上の DBMS でホストされているデータベースにアクセスして資格情報を検証しました。 キーだけでなく通常のパスワードでもログイン可能でした。 http サーバー ログの分析により、悪意のある変更が HTTPS 経由で追加されたことが確認されました。

ログを調査すると、攻撃者は最初に接続したのではなく、最初はアカウント名を見つけようとしましたが、それを特定した後、最初の試行でログインしたことが明らかになりました。 彼らはラスムスとニキータのパスワードを事前に知っていましたが、ログイン情報は知りませんでした。 攻撃者が DBMS にアクセスできたとしても、なぜそこで指定された正しいログインをすぐに使用しなかったのかは不明です。 この矛盾についてはまだ信頼できる説明が得られていません。 このサーバーは非常に古いコードと古い OS を使用しており、長い間更新されておらず、パッチも適用されていない脆弱性があったため、master.php.net のハッキングが最も可能性の高いシナリオと考えられています。

実行されたアクションには、master.php.net サーバー環境の再インストールと、新しいバージョンの PHP 8 へのスクリプトの転送が含まれます。DBMS を操作するためのコードは、SQL コードの置換を複雑にするパラメータ化されたクエリを使用するように変更されました。 bcrypt アルゴリズムは、パスワード ハッシュをデータベースに保存するために使用されます (以前は、パスワードは信頼性の低い MD5 ハッシュを使用して保存されていました)。 既存のパスワードはリセットされ、パスワード回復フォームから新しいパスワードを設定するように求められます。 HTTPS 経由の git.php.net および svn.php.net リポジトリへのアクセスは MD5 ハッシュに関連付けられていたため、git.php.net および svn.php.net を読み取り専用モードのままにし、すべてのリポジトリも移動することが決定されました。残りは、メインの PHP リポジトリと同様に、GitHub 上の PECL 拡張リポジトリに割り当てられます。

出所: オープンネット.ru

コメントを追加します