はじめに
この記事はQiita Engineer Festa 2022への参加記事です。
Snykの脆弱性診断機能を用いて、OSSプロジェクトを診断してみます。
診断対象として、PostgreSQLの監査ログ拡張機能pgAuditを選びます。
自分がコントリビュートしたpgaudit.log_rows機能も含まれており、
脆弱性が検知された場合、他人事にできないので少しドキドキ。。。
Snyk(スニーク)とは
- 安全で迅速な開発を支援する、デベロッパーファーストのセキュリティプラットフォーム
- コードの依存OSSやコンテナ/IaC(Infrastructure as Code)の脆弱性を見つけ、優先順位をつけ自動修正
- Gitや統合開発環境(IDE)、CI/CDパイプラインに直接組み込めるため、簡単に使用可能
※ 引用元: https://go.snyk.io/jp.html
pgAuditとは
- PostgreSQLで監査ログを取得するためのオープンソースソフトウェア
- PostgreSQLの拡張機能として、C言語で実装されている
- 監査対象として設定した内容は、PostgreSQLログに混在して出力される
- GitHubのpgauditリポジトリ
Snykにサインアップ
-
Snyk Webサイトの画面右上から
Sign up
pgAuditはC言語で書かれているが、脆弱性診断可能か?
Snyk CLIをインストール
- VS Codeのターミナルなどで、npmを用いてインストール
C:\snyk>npm install snyk@latest -g
- Snykバージョンを確認
C:\snyk>snyk --version
1.958.0
- Snykアカウントを用いて、Snyk CLIを認証
C:\snyk>snyk auth
Now redirecting you to our auth page, go ahead and log in,
and once the auth is complete, return to this prompt and you'll
be ready to start using snyk.
Your account has been authenticated. Snyk is now ready to be used.
cloneしたpgauditリポジトリに対し、snyk monitor
を実行
- pgauditリポジトリをclone
C:\snyk>git clone git@github.com:pgaudit/pgaudit.git
C:\snyk>cd pgaudit
- pgauditをSnykに登録し、脆弱性(及びライセンス問題)を継続的に監視
C:\snyk\pgaudit>snyk monitor --unmanaged
Monitoring C:\snyk\pgaudit (pgaudit)...
Explore this snapshot at https://app.snyk.io/org/mingchun.zhao/project/80b2c854-a408-4abc-b07c-9ee56f614aee/history/03fc148f-5176-42ef-b83a-e758b682ae14
Notifications about newly disclosed issues related to these dependencies will be emailed to you.
Snykの脆弱性DB(Vulnerability DB)
安心したのも束の間、
Snykの脆弱性DBに、Linux centos8 pgaudit package
の
pgaudit vulnerabilitiesが存在していました。
SQL Injectionの脆弱性もちらほら、どういうこと? 確認しなくちゃ。。。
おわりに
Snykを使って、OSSのpgAuditに対し、脆弱性診断を行ってみました。
Snykが、pgAuditの脆弱性DBを管理していることに、少し驚きました。