Synack

Import Synack Vulns

The purpose of this example is to import vulnerabilities from Synackarrow-up-right on a time-based schedule.

This example Flow can be downloaded from our Flows GitHub Repositoryarrow-up-right and imported into your AttackForge.

Initial Set Up

  • Type: Schedule

  • Cron String: Recommend at start of day, every 24-hours (0 9 * * *)

  • Secrets:

    • af_auth - your AttackForge API key

    • af_synack_asset_library_key - if assets module is enabled, specify the library where Synack assets will be created. This key can be extracted from the Assets module by navigating to the relevant library.

    • af_synack_project_custom_field_key - custom field key used to determine if an AF project is a Synack project. Used for correlating Synack vulns through Listing Codename -> Project Code.

    • af_synack_project_custom_field_type - custom field type used to determine if an AF project is a Synack project. Must be "multi-select" or "select" depending on your custom field configuration. Used for correlating Synack vulns through Listing Codename -> Project Code.

    • af_synack_project_custom_field_value - custom field value used to determine if an AF project is a Synack project. Used for correlating Synack vulns through Listing Codename -> Project Code.

    • af_synack_writeups_library_key - specify the Writeups library where Synack vulns will be created. This key can be extracted from the Writeups module by navigating to the relevant library.

    • af_tenant - your AF tenant hostname e.g. "demo.attackforge.com"

    • skip_updating_synack_status - set to "yes" to skip updating Synack vulns to "Ticketed" status

    • synack_fetch_changes_from_in_days - the number of days (in the past) to fetch vulnerabilities e.g. set to "1" for fetching new/updated Synack vulns in past 24-hours. Should match your Flow Cron String.

    • synack_tenant - for prod use "api.synack.com". For non-prod - seek guidance from your Synack account manager.

    • synack_token - the API token created in Synack. E.g. "Bearer BLJZ_clib-mzHkBKwauhiQkma...."

    • synack_vuln_acknowledged_status_id - the id for the Synack vuln status for new vulnerabilities. For example, the id for the "Pending Review" status in prod could be "4024". Check this with your Synack account manager.

    • synack_vuln_acknowledged_status_name - the name for the Synack vuln status for new vulnerabilities. E.g. "Pending Review". Check this with your Synack account manager.

    • synack_vuln_identified_status_id - the id for the Synack vuln status for Ticketed vulnerabilities. For example, the id for the "Ticketed" status in prod could be "4025". Check this with your Synack account manager.

Action 1 - Get Synack Vulns

  • Method: GET

  • URL: https://{{synack-tenant}}/v1/vulnerabilities?filter[status_id][]={{synack_vuln_identified_status_id}}&page[size]=5&page[number]={page}&filter[updated_since]={isoDate}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = Authorization; Type = Secret; Value = synack_token

  • Request Script:

  • Response Script:

Action 2 - Get Synack AF Projects

  • Method: GET

  • URL: https://{{af-tenant}}/api/ss/projects?skip={skip}&limit=50&q={<CUSTOM-QUERY>}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = af_auth

  • Request Script:

  • Response Script:

Action 3 - Get Pending AF Synack Vulns

  • Method: GET

  • URL: https://{{af-tenant}}/api/ss/vulnerabilities?pendingVulnerabilities=true&skip={skip}&limit=50&q_vulnerability={<CUSTOM-QUERY>}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = af_auth

  • Request Script:

  • Response Script:

Action 4 - Get Visible AF Synack Vulns

  • Method: GET

  • URL: https://{{af-tenant}}/api/ss/vulnerabilities?skip={skip}&limit=50&q_vulnerability={<CUSTOM-QUERY>}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = af_auth

  • Request Script:

  • Response Script:

Action 5 - Convert Markdown to Rich Text for Update Vulns

  • Method: POST

  • URL: https://{{af-tenant}}/api/ss/utils/markdown-to-richtext

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = af_auth

  • Request Script:

  • Response Script:

Action 6 - Update AF Vulnerabilities

  • Method: PUT

  • URL: https://{{af-tenant}}/api/ss/vulnerability/{id}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = af_auth

  • Request Script:

  • Response Script:

Action 7 - Convert Markdown to Rich Text for Create Vulns

  • Method: POST

  • URL: https://{{af-tenant}}/api/ss/utils/markdown-to-richtext

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = af_auth

  • Request Script:

  • Response Script:

Action 8 - Create AF Vulnerabilities

  • Method: POST

  • URL: https://{{af-tenant}}/api/ss/vulnerabilities

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = af_auth

  • Request Script:

  • Response Script:

Action 9 - Update Synack Vulns to Ticketed Status

  • Method: PUT

  • URL: https://{{synack-tenant}}/v1/vulnerabilities/{id}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = Authorization; Type = Secret; Value = synack_token

  • Request Script:

  • Response Script:

Action 10 - Update AF Vulns to Ticketed Status

  • Method: PUT

  • URL: https://{{af-tenant}}/api/ss/vulnerability/{id}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = af_auth

  • Request Script:

  • Response Script:

Update Synack when Vuln is Ready for Retest

The purpose of this example is to update a vulnerability in Synackarrow-up-right when a vulnerability is marked as Ready for Retest in AF.

This example Flow can be downloaded from our Flows GitHub Repositoryarrow-up-right and imported into your AttackForge.

Initial Set Up

  • Type: Event - vulnerability-updated

  • Secrets:

    • af_auth - your AttackForge API key

    • af_tenant - your AF tenant hostname e.g. "demo.attackforge.com"

    • synack_tenant - for prod use "api.synack.com". For non-prod - seek guidance from your Synack account manager.

    • synack_token - the API token created in Synack. E.g. "Bearer BLJZ_clib-mzHkBKwauhiQkma...."

Action 1 - Update Synack Vuln to Retest Status

  • Method: POST

  • URL: https://{{synack-tenant}}/v1/vulnerabilities/{id}/patch_verifications

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = Authorization; Type = Secret; Value = synack_token

  • Request Script:

  • Response Script:

Action 2 - Update AF Vuln with Synack Retest Status

  • Method: PUT

  • URL: https://{{af-tenant}}/api/ss/vulnerability/{id}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = af_auth

  • Request Script:

  • Response Script:

Close Vuln in AF when Synack Vuln is Fixed

The purpose of this example is to close a vulnerability in AF when its fixed in Synackarrow-up-right.

This example Flow can be downloaded from our Flows GitHub Repositoryarrow-up-right and imported into your AttackForge.

Initial Set Up

  • Type: Schedule

  • Cron String: Recommend at start of day, every 24-hours (15 9 * * *)

  • Secrets:

    • af_auth - your AttackForge API key

    • af_tenant - your AF tenant hostname e.g. "demo.attackforge.com"

    • synack_tenant - for prod use "api.synack.com". For non-prod - seek guidance from your Synack account manager.

    • synack_token - the API token created in Synack. E.g. "Bearer BLJZ_clib-mzHkBKwauhiQkma...."

    • synack_fetch_changes_from_in_days - the number of days (in the past) to fetch vulnerabilities e.g. set to "1" for fetching updated Synack vulns in past 24-hours. Should match your Flow Cron String.

Action 1 - Get Synack Vulns

  • Method: GET

  • URL: https://{{synack-tenant}}/v1/vulnerabilities?page[size]=5&page[number]={page}&filter[updated_since]={isoDate}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = Authorization; Type = Secret; Value = synack_token

  • Request Script:

  • Response Script:

Action 2 - Get Synack Patch Verified Vulns

  • Method: GET

  • URL: https://{{synack-tenant}}/v1/vulnerabilities/{id}/patch_verifications

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = Authorization; Type = Secret; Value = synack_token

  • Request Script:

  • Response Script:

Action 3 - Get Pending AF Synack Vulns

  • Method: GET

  • URL: https://{{af-tenant}}/api/ss/vulnerabilities?pendingVulnerabilities=true&skip={skip}&limit=50&q_vulnerability={<CUSTOM-QUERY>}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = af_auth

  • Request Script:

  • Response Script:

Action 4 - Get Visible AF Synack Vulns

  • Method: GET

  • URL: https://{{af-tenant}}/api/ss/vulnerabilities?skip={skip}&limit=50&q_vulnerability={<CUSTOM-QUERY>}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = af_auth

  • Request Script:

  • Response Script:

Action 5 - Close AF Vulns

  • Method: PUT

  • URL: https://{{af-tenant}}/api/ss/vulnerability/{id}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = af_auth

  • Request Script:

  • Response Script:

Get Latest Synack Vuln Comments

The purpose of this example is to fetch vulnerability comments in Synackarrow-up-right and create remediation notes in AF.

This example Flow can be downloaded from our Flows GitHub Repositoryarrow-up-right and imported into your AttackForge.

Initial Set Up

  • Type: Schedule

  • Cron String: Recommend at start of day, every 24-hours (30 9 * * *)

  • Secrets:

    • af_auth - your AttackForge API key

    • af_tenant - your AF tenant hostname e.g. "demo.attackforge.com"

    • synack_tenant - for prod use "api.synack.com". For non-prod - seek guidance from your Synack account manager.

    • synack_token - the API token created in Synack. E.g. "Bearer BLJZ_clib-mzHkBKwauhiQkma...."

Action 1 - Get Pending AF Synack Vulns

  • Method: GET

  • URL: https://{{af-tenant}}/api/ss/vulnerabilities?pendingVulnerabilities=true&skip={skip}&limit=50&q_vulnerability={<CUSTOM-QUERY>}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = af_auth

  • Request Script:

  • Response Script:

Action 2 - Get Visible AF Synack Vulns

  • Method: GET

  • URL: https://{{af-tenant}}/api/ss/vulnerabilities?skip={skip}&limit=50&q_vulnerability={<CUSTOM-QUERY>}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = af_auth

  • Request Script:

  • Response Script:

Action 3 - Get Synack Vuln Comments

  • Method: GET

  • URL: https://{{synack-tenant}}/v1/vulnerabilities/{id}/comments

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = Authorization; Type = Secret; Value = synack_token

  • Request Script:

  • Response Script:

Action 4 - Convert Markdown to Rich Text for Comments

  • Method: POST

  • URL: https://{{af-tenant}}/api/ss/utils/markdown-to-richtext

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = af_auth

  • Request Script:

  • Response Script:

Action 5 - Create Remediation Notes

  • Method: POST

  • URL: https://{{af-tenant}}/api/ss/vulnerability/{id}/remediationNote

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = af_auth

  • Request Script:

  • Response Script:

Last updated