DEF CON 32のAppSec Villageで Secrets Security について学んだこと

米国で育った人は、夏のキャンプに行ったことがあるかもしれない。自分自身がそこに行ったことがなくても、家から離れて行き、様々な芸術や工艺を学ぶ、新しい最も良い友と出会う、そして忘れられない冒険を体験するキャンプの経験は、ポップカルチャーやメディアに込められている。8月に、地上で最も大きなハッカーの夏のキャンプがラスベガスの炎の中で開催されています。今年は、DEF CONの第32回目の実施を記念して行われました。

DEF CONを体験しない限り説明するのは困難なことがあります。はい、講演トラック、公式のワークショップ、そして複数のキャプチャーザ・フラグ(CTF)がありますが、それ以外にも多くています。他のコンファレンスには、それぞれのサブコンファレンスとコミュニティが主導するイベントが含まれていない。年に何回も参加している参加者でさえ、今までにすべての提供されているものを経験したとは思わないと言っています。

オーガナイザーから公式な人数が発表されていませんが、過去のイベントでは25,000人から30,000人の参加者がいました。それぞれの参加者は、技術の愛とたくさんの知識を共有する準備ができています。廊下は、ハードウェアのハッキング、ソフトウェアの書き込み、音楽の作成、ステッカーの共有、そしてDEF CONの面白さを実現するためにすべての人がいます。

Villages

DEF CON 32には33の村が含まれていました。これらの村は、航空機破解、社会的工学、誤情報、レッドチーム、AppSecまでの幅広い興味を覆います。各村は独立して組織され、参加者にとって特定の興味の分野に焦点を置くために、独自のトーク、ワークショップ、および手をかける活動を提供します。

AppSec村は、私たちの生活に动力を与えているアプリケーションを守ることを焦点にした、大きな破解と安全社区の中の宝貴な空间でした。著者は、AppSec Village 2024を組織し、運営する幸運な人たちの一員でした。

Spot the Secrets

RSA Conference 2024のAppSec村にて、GitGuardianはSpot the Secretsというカードゲームを揭露しました。これは、明文のクレデンシャルを手動でレビューする体験をシミュレートするゲームであり、プレイヤーは、すべての隠されたAPIキー、パスワード、その他の明文の秘密を発見するために竞争します。これらは、攻撃者がより深くアクセスするために使用できるコードサンプル、Jiraチケット、ログファイル、Slackメッセージのコレクションに対してです。

Spot the Secrets at AppSec Village, edited to account for DEF CON photo rules

DEF CONの2日間、私たちのPODをAppSec Villageに来る120人以上の人がこの练习を自分で体験しました。私たちは、最も素早く、間違いを少なくしたプレイヤーのために特別なスワッグプレゼントを贈るリーダーボードを设けました。

最も一般的な Secrets セキュリティ質問

カードにコードを含む内容を見ていくにつれ、私たちは幅広い質問を受けました。まだこれらの疑問の答えを聞いていない方々にも有益かと思うので、いくつかの質問を共有します。

以下は私たちが聞いた最も一般的な11の質問と私たちの回答です。

1. Gitでのコミットとは何ですか?

Gitは、世界の97%以上的の開発者が使用しているバージョン管理システムであり、コミットはGit内での作业の単位です。コミットは、開発者が最後のコミット以降に行ったすべての作业を含んだ特定の時間点のファイルシステムのスナップショットです。コミットを一つ一つ並べると、Gitの履歴を得ることができます。これにより、コードベースの生命周期の中で徐々に行われたすべての変更を調査することができます。Gitを使用する際の秘訣的なセキュリティ課題の1つは、履歴が共有された永続的な記録であることです。もし秘訣を1つのコミットに追加し、次のコミットで削除すると、秘訣を含んだコミットはまだ保全されます。

2.何が秘訣であるかを判断する方法はありますか?

秘密とは、システムまたはデータに直接アクセスを与えるクレデンシャルを指します。これらは、APIキー、パスワード、証明書、トークンなど、様々な形を取ることができます。彼らが見つけづらいの一部の理由は、コードやコマンドライン内部で多くの方法で使用されているからです。たとえば、設定ファイル内部において、特定の変数がAPIキーに設定されるかもしれません。しかし、Slackなどのシステムでは、APIトークン自身がURLに埋め込まれていて、それを秘匿していることを知るには、そのシステムに熟悉する必要があります。

多くのシステムでは、UI URLに長い、ユニークな数値を使用していますが、それはインライントークンに非常に似ているかもしれません。たとえば、FigmaのURLは、パスにbase64エンコードされた文字列が含まれているように見えるかもしれません。しかし、随時のFigmaのリンクを実行すると、ログイン画面に出会います。なぜなら、そのページにアクセスするには認証されたユーザーが必要です。それは自動的にシステムアクセスを許可したりしませんが、単にページの場所を特定しています。だから、Figmaに未に足場を持っていない攻撃者は「アクセス不可」のエラーを返され、次に進みます。これは、秘匿されていることを识別するツールを取り入れるのを另一个の理由とします。なぜなら、認証トークンを含んだURLと、そう思われるだけのURLを区別できるプラットフォームがあるからです。

3. 有効なことは何か?

“有効”というのは、特定の証明書がそれに関連付くシステムまたはデータにアクセスを許可するのに依然として機能していることを意味します。攻撃者によって発見されると、有効な秘密はすぐに使用できます。非有効な秘密は攻撃者にはアクセス権限を与えませんが、全体のアーキテクチャや相互関連したシステムについての理解を提供することができます。しかし、有効な秘密だけが攻撃者にリソースに直接アクセスする道を提供します。このようなサイドメニューの動きは、よく見つけられないかもしれません。

4. 私はどの秘匿情報が探し出すべきかを知るべきですか?

最善の答えは、有効な秘匿情報を見つけて削除することです。しかし、Spot the Secretsが示しているように、正しいツールを持っていない限り、これは解決するのが困難な問題です。マニュアルコードレビューまたは単純なパターンマッチングに依存するツールは、既に無効化された秘匿情報に時間を費やして修正を行うことになり、有効なものに集中することができません。期限切れの鍵はあまり危険性を持たないので、これらを排除する努力は、発見した有効なクレデンシャルに比べて優先度を低くするべきです。

5. 秘匿情報とまったくよく書かれたコードの違いは何でしょう?

攻撃者はほとんどあなたのコードを読んでいるわけではなく、可能な限り素早く幅広いアクセスを得る特定の方法をスキャンしています。よく書かれていないコードは、攻撃者が使用できる多くの脆弱性を含む可能性が高いですが、特にインフラスキャンプリングの設定についてです。しかし、これらの欠陥を利用するためには、攻撃者は該当の欠陥を理解し、その問題に特化した攻撃を実行する必要があります。そうするのは簡単な plaintext クレデンシャルを利用するよりも难しいです。

変数名やユーザー名を利用してより複雑な攻撃を行うことができます。たとえば、コードにあるユーザー名や電子メールアドレスを使用して、パスワードスプレー攻撃や強力な試行攻撃を行うことができますが、直接の秘密使用を検出するのは容易ではなく、攻撃者にとっては非常に時間のかかることになります。

6. 秘密を見つけた後、どうすればいいのですか?

まず、息を吐いて冷静にしてください。私たちの中で最も优秀な人々であっても、秘密が漏洩したときには過激に取り組むことはできません。紧急性を持ちながらも、パニックになり秘密を破棄しようとするのを止め、何が起こるのか知らないままにすることはできません。これはさまざまな他の問題を引き起こすことがあります。

私たちは以下の手順に従うことを推奨します。

  1. 秘密が開かないようにしているものを理解します。
  2. 関連するデータやシステムがどのくらい重要かを判断します。
  3. ログを確認し、秘密の不正使用があったかどうかを確認します。
  4. データやサービスアクセスが漏洩されたかどうかを判定します。
  5. 秘密を回転させると何が壊れるかを知ります。
  6. 秘密を回転させ、新しいクレデンシャルを安全に保存します。
  7. 作成中やプロダクションデプロイの破綻を修正します。
  8. 事件を再び確認し、漏洩防止策を作成する行動計画を作成します。

秘密が露出于えたときに何をすべきか:沉着して事件的に対応する方法」の記事で、修復プロセスについて詳細に読むことができます。

7. 私のチームは秘密が見つかったときに常にGitの履歴をrewriteするのです。これだけで問題解決できますか?

残念ながら、いいえです。Gitの掃除手順をremediationプロセスの最後の手順として愛していますが、多くの組織にとってはオプションだと見られています。明文として露出したSecretを回転することを推奨します(上のリンクを参照してremediationプロセスのアドバイスをご覧ください)。

8. 私はリポジトリを公共から外すだけでないですか?

正直に言って、私たちが望んでいたことではありませんが、GitHubの公共APIで公開されたときから、常に侵害されたと考えるべきです。GitGuardianは、GitHub公共APIで発生する全ての新しいcommitisPublicイベントをスキャンします。

これは私たちの年次のSecret Sprawl状況報告書を作成するために、GitGuardian Public Monitoring提供の基盤を形成しています。私たちはコミッターに危険を引き起こすことを警報する意图を持っていますが、公共APIをモニターしているのは私たちだけではありません。常にpublicに推送したコードやファイルのコピーが、知らない人によって作成され、知らない場所に保存されていると常に想定することを推奨します。

9. 虚偽的な陽性は何故問題となるのか?

Spot the Secretsの実習で、100の可能性のあるコミット、Jira、Slack、そしてLogカードに入ったSecretをすべて見つけることをユーザーに依頼しています。それには、虚偽的な陽性に対する時間のペナルティがあり、間違って Secretが含まれていると思われたカードには10秒のペナルティが科せられます。

Limited scopeの演習では、秘密を含まないものをフラグを立てるのは心がけることになるかもしれませんが、実際には、それはあなた、報告者、そして解決策に取り組むことが課題される人々にとって有効な時間を無駄にしてしまいます。

いくつかのツールやプロセスがあまりに多くの誤った阳性結果を報告すると、警報 Fatigueに陥ります。ユーザーは警報を洪水に耐えるのになされ、それらを無視し始めます。これはツールの信頼性に対する不确实性を招くことになり、使用方法が一貫性を欠くようになります。また、これは修復プロセスを整个的にジャマする可能性があり、実際には秘密が報告されたときに、時間を取りれずに対応できないことがあります。

10. ファイル名は、秘密の识別にどのように関連しているのか?

簡単に言うと: コンテキストです。汎用の秘密をパターンマッチングだけで特定するのは特に困難です。Markdown ファイルに长い文字列がある場合、私たちの研究はそれがexample passwordの可能性が高いと指摘していますので、それに対応する必要はありません。しかしながら、同じ文字列がpassword=の後ろに現れ、project.envという名前のファイルにある場合、実際の秘密を手に入れたという可能性がもっと高いことが示唆されます。

ファイル名は、GitGuardian Secrets Detection EngineのPre- and Post Validationにおいて考慮される要素の一つであり、内部でプラットフォームにおけるFP removerと一緒に、誤った陽性結果を除去するための要因です。

11. 人々は本物のコードをレビューして秘密を見つけるのか?

はい。私たちが調査したIT決定者のうちの27%が、秘密の散乱を対処するために手動コードレビューを依頼していると言った。しかし、75%が秘密漏洩に影響を受けたと言った。

Spot the Secretsは、人間がこれらの問題を見つけることに頼ることの問題を示すものである。機械は、数천あるまたは数百万の行のコードをパターンマッチングするのにはよりよいです。

DEF CONは学び合うことがあります

DEF CONでは、水を十分に取ること、夜に少なくとも数時間の睡眠を取ること、110°F/43°Cを超えるときは室内に居ることなど、多くの教訓を学びました。

スケジュールには多くの素晴らしいトークがありました;ビデオが利用可能になるのを楽しみにして、 Secrets Sprawlについて学ぶために内容を見逃したときに追い诘めることができます。この過程で、私たちはセキュリティ担当者、開発者、一般的にこの問題を見て、解決策を考える方法について多くを学びました。GitGuardianは、これらの教訓を吸収して、この問題の解決を我々皆によりアクセス可能で簡単にすることを望んでいます。

DEF CONに行くことをまだ考えていない場合、私たちはそれを強くお勧めします。それはAppSec Villageに参加することと、ハッカーの夏のキャンプであなたの部族を見つけるためだけでなく。


Source:
https://dzone.com/articles/secrets-security-at-appsec-village-at-def-con-32