Quels sont les risques croissants en matière de cybersécurité dans le paysage du développement logiciel moderne qui occupent les RSSI ?
Les développeurs et les équipes de sécurité sont confrontés à un éventail toujours croissant de menaces, allant des attaques sophistiquées de la chaîne d'approvisionnement open source et contrôlées par les fournisseurs aux vulnérabilités introduites par le code généré par l'IA, comme l'injection rapide et la mauvaise sécurité du code par GitHub Copilot. La complexité des applications modernes, qui s'appuient souvent fortement sur des composants open source (tels que ceux que l'on trouve sur npm, PyPI ou RubyGems) et des déploiements conteneurisés, ajoute au défi.
Compte tenu de l’ampleur et de la complexité de ces risques, automatiser la gestion des vulnérabilités est devenu incontournable. Les processus manuels de cybersécurité ne peuvent tout simplement pas suivre le volume et la vitesse des vulnérabilités potentielles et du développement de logiciels. L'automatisation accélère non seulement l'identification et la résolution des problèmes de sécurité, mais garantit également que ces processus, suivis régulièrement par les équipes de sécurité, sont appliqués de manière cohérente à toutes les étapes du cycle de vie du développement logiciel.
Décomposons-les un peu plus... Un autre exemple d'attaque de grande envergure dans la chaîne d'approvisionnement est l'attaque contre Codecov, où les attaquants ont accédé à des données sensibles en exploitant les vulnérabilités d'un outil de couverture de code populaire. La routine d’un développeur comprend la gestion des risques associés aux dépendances open source. Les dépendances open source peuvent introduire des vulnérabilités à la fois directes et transitives dans votre base de code. Des vulnérabilités directes se trouvent dans les bibliothèques que vous incluez explicitement, tandis que des vulnérabilités transitives existent dans les dépendances de ces bibliothèques. La gestion manuelle de ces risques est intimidante, ce qui fait de l'automatisation un élément essentiel d'une stratégie de sécurité robuste.
Avec GenAI, les assistants de code IA comme GitHub Copilot ou ChatGPT introduisent des vulnérabilités réelles et potentielles. GenAI peut introduire par inadvertance des pratiques de codage non sécurisées ou ne pas reconnaître les exigences de sécurité spécifiques au contexte. Par exemple, un modèle d’IA peut générer du code vulnérable aux attaques par injection SQL ou par cross-site scripting (XSS). La surveillance et la sécurisation du code généré par l’IA sont donc cruciales pour maintenir la sécurité des applications.
La complexité de suivre les nouvelles vulnérabilités des conteneurs n’échappe pas non plus aux équipes de sécurité. Le rythme rapide des nouvelles vulnérabilités des conteneurs peut être accablant. Chaque nouvelle vulnérabilité nécessite une identification et une correction rapides pour prévenir les exploits potentiels. Cette complexité nécessite des solutions automatisées dotées d'une expertise en sécurité pour gérer efficacement la sécurité des conteneurs.
Les vulnérabilités des conteneurs peuvent avoir un impact significatif sur la sécurité globale de vos applications. Une seule image de conteneur vulnérable peut compromettre l’ensemble de la pile d’applications. Des outils tels que Snyk Container automatisent le processus d'identification et de correction des vulnérabilités dans les images de conteneurs. Snyk Container peut suggérer de nouvelles balises d'image de base qui minimisent le nombre de vulnérabilités et automatisent les demandes d'extraction pour mettre à jour vos référentiels de code.
Comment pouvons-nous atténuer toutes ces menaces de cybersécurité AppSec ?
AI が生成したコードに関連するリスクを軽減するには、Snyk Code などのツールの使用を検討してください。 Snyk DeepCode AI を活用したこの高速 SAST ツールは、プラグインを通じて開発者の IDE に直接統合できます。セキュリティ固有のデータ トレーニングを使用して脆弱で安全でないコードを認識し、開発の早い段階で問題を特定して対処します。
Snyk DeepCode AI を使い始めるのは簡単です。このプラグインは、Visual Studio Code、IntelliJ IDEA、VS Code、PyCharm などの一般的な IDE をサポートします。
インストールすると、サイドバーの Snyk ロゴに、オープンソースの依存関係、独自のコード (または GenAI で生成されたコード)、および IaC の問題で見つかった脆弱性とセキュリティの問題が表示されます。
GenAI によって導入された脆弱性を軽減する例を見てみましょう。このプロジェクトでは GitHub Copilot を使用して、OpenAI API をクエリする Express POST エンドポイント ルートを作成するコードをオートコンプリートし、res.send() を使用してブラウザに応答を送信しました。
しかし、このペイロード内の応答がブラウザーで直接レンダリングされたらどうなるでしょうか?このリクエストの送信にデフォルトの text/html コンテンツ タイプ ヘッダーが使用された場合、クロスサイト スクリプティングの脆弱性が実行中のアプリケーションに影響を与える可能性があります。これについて私たちは何ができるでしょうか?
31 行目上の注釈でわかるように、Snyk はこのセキュリティ問題を修正することを提案しています。それをクリックすると、数秒以内に、Snyk DeepCode AI 拡張機能が、次のように res.send() を res.json に置き換える軽減策を提案しました。
res.json(response.choices[0].message.content);
この変更により、Express アプリケーションは応答の content-type を強制的に application/json にすることになります。これは汎用テキストであり、alert() などのテキストを許可できます。
IDE で Snyk を活用することで、開発者は基盤となる Snyk DeepCode AI エンジンを使用して脆弱性を積極的に特定して軽減し、最初からコードの安全性を確保できます。アプリケーション セキュリティに対するこの積極的なアプローチは、オープンソースのサプライ チェーンと GenAI が生成したコードに関連するリスクが常に存在する今日の環境では不可欠です。
Snyk Open Source は、開発者とセキュリティ チームがオープンソースの依存関係に関連するリスクを管理できるように設計された強力なツールです。オープンソース ライブラリへの依存が高まるにつれ、堅牢で自動化された依存関係管理の必要性がかつてないほど重要になっています。 Snyk オープンソースは、包括的な脆弱性スキャンおよび修復機能を提供し、プロジェクトの安全性と準拠性を確保します。
以前の Node.js アプリケーションでは SQLite 依存関係も使用しており、Snyk は次のようにセキュリティ上の問題を警告します。
This vulnerability information is helpful to understand which transitive dependency is introducing the security risk and how to mitigate it, if at all possible. In this case, the transitive dependency inflight is detected to have a medium vulnerability.
Snyk detects that my lockfile and dependency is potentially out of date and so it can’t find a remediation path. However, let’s see the automation in practice when we import the GitHub code repository to Snyk. Doing so, shows the following information on the Snyk application:
From this point on, Snyk will automatically open new Pull Requests to suggest dependency upgrades when security vulnerabilities are detected in my package manifest.
Managing dependencies is not just about the libraries you directly include in your project. Transitive dependencies—those pulled in by your direct dependencies—can also introduce vulnerabilities. Snyk excels at identifying and remediating vulnerabilities in both direct and transitive dependencies.
Consider the following scenario:
{ "dependencies": { "express": "^4.17.1", "lodash": "^4.17.20" } }
In this example, express and lodash are direct dependencies. However, express might have its own set of dependencies, which in turn might have their own dependencies. Snyk will traverse this entire dependency tree, identifying and addressing vulnerabilities at every level.
When it comes to managing container vulnerabilities, Snyk Container helps remove the burden of keeping base image tags up-to-date with security patches.
Snyk Container is a comprehensive solution designed to help developers and security teams manage container vulnerabilities effectively. Containerized application workloads is prevalent at the Enterprise and as is the need to secure these environments. Snyk Container integrates seamlessly into your CI/CD pipeline, providing continuous monitoring and proactive remediation of vulnerabilities in your container images.
One of the standout features of Snyk Container is its ability to automate the creation of Pull Requests to address vulnerabilities in your container images. This automation is a game-changer for both developers and security teams, as it significantly reduces the manual effort required to keep container images secure.
Here's an example of how Snyk Container might automate a PR to update a vulnerable package in a Dockerfile:
FROM node:14.1.0 RUN npm install express COPY . /app CMD ["node", "/app/index.js"]
When Snyk Container detects a vulnerability, it automatically generates a PR with the necessary changes to mitigate the issue. This could include updating a vulnerable package or applying a security patch. By automating this process, Snyk Container ensures that vulnerabilities are addressed promptly, reducing the window of exposure.
By following these recommended base images, you can significantly reduce the number of vulnerabilities in your container images, enhancing the overall security of your applications.
Snyk Container identified multiple vulnerabilities in this base image and automatically generated PRs to update the image and associated dependencies. The team was able to review and merge these PRs quickly, reducing their vulnerability count by over 30% within seconds by merging the Pull Request and ensuring the CI/CD pipeline tests pass with flying colors.
This proactive approach not only improved the security posture of their applications but also freed up valuable time for developers to focus on building new features rather than managing vulnerabilities.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!