企業秘密をコードにハードコーディングすることは、回避可能な重大なセキュリティ リスクです。
著者 Robert Curlee のHow to Prevent Secrets from Creeping into Codeから翻訳されました。
公開されたコードには機密情報が含まれることが多く、所有者はセキュリティ リスクにさらされます。この機密情報には、パスワード、API キー、暗号化キー、トークン、データベース資格情報、その他の企業の非公開情報が含まれます。
ソース コードに機密情報をハードコーディングすることは危険であり、開発者が最も誠実に努力したにもかかわらず、依然として機密情報が侵入する可能性があります。開発者は、コードを作成するときにショートカットを使用して機密情報をコードに渡す場合があります。また、コード内の機密情報の影響を認識していない場合もあります。さらに、ほとんどのスキャン ソリューションでは、コードに問題としてフラグが立てられた理由の判断は開発者に任されています。最後に、ほとんどのツールはリークが発生した後にのみコード リポジトリ内のシークレットを検索するため、痛みを伴う修復 (つまり、シークレットのローテーション) が必要になります。
時間の制約により、機密情報を適切に管理、保存、保護することは複雑になったり、誤解されたり、単純に省略されたりする可能性があります。さらに、企業が機密情報がいつどこでプロジェクトに入るのかを把握していなければ、プロジェクトのリリース時に機密情報が漏洩してセキュリティが損なわれることを防ぐことができません。
コードに組み込まれた資格情報やその他の機密情報は定期的に見出しを飾りますが、人的ミスによる漏洩の数は増加しています。問題が発生する前に、IDE および CI/CD パイプライン全体で機密情報を取得するツールは、ゲームチェンジャーです。
機密情報がどのようにコードに侵入するかを学びます
機密情報がコード内で漏洩する前に検出できるため、組織はリスクにさらされるリスクを軽減できます。 IDE でそれらを検出すると、それらを修正するためにシークレットをローテーションする手間が省けます。ただし、その前に、機密情報がどのようにしてコードに組み込まれるかを理解する必要があります。理由はいくつかあります。
1. 知識の不足
おそらく経験不足や不適切なトレーニングが原因で、適切な機密情報管理とソース コードのセキュリティを理解していない開発者もいるかもしれません。コード内の機密情報を扱うためのベスト プラクティスを知らない開発者が 1 人いるだけで、企業が脅威アクターの手に渡ってしまいます。知識が力であるならば、最良の防御線は知識豊富なチームです。
2. 間違えて
開発者は、後で削除することを目的として、簡単なローカル テストのために資格情報やシークレットを一時的にハードコードする場合があります。ただし、これらのファイルが誤ってパブリック リポジトリにコミットされ、一時的な変更が永続的なものになってしまう場合があります。コードが後で削除されたとしても、クリーンアップする前に誰かが機密情報を含むコードをコピーした可能性があります。間違いを犯すのは人間の常ですが、その結果が甚大になる可能性がある場合は、可能な限り積極的にミスを防ぐことが最善です。
3. 盲目的な信頼
自分で問題を解決することは素晴らしい学習方法ですが、場合によっては問題が非常に特殊なため、自分で解決するしか方法がありません。時間がかかり、解決策が見つからない場合は、製品ドキュメントや Stack Overflow などのサイトに助けを求めることをお勧めします。ただし、これらの資料は有用な説明と例を提供しますが、単にコピー&ペーストして額面通りに受け取るべきではありません。
Stack Overflow のコードとドキュメントは質問に答えることができますが、解決策を実装する最も安全な方法ではありません。たとえば、ドキュメントには多くの場合、製品の機能を説明するコード スニペットが含まれていますが、注意して使用する必要があるかどうか、より安全なオプションがあるかどうかについては言及されていない場合があります。結果?不正なコード。コード ベースに導入するソリューションはすべて、品質基準を満たしており、コードに問題を引き起こさないことを確認するために適切に評価される必要があります。
コードへの機密情報の漏洩につながるもう 1 つの信頼性の問題は、AI によって生成されたコードの使用の増加です。コード開発で生成 AI が普及するにつれて、スキャンする必要があるコードの行数と機密情報の問題の数が増加することがわかります。 AI が生成したコードを見ると、サービスに接続する正しい方法はトークンまたはシークレットをハードコードすることだと思われるかもしれません。ヒントの質や問題意識によっては、AIがきれいなコードを生成できず、機密情報の漏洩につながる可能性があります。 AI によって生成されたコードは、サービスへの接続方法を理解するための基礎として機能しますが、Confidential Information Vault を使用するにはコードを変更する必要があります。
最終的には、AI を使用して発見または生成したコードに異議を唱える必要があります。組織は、開発者チームが適切なコード品質ツールを導入して、機密情報がコードに浸透するのを防ぎ、コード開発のできるだけ早い段階で漏洩に対処できるようにする必要があります。
機密情報を最初から取得
導入の時点で公の機密情報にフラグが立てられると、コーディング中のリアルタイムであっても、コミットの直前であっても、チームは多くの悩みを軽減できます。ヒューマンエラーは起こりますが、適切なタイミングで適切なチェックを行うことで、エラーによる影響を早期に防ぐことができます。
開発ワークフローにおけるこれらの問題を検出して解決するのに最適な場所は、最初の IDE です。 SonarLint、SonarQube、および SonarCloud の機密情報検出機能を使用すると、組織はソース コード内の公開されている機密情報を検出し、その漏洩を排除し、プライベート データへの違法または不正アクセスによるセキュリティ リスクを軽減できます。 SonarQube Enterprise Edition 10.3 以降を使用している開発者は、カスタム シークレット パターン検出ルールを作成することもできます。これらをClean as You Code (CaYC) メソッドおよび Learn as You Code メソッドと組み合わせると、クリーン コード(保守可能で信頼性が高く安全なソフトウェアを生成するコード) の配信がサポートされます。
開発の初めから IDE のコードから機密情報を排除することで、チームは機密情報がリポジトリに入るのを防ぐことができます。プロジェクト開発の早い段階で機密情報を検出して削除すると、公開された機密情報がリリース サイクルの後半で発見された場合に必要となる、複雑で費用のかかる修復作業が軽減されます。
私はオープンソースの産業用ソフトウェアを諦めることにしました - OGG 1.0 がリリースされ、Huawei がすべてのソース コードを提供しました。Google Python Foundation チームは「コード クソ マウンテン」によって解雇されました 。 Fedora Linux 40が正式リリース。有名ゲーム会社がリリース 新規定:従業員の結婚祝儀は10万元を超えてはならない。チャイナユニコム、世界初のオープンソースモデルLlama3 8B中国語版をリリース。Pinduoduoに賠償判決国内のクラウド入力方式に500万元の罰金- クラウドデータアップロードのセキュリティ問題がないのはファーウェイだけこの記事はYunyunzhongsheng ( https://yylives.cc/ ) で最初に公開されたもので、どなたでもご覧いただけます。