Skip to main content

Snyk Ambassadorと学ぶセキュリティの教訓

著者
Headshot of Andres Haro

Andres Haro

2022年10月11日

0 分で読めます

執筆: Andres Haro、Snyk Ambassador

テクノロジー業界では、長年にわたりセキュリティが懸念事項となっています。しかし、コードのセキュリティ確保に関して、自社のプロトコルやガイドラインに従っている企業は多くありません。

セキュリティインシデントはまれであり(自分の組織では起こりそうにない)と思いがちですが、Uberで最近発生した問題は、それが間違いであることを示す数ある事例の一つです。このインシデントは、18歳の人物がソーシャルエンジニアリングを使い、Uberの従業員に偽のUberサイトへログインするよう指示したことから始まりました。これにより、入力された認証情報をリアルタイムで盗み、本物のUberサイトにログインできるようになりました。

Uberの情報漏えいと、そこから得られた教訓

当時、UberではMFAが有効になっていました。従業員がログインする際、スマートフォンに通知が届き、ボタンを押すよう促すアプリを使っていたのです。ハッカーは、認証情報を本物のサイトに何度も入力することで、この保護を回避しました。従業員は混乱していたか、疲れていたのでしょう。最終的にボタンを押してしまいました。そのボタンが押されたときには、ハッカーはすでにログインしていました。

Uberが何もできなかったと想像してみてください。MFAを導入していても、悪意あるユーザーは巧妙な手口で会社の個人情報を入手し、被害を与えました。コードのセキュリティを確保する対策を講じていなかったら、何が起きていたでしょうか。

コードを保護するには?

テクノロジー業界に携わっている方なら、オープンソースコードや質問への回答を探すために、Stack Overflowをよく利用していることでしょう。共同作業や問題解決に役立つ優れたツールですが、サードパーティのサイトからコードをそのままアプリケーションにコピーすると、さまざまな脆弱性にさらされる可能性があります。

こうしたリスクを避けるため、選んだコードを本番環境のブランチにコピーする前に、SnykのCode Checkerツールでスキャンすることをおすすめします。

Snyk Code Checkerのウェブページ。セキュリティ分析用のJavaScriptコードが入力されており、GitHubとGoogleのサインアップボタン、「コードをチェック」ボタンが表示されている。

ここで、Snykで何ができるのかと疑問に思うかもしれません。Snykは、あらゆるプラットフォームのコードをスキャンできるだけでなく、現在のリポジトリに潜む問題を把握し、その修正方法についてアドバイスします。

下の画像を見ると、Snykが私のGitHubアカウントに接続されていることがわかります。

保留中のタスク、脆弱性のあるプロジェクト、現在のセキュリティ問題の件数を表示するSnykのセキュリティダッシュボード。

SnykをGitHubアカウントに接続すると、更新されていない依存関係や、コードに問題を引き起こしているもの、更新が必要なものを確認できます。

次の画像はSnykのレポートです。スキャンで検出された脆弱性が一覧表示され、深刻度に応じて低、中、高、重大に分類されています。これで、脆弱性を無視するか修正するかを判断するために必要な情報がすべてそろいます。

package.jsonの脆弱性を表示するSnykのダッシュボード。高深刻度のlodashプロトタイプ汚染の問題と、脆弱性を修正するボタンが表示されています。

DevSecOpsの実践者として、私は常に重大な脆弱性を優先し、スコアカードを確認して、すぐに修正できるかどうかをチームで検討するよう促しています。なぜでしょうか。発見された脆弱性についてソフトウェアエンジニアに共有し、現在のスプリントで修正できる余地があるか確認する必要があるからです.一方で、発見された当日に重大または高い深刻度の脆弱性を修正すると決めるチームもあります。最終的には、組織が持つリソースや人員次第です。Snykはどちらの判断にも対応し、脆弱性の修正を後回しにしたり、すぐにPRを作成したりできるため、特に役立つツールです。

「この脆弱性を修正」をクリックすると、次の画面が表示されます。

脆弱なパッケージ、利用可能なアップグレード、部分的な修正、修正方法がない問題を一覧にしたセキュリティ修正レポート

修正PRを作成画面には、スキャンで検出されたすべての脆弱性が一覧表示されます。内容について疑問が生じることもあるでしょう。PR一覧の特定の問題について詳しく知りたい場合は、脆弱性をクリックしてください。ここでは、修正可能な問題の下にある正規表現によるサービス拒否(ReDoS)をクリックします。

ansi-html npmパッケージの重大度の高い正規表現サービス拒否(ReDoS)脆弱性について詳しく説明する、Snyk Vulnerability DBのページ。

これにより、問題の詳細を確認できます。実際の問題ではない場合や、誤検知と思われる場合は、「間違いを見つけましたか?」をクリックして報告できます。詳細を共有する別の画面が表示されます。

脆弱性についてよく知らない場合は、Snyk Learnで詳しく学ぶことができます。今回の例については、ReDoSのレッスンページをご覧ください。

理解が深まり、必要な情報がそろったところで、PRを作成できます。GitHubでは、次のように表示されます。

Snykによる「8件の脆弱性を修正」というタイトルのGitHubプルリクエスト。脆弱性のあるnpm依存関係と、その深刻度、問題、エクスプロイトの成熟度を一覧表示しています。

その後、新しいPRとブランチをマージして、すべての修正を反映できます。

すべてのチェックに合格し、マージコンフリクトがなく、プルリクエストをマージできることを示すGitHubのプルリクエスト

マージを選択すると、次のように表示されます。

ダークテーマのGitHubインターフェース。プルリクエストが正常にマージされ、クローズされた状態で、コメント入力欄と「ブランチを削除」ボタンが表示されています。

リポジトリで何が変更されたかを確認するには、GitHubで変更されたファイルを確認します。

ダークテーマのコード差分。上部には折りたたまれたpackage-lock.jsonの大きな差分があり、package.jsonの依存関係のバージョン更新が表示されている

ご覧のとおり、最新の状態を保つためにいくつか更新しました。Snykのダッシュボードに戻り、すべて修正されたか確認しましょう。経営陣にレポートを共有する必要がある場合は、そのメンバーをSnykアカウントに追加し、このようなレポートを共有することをおすすめします。

脆弱性の重要度別合計、ライセンスの問題、経時的な傾向、露出期間、アクティビティ指標を示すセキュリティレポートのダッシュボード

Snykでセキュリティの専門性を高める

開発者向けセキュリティについて詳しく学びたい方は、Snyk Learnをご覧ください。さまざまなプログラミング言語やエコシステムにわたる脆弱性を扱った、インタラクティブなレッスンが豊富にあります。動画で学ぶのがお好きなら、Snyk公式YouTubeチャンネルへどうぞ。セキュリティに関するアドバイスが必要なときは、Snyk Ambassadorsにお気軽にご相談ください。サイバーセキュリティの豊富な知識を持つ、とても親切なメンバーがそろっており、コミュニティは今も成長を続けています。

続きを読む

illustration hero ai
Blog

PHPが重大な未認証RCEの脆弱性2件を修正(CVE-2026-109618、CVE-2026-109619):今すぐアップデート

PHPのリクエスト処理に重大な脆弱性が2件あり、未認証のリモートコード実行につながるおそれがあります。修正版にアップグレードするか、旧バージョンにはベンダー提供のバックポートを適用してください。

blog feature ai lilac
Blog

エージェント型修正で脆弱性バックログをプルリクエストに変える

Evo Remediation Agentがオープンプレビューで利用可能になり、Evo Agentic AppSecに依存関係の自動解決機能が加わりました。AppSecチームは継続的な修正キャンペーンを実施できるようになりました

AI Background min crop
Blog

AIが、あなたが受け入れてきたあらゆるリスクを一気に顕在化させる:AI Security Panel: Unfilteredから得た7つの洞察

AIによって攻撃はより安価かつ高速になり、組織がすでに抱えているリスクが露呈しています。4人のセキュリティリーダーが、機械の速度に対応する防御と迅速な修復が今不可欠である理由を語ります。