diff --git a/.github/workflows/shiftleft.yml b/.github/workflows/shiftleft.yml new file mode 100644 index 00000000..d9f9f7d7 --- /dev/null +++ b/.github/workflows/shiftleft.yml @@ -0,0 +1,48 @@ +--- +# This workflow integrates ShiftLeft NG SAST with GitHub +# Visit https://docs.shiftleft.io for help +name: ShiftLeft + +on: + pull_request: + workflow_dispatch: + +jobs: + NextGen-Static-Analysis: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - name: Download ShiftLeft CLI + run: | + curl https://cdn.shiftleft.io/download/sl > ${GITHUB_WORKSPACE}/sl && chmod a+rx ${GITHUB_WORKSPACE}/sl + - name: Extract branch name + shell: bash + run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" + id: extract_branch + - name: NextGen Static Analysis + run: ${GITHUB_WORKSPACE}/sl analyze --wait --app theHarvester --tag branch=${{ github.head_ref || steps.extract_branch.outputs.branch }} --python $(pwd) + env: + SHIFTLEFT_ACCESS_TOKEN: ${{ secrets.SHIFTLEFT_ACCESS_TOKEN }} + + + ## Uncomment the following section to enable build rule checking and enforcing. + #Build-Rules: + #runs-on: ubuntu-latest + #needs: NextGen-Static-Analysis + #steps: + #- uses: actions/checkout@v2 + #- name: Download ShiftLeft CLI + # run: | + # curl https://cdn.shiftleft.io/download/sl > ${GITHUB_WORKSPACE}/sl && chmod a+rx ${GITHUB_WORKSPACE}/sl + #- name: Validate Build Rules + # run: ${GITHUB_WORKSPACE}/sl check-analysis --app theHarvester \ + # --source 'tag.branch=${{ github.event.pull_request.base.ref }}' \ + # --target "tag.branch=${{ github.head_ref || steps.extract_branch.outputs.branch }}" \ + # --report \ + # --github-pr-number=${{github.event.number}} \ + # --github-pr-user=${{ github.repository_owner }} \ + # --github-pr-repo=${{ github.event.repository.name }} \ + # --github-token=${{ secrets.GITHUB_TOKEN }} + # env: + #SHIFTLEFT_ACCESS_TOKEN: ${{ secrets.SHIFTLEFT_ACCESS_TOKEN }} + \ No newline at end of file diff --git a/Pipfile b/Pipfile index 480f9ea1..eaa30621 100644 --- a/Pipfile +++ b/Pipfile @@ -7,7 +7,7 @@ name = "pypi" aiodns = "==2.0.0" aiohttp = "==3.7.2" aiomultiprocess = "==0.8.0" -aiosqlite = "==0.15.0" +aiosqlite = "==0.16.0" beautifulsoup4 = "==4.9.3" censys = "==1.0.0" dnspython = "==2.0.0" @@ -15,13 +15,13 @@ netaddr = "==0.8.0" plotly = "==4.12.0" pyppeteer = "==0.2.2" PyYAML = "==5.3.1" -requests = "==2.24.0" +requests = "==2.25.0" retrying = "==1.3.3" shodan = "==1.24.0" texttable = "==1.6.3" lxml = "==4.6.1" uvloop = "==0.14.0" -certifi = "==2020.6.20" +certifi = "==2020.11.8" [dev-packages] flake8 = "==3.8.4" diff --git a/Pipfile.lock b/Pipfile.lock index 5b24c122..4f7f8c1c 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "96935affedf67cd239feca78abc158937a5c89c2d06ef43dc4baa3632a04ba01" + "sha256": "bcf5370b0e3ef833e35ec1e7b06658e48ebf4348bf9f81832154b90df92c03b7" }, "pipfile-spec": 6, "requires": {}, @@ -70,11 +70,11 @@ }, "aiosqlite": { "hashes": [ - "sha256:19b984b6702aed9f1c85c023f37296954547fc4030dae8e9d027b2a930bed78b", - "sha256:a2884793f4dc8f2798d90e1dfecb2b56a6d479cf039f7ec52356a7fd5f3bdc57" + "sha256:0e5b8465b0b6aa7f2b0a1fa7f3af53216fcea1947f524b658bd4b4696e72f1b7", + "sha256:d014ef07fbc523b2d195fc17cf35982285e3220eb73c1068d5df37b569950ea8" ], "index": "pypi", - "version": "==0.15.0" + "version": "==0.16.0" }, "appdirs": { "hashes": [ @@ -92,10 +92,10 @@ }, "attrs": { "hashes": [ - "sha256:26b54ddbbb9ee1d34d5d3668dd37d6cf74990ab23c828c2888dccdceee395594", - "sha256:fce7fc47dfc976152e82d53ff92fa0407700c21acd20886a13777a0d20e655dc" + "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", + "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" ], - "version": "==20.2.0" + "version": "==20.3.0" }, "beautifulsoup4": { "hashes": [ @@ -108,11 +108,11 @@ }, "certifi": { "hashes": [ - "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3", - "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41" + "sha256:1f422849db327d534e3d0c5f02a263458c3955ec0aae4ff09b95f195c59f4edd", + "sha256:f05def092c44fbf25834a51509ef6e631dc19765ab8a57b4e7ab85531f0a9cf4" ], "index": "pypi", - "version": "==2020.6.20" + "version": "==2020.11.8" }, "cffi": { "hashes": [ @@ -200,6 +200,7 @@ }, "lxml": { "hashes": [ + "sha256:098fb713b31050463751dcc694878e1d39f316b86366fb9fe3fbbe5396ac9fab", "sha256:0e89f5d422988c65e6936e4ec0fe54d6f73f3128c80eb7ecc3b87f595523607b", "sha256:189ad47203e846a7a4951c17694d845b6ade7917c47c64b29b86526eefc3adf5", "sha256:1d87936cb5801c557f3e981c9c193861264c01209cb3ad0964a16310ca1b3301", @@ -369,11 +370,11 @@ }, "requests": { "hashes": [ - "sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b", - "sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898" + "sha256:7f1a0b932f4a60a1a65caa4263921bb7d9ee911957e0ae4a23a6dd08185ad5f8", + "sha256:e786fa28d8c9154e6a4de5d46a1d921b8749f8b74e28bde23768e5e16eece998" ], "index": "pypi", - "version": "==2.24.0" + "version": "==2.25.0" }, "retrying": { "hashes": [ @@ -429,10 +430,10 @@ }, "urllib3": { "hashes": [ - "sha256:8d7eaa5a82a1cac232164990f04874c594c9453ec55eef02eab885aa02fc17a2", - "sha256:f5321fbe4bf3fefa0efd0bfe7fb14e90909eb62a48ccda331726b4319897dd5e" + "sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08", + "sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473" ], - "version": "==1.25.11" + "version": "==1.26.2" }, "uvloop": { "hashes": [ @@ -525,10 +526,10 @@ "develop": { "attrs": { "hashes": [ - "sha256:26b54ddbbb9ee1d34d5d3668dd37d6cf74990ab23c828c2888dccdceee395594", - "sha256:fce7fc47dfc976152e82d53ff92fa0407700c21acd20886a13777a0d20e655dc" + "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6", + "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" ], - "version": "==20.2.0" + "version": "==20.3.0" }, "flake8": { "hashes": [ @@ -648,10 +649,10 @@ }, "toml": { "hashes": [ - "sha256:926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f", - "sha256:bda89d5935c2eac546d648028b9901107a595863cb36bae0c73ac804a9b4ce88" + "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", + "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" ], - "version": "==0.10.1" + "version": "==0.10.2" }, "typed-ast": { "hashes": [ diff --git a/requirements/base.txt b/requirements/base.txt index ced404da..befa021e 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,16 +1,16 @@ aiodns==2.0.0 aiohttp==3.7.2 aiomultiprocess==0.8.0 -aiosqlite==0.15.0 +aiosqlite==0.16.0 beautifulsoup4==4.9.3 censys==1.0.0 -certifi==2020.6.20 +certifi==2020.11.8 dnspython==2.0.0 netaddr==0.8.0 plotly==4.12.0 pyppeteer==0.2.2 PyYAML==5.3.1 -requests==2.24.0 +requests==2.25.0 retrying==1.3.3 shodan==1.24.0 texttable==1.6.3