GitLab は Fortify を組み合わせてコード監査の自動化を実現します

1. 背景

当事者 A でセキュリティに取り組む学生は、コード監査の仕事をしている場合があります。通常、gitlab からコードを取得し、コード監査ツールを使用してスキャンし、結果を手動で確認する必要があります。

このプロセスで行う必要があることは面倒で、gitlab でトークンを設定する方法、コードを自動的にローカルにプルする方法、バッチ スキャンを実現するために Fortify を呼び出す方法、その他多くの面倒な問題があります。

この記事では、当事者 A のセキュリティ コードのセキュリティ構築を主軸とし、コード監査ツールで gitlab ウェアハウス内のコードを自動的にスキャンする方法を共有します。誰もがテストできる便利な実験環境を提供します。

この記事の実験では、さまざまなコード監査ツール (semgrep、fortify、Murphy、Hippo など) を使用しましたが、このうち、Fortify ソフトウェアは商用の性質を持っているため、この記事ではソフトウェアを提供できません。このソフトウェアを準備してホストの /data/share/fortify ディレクトリに保存します)、テストの完了後、各コード監査ツールの効果の比較を確認できます。

2. 環境を整える

みんなの便宜を図るため、私は実験用 gitlab のアドレスを直接共有し、誰でも最初にこの共有環境を使用できるようにします。

URL:http://123.249.6.139:1880/
用户名:root
密码:qingtingtest
token:glpat-SMsSWy6xzB4x8B6rFryB

gitlab環境を構成する

gitlab ウェアハウスのコードの強化スキャンを実際にシミュレートするには、gitlab ウェアハウスを手早く構築する必要があります。ここで、docker を試す最も簡単な方法は、次のコマンドを実行することです。

docker run --detach --hostname gitlab.thinkpad --publish 8443:443 --publish 880:80 --publish 222:22 --name gitlab --restart always --volume /data/gitlab/config:/etc/gitlab --volume /data/gitlab/logs:/var/log/gitlab --volume /data/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce

コマンドが実行されると、docker は自動的に docker イメージを取得し、gitlab コンテナーを作成します。サービスが開始されると、root ユーザーのパスワードがランダムに生成されます。root ユーザーの初期化パスワードは、次のコマンドで確認できます。

docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

コマンドを実行すると、以下のようにターミナルにパスワードが表示されます。

Password: UnSoOs7l8YN6dYDQRP/1/dzpKswF7dq7fpyhKBey95A=

これで、ブラウザを使用して gitlab ページにアクセスできるようになります。アクセス アドレスは ですhttp://x.x.x.x:880/。次の図に示すように、ブラウザは自動的にログイン ページにジャンプします。

ログイン ページで、ユーザー名として root を入力し、パスワードとして先ほど取得したパスワードを入力します。ログインに成功すると、次の図に示すように、ワークベンチのホームページに自動的にジャンプします。

APIアクセス用のトークンを作成する

Fortify が Gitlab ウェアハウスのコードにアクセスできるようにするには、API アクセス用のトークンを作成する必要があります。アバターの位置でドロップダウン メニューを展開し、[設定] -> [アクセス トークン] を選択し、関連するパラメータを入力すると、インターフェイスは次のようになります。次のように

作成が完了したら、生成されたトークンをコピーします。これは後で使用します。

glpat-ggjo6Z6aQXWCZ2FNJcsz

gitlab のビルド後、デフォルトでは空のプロジェクトが存在し、Fortify では貴重な抜け穴を排除できません。テストを容易にするために、プロジェクトを新しいプロジェクトの場所にインポートし、URL アドレスを開いて選択し、取得
http://10.1.1.140:880/projects/new#import_projectできるファイルにRepository by URL倉庫の住所を入力します。ここでは、下の図に示すように、誰もが実験できるようにファイルを提供します。

https://gitee.com/songboy/QingScan

プロジェクトをインポートした後、以下の図に示すように、gitlab はコードをサーバーに自動的にプルします。

3. 設定パラメータ

gitlab の実験環境が整ったので、正式に実験を開始します まず、Dragonfly のマーケットページを開きます URL アドレスは次のとおりです

http://qingting.starcross.cn/scenario/store

ログインを求めるプロンプトが表示される場合があります。初めて Dragonfly セキュリティ コンソールに入ると、スキャンとログイン後に自動的に登録されます。

次に、シェル コマンドを実行してサーバーにノードを追加する必要があります。次の図に示すように、プロンプトに従ってください。

次に、マーケットページに戻り、クイックマイニングのゼロデイ脆弱性を見つけます。下の図に示すように、下部にボタンがあり、それをワークフローに追加します。

ワークフローに追加すると、ワークフローの情報が表示され、gitlab の構成情報を入力できます。次の図に示すように、クリックしてオーケストレーション プロセスに入る必要があります。

オーケストレーション ワークフロー ページの上部には、グローバル変数を設定するための小さなアイコンがあり、次の図に示すように、プロンプトに従って必要なパラメーターを構成します。

4. プログラムを実行する

グローバル変数を実行した後、最初のノードを右クリックし、実行オプションを再度クリックしてワークフローを実行できます。実行プロセス中にノードのステータスが変化します。

ノードは上から下に実行され、実行プロセス中ステータス アイコンが回転し続けます。実行が完了すると、成功を示す小さなアイコンが表示されます。

操作が完了したら、データセンターにアクセスして操作結果を表示し、ノードとタスク ID に基づいて結果をフィルタリングできます (次の図を参照)。

ノードをスキャンするために Fortify コードを選択しました。フィルタリングされたリスト ページは次のとおりです。

リスト ページにはデータの一部のみが表示されますが、[表示] ボタンをクリックすると、次の図に示すように、監査マーキングの詳細ページで詳細な脆弱性情報を表示できます。

上記のノードのコードは GitHub でオープンソース化されており、必要な小規模パートナーも GitHub で見つけることができます。

https://github.com/StarCrossPortal/QingTing

GitHub アドレス: https://github.com/StarCrossPortal/QingTing

おすすめ

転載: blog.csdn.net/u013431141/article/details/128241049