web-dev-qa-db-ja.com

過去の開発者が私のウェブサイトをバックドアしていることを排除する方法は?

私のクライアントは、彼の古い開発者の1人が、過去の開発者が特定の方法でサイトにアクセスできるようにするコードを見つけたと言っています。彼女は、特定の制限された領域にログインし、ユーザーのサインアップなど、サイトで特定のことが起こったときに自分自身に電子メールを送信できるようにするコードを作成しました。

私のクライアントは今、これが起こっていないことを確認したいと思っています。彼は私にすべてのソースコードを調べてこれを行うように依頼しました。これは便利かもしれませんが、過去の開発者がまだサイトにアクセスするためにバックドアのようなものを使用していることを除外するための最良の方法は何ですか?

1
Ryan

開発者が意図的および非意図的なバックドアをコードに配置する方法は無数にあります。開発者が熟練している場合、彼らはそれらをうまく隠したり、意図しない間違いのように見える方法でそれらをマスクしたりすることができます。完全なコードレビューは、それ以上のバックドアが存在する可能性が低いという合理的な確実性を達成する唯一の方法です。しかし、バックドアの存在を完全に排除する確実な方法は実際にはありません。

急いでいるときは、完全なコードを1行ずつ調査する前に、少なくとも最も明白なことを除外しようとすることができます。

  • ログインと認証コードを見てください-これは、有効なアカウントなしでログインできるようにする魔法のパラメータ、ユニバーサルパスワード、またはハードコードされた資格情報を持っている最も明白な場所です。
  • コードベースに、どこにも参照されていないように見えるスクリプトがあるかどうかを確認します。それらは、非表示のコントロールパネルなどである可能性があります。
  • 特に電子メールメッセージが懸念される場合は、プログラミング言語で電子メールを送信する関数のWebサイトコードベースをgrepします。また、送信SMTPトラフィックのWebサーバートラフィックを監視して、アプリケーションによって通常送信される形式と一致しない電子メールを検出することもできます(電子メールを送信することになっている場合)。

ちなみに、これは法務部門が取り組むべきトピックかもしれません。アプリケーションのバックドアは契約違反である可能性が高く、管轄区域の重罪である可能性もあります。

1
Philipp

過去にクライアントと一緒にいたことがあります-開発者(従業員または請負業者)がサイトにアクセスするためにコードに裏口を残したことを除外するためのいくつかの実用的な対策があります。

  1. Webサーバーから離れた人の資格情報(基本認証資格情報など)、オペレーティングシステムユーザー、データベースユーザー、メールサーバーユーザーをすべて削除します。今それをして、人々が去るときにそれをSOP)にしてください。
  2. Sudo権限を持つユーザー(またはWindowsを使用している場合は管理者)のリストを確認します。知らない、または信頼できないすべてのSudoユーザーを削除します。誰かがSudoを必要とする場合-彼らはそれを求め、あなたは正当化を求めます
  3. 侵入の試みについてはセキュリティログをgrepし、離れた開発者のように聞こえる名前の出現についてはWebサーバーログをgrepします。 FTPサービスをシャットダウンします。
  4. Linuxを使用していて、Sambaを実行している場合-許可された権限を確認します-会社で働いていないユーザーを削除します人の名前または電子メールのすべてのソースコードをGrepします-ヒットした場合は、コードをクリーンアップします
  5. Svnまたはgitを使用していると仮定して、開発者が去るまたは解雇される1週間前に実行したすべてのコミットを調べます。悪質なもののほとんどは、終了間際に発生します。コードを手動でgrepを使用して確認し、ユーザー名、クエリ文字列のマジックパラメータ、時刻、またはIPアドレスに基づいて認証の例外を具体的に探します。何かかどうかを示すコード!認証は疑わしいです。
  6. RoRやCakePHPなどのMVCフレームワークを使用していると仮定します-前のポイントと同様に、aclテーブルを調べ、認証コントローラーの例外を調べます
  7. エクスプロイト後-SOPを実装して、OSおよびWebアプリのユーザーを定期的にスイープし、未使用のアカウント/離れた人のアカウント/不要な特権を持つアカウントを削除します。
0
Danny Lieberman