Repository: tenable/terrascan (language: python)

Issue:
Malformed output after a parsing error
* terrascan version: I tried 1.14.0 and 1.15.2, both have the issue
* Operating System: Windows 11

### Description

When analyzing a template with a syntax issue the tool outputs an error on top of the SARIF file instead of using the toolNotifications object, resulting in a malformed JSON file

The templated had this object:

```
"DBSecurityGroup": {
      "Type": "AWS::RDS::DBSecurityGroup",
      "Condition" : "Is-EC2-Classic",
      "Properties": {
        "DBSecurityGroupIngress": {
          "EC2SecurityGroupName": { "Ref": "InstanceSecurityGroup" }
        },
        "GroupDescription": "database access"
      }
    }
```

instead of:

```
"DBSecurityGroup": {
      "Type": "AWS::RDS::DBSecurityGroup",
      "Condition" : "Is-EC2-Classic",
      "Properties": {
        "DBSecurityGroupIngress": [{
          "EC2SecurityGroupName": { "Ref": "InstanceSecurityGroup" }
        }],
        "GroupDescription": "database access"
      }
    }
```

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-security-group.html

### What I Did

The command I used to run the tool was:
```
.\terrascan.exe scan -f "<file path>" -i cft -o sarif
```

The error outputted on top of the SARIF file was:

```
ERROR: json: cannot unmarshal object into Go struct field Properties.Properties.DBSecurityGroupIngress of type []rds.DBSecurityGroup_Ingress
```



Discussion / hints:
This was fixed and released in the latest version of awslabs/goformation

Is there a reason why Terrascan is still using v5 instead of v6?

I started to work on an update but it's taking me longer than expected, I'm not familiar with Go or Terrascan https://github.com/tenable/terrascan/compare/master...VeraBE:terrascan:updateGoFormation

Fix patch:
diff --git a/.github/workflows/gobuild.yml b/.github/workflows/gobuild.yml
index 9eb1d515a..80f79814e 100644
--- a/.github/workflows/gobuild.yml
+++ b/.github/workflows/gobuild.yml
@@ -11,48 +11,48 @@ jobs:
       GO111MODULE: on
       GOPATH: /home/runner/work/terrascan
       GOBIN: /home/runner/work/terrascan/bin
-      GO_VERSION: 1.17
+      GO_VERSION: 1.19
       AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID_TEST }}
       AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY_TEST }}
       AWS_REGION: ${{ secrets.AWS_REGION_TEST }}
-      AZURE_AUTH_TEST_SECRET:  ${{ secrets.AZURE_AUTH_TEST_KEY }}
-      GOOGLE_APPLICATION_CREDENTIALS_TEST_SECRET:  ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS_TEST_KEY }}
+      AZURE_AUTH_TEST_SECRET: ${{ secrets.AZURE_AUTH_TEST_KEY }}
+      GOOGLE_APPLICATION_CREDENTIALS_TEST_SECRET: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS_TEST_KEY }}
     steps:
-    - name: Checkout Terrascan
-      uses: actions/checkout@v2
+      - name: Checkout Terrascan
+        uses: actions/checkout@v2
 
-    - name: Setup Go
-      uses: actions/setup-go@v1
-      with:
-        go-version: ${{ env.GO_VERSION }}
+      - name: Setup Go
+        uses: actions/setup-go@v1
+        with:
+          go-version: ${{ env.GO_VERSION }}
 
-    - name: Install golint
-      run: go get -u golang.org/x/lint/golint
+      - name: Install golint
+        run: go install golang.org/x/lint/golint@latest
 
-    - name: Build Terrascan docker image
-      run: make docker-build
+      - name: Build Terrascan docker image
+        run: make docker-build
 
-    - name: Go validations
-      run: make validate
+      - name: Go validations
+        run: make validate
 
-    - name: Build Terrascan
-      run: make build
+      - name: Build Terrascan
+        run: make build
 
-    - name: Run unit tests
-      run: make unit-tests
+      - name: Run unit tests
+        run: make unit-tests
 
-    - name: install kind
-      run: make install-kind
+      - name: install kind
+        run: make install-kind
 
-    - name: Run e2e tests
-      run: make e2e-tests
+      - name: Run e2e tests
+        run: make e2e-tests
 
-    - name: Run e2e vulnerability tests
-      if: ${{  (github.event_name == 'push'|| github.event_name == 'schedule') && github.actor != 'dependabot[bot]' }}
-      run: make e2e-vulnerability-tests
+      - name: Run e2e vulnerability tests
+        if: ${{  (github.event_name == 'push'|| github.event_name == 'schedule') && github.actor != 'dependabot[bot]' }}
+        run: make e2e-vulnerability-tests
 
-    - name: Upload coverage to Codecov
-      uses: codecov/codecov-action@v1
+      - name: Upload coverage to Codecov
+        uses: codecov/codecov-action@v1
 
   # push image to Docker Hub
   push:
@@ -63,19 +63,19 @@ jobs:
     if: github.event_name == 'push'
 
     steps:
-    - name: Checkout Terrascan
-      uses: actions/checkout@v2
-
-    - name: Build Terrascan docker image
-      run: make docker-build
-
-    - name: Login to Docker Hub
-      uses: docker/login-action@v2
-      if: ${{ github.ref == 'refs/heads/master' }}
-      with:
-        username: ${{ secrets.DOCKERHUB_USERNAME }}
-        password: ${{ secrets.DOCKERHUB_TOKEN }}
-
-    - name: Push Terrascan latest docker image
-      if: ${{ github.ref == 'refs/heads/master' }}
-      run: make docker-push-latest
+      - name: Checkout Terrascan
+        uses: actions/checkout@v2
+
+      - name: Build Terrascan docker image
+        run: make docker-build
+
+      - name: Login to Docker Hub
+        uses: docker/login-action@v2
+        if: ${{ github.ref == 'refs/heads/master' }}
+        with:
+          username: ${{ secrets.DOCKERHUB_USERNAME }}
+          password: ${{ secrets.DOCKERHUB_TOKEN }}
+
+      - name: Push Terrascan latest docker image
+        if: ${{ github.ref == 'refs/heads/master' }}
+        run: make docker-push-latest
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 9946fd704..edea94b46 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -3,27 +3,24 @@ name: release
 on:
   push:
     tags:
-      - '*'
+      - "*"
 
 jobs:
   release:
     runs-on: ubuntu-latest
     env:
       GO111MODULE: on
-      GO_VERSION: 1.17
+      GO_VERSION: 1.19
     steps:
-      -
-        name: Checkout
+      - name: Checkout
         uses: actions/checkout@v2
         with:
           fetch-depth: 0
-      -
-        name: Set up Go
+      - name: Set up Go
         uses: actions/setup-go@v2
         with:
           go-version: ${{ env.GO_VERSION }}
-      -
-        name: Run GoReleaser
+      - name: Run GoReleaser
         uses: goreleaser/goreleaser-action@v2
         with:
           version: latest
@@ -36,23 +33,23 @@ jobs:
     runs-on: ubuntu-latest
 
     steps:
-    - name: Checkout Terrascan
-      uses: actions/checkout@v2
+      - name: Checkout Terrascan
+        uses: actions/checkout@v2
 
-    - name: Build Terrascan docker image
-      run: make docker-build
+      - name: Build Terrascan docker image
+        run: make docker-build
 
-    - name: Login to Docker Hub
-      uses: docker/login-action@v2
-      with:
-        username: ${{ secrets.DOCKERHUB_USERNAME }}
-        password: ${{ secrets.DOCKERHUB_TOKEN }}
+      - name: Login to Docker Hub
+        uses: docker/login-action@v2
+        with:
+          username: ${{ secrets.DOCKERHUB_USERNAME }}
+          password: ${{ secrets.DOCKERHUB_TOKEN }}
 
-    - name: Push Terrascan latest tag docker image
-      run: make docker-push-latest-tag
+      - name: Push Terrascan latest tag docker image
+        run: make docker-push-latest-tag
 
-    - name: Build terrascan_atlantis docker image
-      run: make atlantis-docker-build
+      - name: Build terrascan_atlantis docker image
+        run: make atlantis-docker-build
 
-    - name: Push terrascan_atlantis latest tag docker image
-      run: make atlantis-docker-push-latest-tag
+      - name: Push terrascan_atlantis latest tag docker image
+        run: make atlantis-docker-push-latest-tag
diff --git a/README.md b/README.md
index bca7496f4..bee13de73 100644
--- a/README.md
+++ b/README.md
@@ -194,7 +194,7 @@ Terrascan's default output is a list of violations present in the scanned IaC. A
 ![Screenshot 2021-01-19 at 10 52 47 PM](https://user-images.githubusercontent.com/74685902/105115731-32d2ff80-5a7e-11eb-93b0-2f0620eb1295.png)
 
 ## Building Terrascan
-Terrascan can be built locally. This is helpful if you want to be on the latest version or when developing Terrascan. [gcc](https://gcc.gnu.org/install/) and [Go](https://go.dev/doc/install) 1.17 or above are required.
+Terrascan can be built locally. This is helpful if you want to be on the latest version or when developing Terrascan. [gcc](https://gcc.gnu.org/install/) and [Go](https://go.dev/doc/install) 1.19 or above are required.
 
 ```sh
 $ git clone git@github.com:tenable/terrascan.git
diff --git a/go.mod b/go.mod
index 7494c338e..ae79891e1 100644
--- a/go.mod
+++ b/go.mod
@@ -1,6 +1,6 @@
 module github.com/tenable/terrascan
 
-go 1.17
+go 1.19
 
 replace (
 	github.com/tencentcloud/tencentcloud-sdk-go v3.0.82+incompatible => github.com/tencentcloud/tencentcloud-sdk-go v1.0.191
@@ -22,7 +22,6 @@ require (
 	github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.3.2
 	github.com/aws/aws-sdk-go-v2/service/s3 v1.11.1
 	github.com/aws/smithy-go v1.6.0
-	github.com/awslabs/goformation/v5 v5.4.5
 	github.com/ghodss/yaml v1.0.0
 	github.com/go-errors/errors v1.0.1
 	github.com/google/go-containerregistry v0.1.2
@@ -44,7 +43,7 @@ require (
 	github.com/mitchellh/go-homedir v1.1.0
 	github.com/moby/buildkit v0.8.3
 	github.com/onsi/ginkgo v1.16.4
-	github.com/onsi/gomega v1.12.0
+	github.com/onsi/gomega v1.20.2
 	github.com/open-policy-agent/opa v0.22.0
 	github.com/owenrumney/go-sarif v1.0.12
 	github.com/pelletier/go-toml v1.9.3
@@ -54,14 +53,14 @@ require (
 	github.com/stretchr/testify v1.7.0
 	github.com/zclconf/go-cty v1.9.1
 	go.uber.org/zap v1.16.0
-	golang.org/x/sys v0.0.0-20211205182925-97ca703d548d
-	golang.org/x/tools v0.1.11-0.20220316014157-77aa08bb151a // indirect
+	golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f
+	golang.org/x/tools v0.1.12 // indirect
 	google.golang.org/api v0.34.0
 	google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a
 	gopkg.in/src-d/go-git.v4 v4.13.1
-	gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
+	gopkg.in/yaml.v3 v3.0.1
 	helm.sh/helm/v3 v3.6.1
-	honnef.co/go/tools v0.3.1 // indirect
+	honnef.co/go/tools v0.3.3 // indirect
 	k8s.io/api v0.21.0
 	k8s.io/apimachinery v0.21.0
 	k8s.io/client-go v10.0.0+incompatible
@@ -70,6 +69,8 @@ require (
 	sigs.k8s.io/kustomize/kyaml v0.11.0
 )
 
+require github.com/awslabs/goformation/v6 v6.10.0
+
 require (
 	cloud.google.com/go/storage v1.10.0 // indirect
 	github.com/Azure/go-autorest v14.2.0+incompatible // indirect
@@ -122,7 +123,7 @@ require (
 	github.com/gogo/protobuf v1.3.2 // indirect
 	github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect
 	github.com/golang/protobuf v1.5.2 // indirect
-	github.com/google/go-cmp v0.5.6 // indirect
+	github.com/google/go-cmp v0.5.8 // indirect
 	github.com/google/gofuzz v1.1.0 // indirect
 	github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
 	github.com/googleapis/gax-go/v2 v2.0.5 // indirect
@@ -176,18 +177,18 @@ require (
 	go.uber.org/atomic v1.6.0 // indirect
 	go.uber.org/multierr v1.5.0 // indirect
 	golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect
+	golang.org/x/exp/typeparams v0.0.0-20220218215828-6cf2b201936e // indirect
 	golang.org/x/lint v0.0.0-20200302205851-738671d3881b // indirect
-	golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect
-	golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f // indirect
+	golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
+	golang.org/x/net v0.0.0-20220722155237-a158d28d115b // indirect
 	golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 // indirect
-	golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
-	golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d // indirect
+	golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect
+	golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect
 	golang.org/x/text v0.3.7 // indirect
 	golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1 // indirect
-	golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
 	google.golang.org/appengine v1.6.6 // indirect
 	google.golang.org/grpc v1.31.1 // indirect
-	google.golang.org/protobuf v1.26.0 // indirect
+	google.golang.org/protobuf v1.28.0 // indirect
 	gopkg.in/inf.v0 v0.9.1 // indirect
 	gopkg.in/src-d/go-billy.v4 v4.3.2 // indirect
 	gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
diff --git a/go.sum b/go.sum
index d396594af..49aa7dc9d 100644
--- a/go.sum
+++ b/go.sum
@@ -144,13 +144,11 @@ github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YH
 github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
 github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
 github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
-github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
 github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
 github.com/Masterminds/semver/v3 v3.0.3/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
 github.com/Masterminds/semver/v3 v3.1.0/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
 github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc=
 github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
-github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60=
 github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=
 github.com/Masterminds/sprig/v3 v3.2.2 h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmyxvxX8=
 github.com/Masterminds/sprig/v3 v3.2.2/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk=
@@ -222,7 +220,6 @@ github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:o
 github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 h1:MzVXffFUye+ZcSR6opIgz9Co7WcDx6ZcY+RjfFHoA0I=
 github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
 github.com/apparentlymart/go-shquot v0.0.1/go.mod h1:lw58XsE5IgUXZ9h0cxnypdx31p9mPFIVEQ9P3c7MlrU=
-github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0=
 github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk=
 github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw=
 github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo=
@@ -284,9 +281,8 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.6.0 h1:Y9r6mrzOyAYz4qKaluSH19zqH1236
 github.com/aws/aws-sdk-go-v2/service/sts v1.6.0/go.mod h1:q7o0j7d7HrJk/vr9uUt3BVRASvcU7gYZB9PUgPiByXg=
 github.com/aws/smithy-go v1.6.0 h1:T6puApfBcYiTIsaI+SYWqanjMt5pc3aoyyDrI+0YH54=
 github.com/aws/smithy-go v1.6.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
-github.com/awslabs/goformation/v4 v4.19.5/go.mod h1:JoNpnVCBOUtEz9bFxc9sjy8uBUCLF5c4D1L7RhRTVM8=
-github.com/awslabs/goformation/v5 v5.4.5 h1:uX3o2Z9BC5R0YUw+vPac/sj0mfMBcz8VBqurL85KHpg=
-github.com/awslabs/goformation/v5 v5.4.5/go.mod h1:zGVZfdzJB7z7Uxm0YhWvx77qnNT8b9kc78twJ/TOtdk=
+github.com/awslabs/goformation/v6 v6.10.0 h1:DNJl6dILReNgbc7RGgymWpUpyqPrkC/26Mx6xOBGIMo=
+github.com/awslabs/goformation/v6 v6.10.0/go.mod h1:Hobtf9ZQSmWiaf2ZT6jPNrRejNKXbH933kwP4kttSJU=
 github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I=
 github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc=
 github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
@@ -680,8 +676,9 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
 github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
 github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
+github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/go-containerregistry v0.0.0-20191010200024-a3d713f9b7f8/go.mod h1:KyKXa9ciM8+lgMXwOVsXi7UxGrsf9mM61Mzs+xKUrKE=
 github.com/google/go-containerregistry v0.1.2 h1:YjFNKqxzWUVZND8d4ItF9wuYlE75WQfECE7yKX/Nu3o=
 github.com/google/go-containerregistry v0.1.2/go.mod h1:GPivBPgdAyd2SU+vf6EpsgOtWDuPqjW0hJZt4rNdTZ4=
@@ -707,6 +704,7 @@ github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hf
 github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
 github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
 github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
 github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
 github.com/google/rpmpack v0.0.0-20191226140753-aa36bfddb3a0/go.mod h1:RaTPr0KUf2K7fnZYLNDrr8rxAamWs3iNywJLtQ2AzBg=
 github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
@@ -720,7 +718,6 @@ github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
 github.com/google/wire v0.3.0/go.mod h1:i1DMg/Lu8Sz5yYl25iOdmc5CT5qusaa+zmRWs16741s=
 github.com/google/wire v0.4.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU=
 github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY=
-github.com/googleapis/gax-go v2.0.2+incompatible h1:silFMLAnr330+NRuag/VjIGF7TLp/LBrV2CJKFLWEww=
 github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY=
 github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
 github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM=
@@ -856,6 +853,7 @@ github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmK
 github.com/iancoleman/strcase v0.1.3 h1:dJBk1m2/qjL1twPLf68JND55vvivMupZ4wIzE8CTdBw=
 github.com/iancoleman/strcase v0.1.3/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE=
 github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
 github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
 github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
 github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
@@ -1109,9 +1107,12 @@ github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+
 github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
 github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg=
 github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
-github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E=
 github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc=
 github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
+github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
+github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU=
+github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU=
+github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk=
 github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
 github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
 github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
@@ -1120,8 +1121,11 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J
 github.com/onsi/gomega v1.8.1/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA=
 github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA=
 github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
-github.com/onsi/gomega v1.12.0 h1:p4oGGk2M2UJc0wWN4lHFvIB71lxsh0T/UiKCCgFADY8=
-github.com/onsi/gomega v1.12.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY=
+github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
+github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=
+github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
+github.com/onsi/gomega v1.20.2 h1:8uQq0zMgLEfa0vRrrBgaJF2gyW9Da9BmfGV+OyUzfkY=
+github.com/onsi/gomega v1.20.2/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc=
 github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
 github.com/open-policy-agent/opa v0.22.0 h1:KZvn0uMQIorBIwYk8Vc89dp8No9FIEF8eFl0sc1r/1U=
 github.com/open-policy-agent/opa v0.22.0/go.mod h1:rrwxoT/b011T0cyj+gg2VvxqTtn6N3gp/jzmr3fjW44=
@@ -1422,6 +1426,7 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
 github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
 github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs=
 github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA=
 github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg=
@@ -1551,8 +1556,9 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB
 golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o=
 golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
+golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s=
+golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
 golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -1610,8 +1616,11 @@ golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwY
 golang.org/x/net v0.0.0-20210224082022-3d97a244fca7/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
 golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
-golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f h1:OfiFi4JbukWwe3lzw+xunroH1mnC1e2Gy5cxNJApiSY=
 golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/net v0.0.0-20220722155237-a158d28d115b h1:PxfKdU9lEEDYjdIzOtC4qFWgkU2rGHdKlKowJSMN9h0=
+golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
 golang.org/x/oauth2 v0.0.0-20180724155351-3d292e4d0cdc/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -1635,8 +1644,9 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ
 golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw=
+golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1727,13 +1737,18 @@ golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211205182925-97ca703d548d h1:FjkYO/PPp4Wi0EAUOVLxePm7qVW4r4ctbWpURyuOD0E=
-golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s=
+golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE=
 golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1839,12 +1854,12 @@ golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4f
 golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
-golang.org/x/tools v0.1.11-0.20220316014157-77aa08bb151a h1:ofrrl6c6NG5/IOSx/R1cyiQxxjqlur0h/TvbUhkH0II=
-golang.org/x/tools v0.1.11-0.20220316014157-77aa08bb151a/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
+golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
+golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU=
+golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
 golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0=
 gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
@@ -1963,8 +1978,9 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD
 google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
 google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
 google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk=
 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -2012,8 +2028,9 @@ gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
 gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
 gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
@@ -2032,8 +2049,8 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt
 honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
 honnef.co/go/tools v0.0.1-2020.1.5/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-honnef.co/go/tools v0.3.1 h1:1kJlrWJLkaGXgcaeosRXViwviqjI7nkBvU2+sZW0AYc=
-honnef.co/go/tools v0.3.1/go.mod h1:vlRD9XErLMGT+mDuofSr0mMMquscM/1nQqtRSsh6m70=
+honnef.co/go/tools v0.3.3 h1:oDx7VAwstgpYpb3wv0oxiZlxY+foCpRAwY7Vk6XpAgA=
+honnef.co/go/tools v0.3.3/go.mod h1:jzwdWgg7Jdq75wlfblQxO4neNaFFSvgc1tD5Wv8U0Yw=
 k8s.io/api v0.19.0 h1:XyrFIJqTYZJ2DU7FBE/bSPz7b1HvbVBuBf07oeo6eTc=
 k8s.io/api v0.19.0/go.mod h1:I1K45XlvTrDjmj5LoM5LuP/KYrhWbjUKT/SoPG0qTjw=
 k8s.io/apiextensions-apiserver v0.21.0 h1:Nd4uBuweg6ImzbxkC1W7xUNZcCV/8Vt10iTdTIVF3hw=
@@ -2059,7 +2076,6 @@ k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8
 k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
 k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
 k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
-k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
 k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
 k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
 k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
@@ -2083,7 +2099,6 @@ k8s.io/utils v0.0.0-20201110183641-67b214c5f920 h1:CbnUZsM497iRC5QMVkHwyl8s2tB3g
 k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
 lukechampine.com/uint128 v1.1.1 h1:pnxCASz787iMf+02ssImqk6OLt+Z5QHMoZyUXR4z6JU=
 lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
-modernc.org/cc v1.0.0 h1:nPibNuDEx6tvYrUAtvDTTw98rx5juGsa5zuDnKwEEQQ=
 modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw=
 modernc.org/cc/v3 v3.33.6 h1:r63dgSzVzRxUpAJFPQWHy1QeZeY1ydNENUDaBx1GqYc=
 modernc.org/cc/v3 v3.33.6/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g=
@@ -2135,7 +2150,6 @@ sigs.k8s.io/kustomize/kyaml v0.10.15/go.mod h1:mlQFagmkm1P+W4lZJbJ/yaxMd8PqMRSC4
 sigs.k8s.io/kustomize/kyaml v0.11.0 h1:9KhiCPKaVyuPcgOLJXkvytOvjMJLoxpjodiycb4gHsA=
 sigs.k8s.io/kustomize/kyaml v0.11.0/go.mod h1:GNMwjim4Ypgp/MueD3zXHLRJEjz7RvtPae0AwlvEMFM=
 sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI=
-sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06 h1:zD2IemQ4LmOcAumeiyDWXKUI2SO0NYDe3H6QGvPOVgU=
 sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18=
 sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
 sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
diff --git a/pkg/cli/register.go b/pkg/cli/register.go
index 534e10be5..f394739d5 100644
--- a/pkg/cli/register.go
+++ b/pkg/cli/register.go
@@ -18,7 +18,7 @@ package cli
 
 import (
 	"flag"
-	"io/ioutil"
+	"io"
 	"log"
 	"os"
 	"strings"
@@ -92,7 +92,7 @@ func Execute() {
 
 	// disable terraform logs when TF_LOG env variable is not set
 	if os.Getenv("TF_LOG") == "" {
-		log.SetOutput(ioutil.Discard)
+		log.SetOutput(io.Discard)
 	}
 
 	if err := rootCmd.Execute(); err != nil {
diff --git a/pkg/cli/run.go b/pkg/cli/run.go
index f04f33fff..65da8dc9a 100644
--- a/pkg/cli/run.go
+++ b/pkg/cli/run.go
@@ -141,7 +141,7 @@ func (s *ScanOptions) Scan() error {
 	return nil
 }
 
-//Init initalises and validates ScanOptions
+// Init initalises and validates ScanOptions
 func (s *ScanOptions) Init() error {
 	s.initColor()
 	if err := s.validate(); err != nil {
diff --git a/pkg/config/config-reader.go b/pkg/config/config-reader.go
index 0a0589159..eb4607c14 100644
--- a/pkg/config/config-reader.go
+++ b/pkg/config/config-reader.go
@@ -18,7 +18,6 @@ package config
 
 import (
 	"fmt"
-	"io/ioutil"
 	"os"
 	"path/filepath"
 
@@ -64,7 +63,7 @@ func NewTerrascanConfigReader(fileName string) (*TerrascanConfigReader, error) {
 		return configReader, ErrNotPresent
 	}
 
-	data, err := ioutil.ReadFile(fileName)
+	data, err := os.ReadFile(fileName)
 	if err != nil {
 		zap.S().Error("error loading config file", zap.Error(err))
 		return configReader, ErrTomlLoadConfig
diff --git a/pkg/downloader/module-download.go b/pkg/downloader/module-download.go
index ba43288cf..ca9aab01f 100644
--- a/pkg/downloader/module-download.go
+++ b/pkg/downloader/module-download.go
@@ -18,7 +18,6 @@ package downloader
 
 import (
 	"fmt"
-	"io/ioutil"
 	"os"
 	"path/filepath"
 
@@ -84,7 +83,7 @@ func newTerraformRegistryClient() terraformRegistryClient {
 // NewAuthenticatedRegistryClient parses the contents of a terraformrc file and builds an authenticated
 // registry client using the credentials found in the rcfile
 func NewAuthenticatedRegistryClient(rcFile string) terraformRegistryClient {
-	b, err := ioutil.ReadFile(rcFile)
+	b, err := os.ReadFile(rcFile)
 	if err != nil {
 		zap.S().Infof("Error reading %s: %s", rcFile, err)
 		return registry.NewClient(nil, nil)
diff --git a/pkg/http-server/file-scan.go b/pkg/http-server/file-scan.go
index f41ff3430..6a28bce23 100644
--- a/pkg/http-server/file-scan.go
+++ b/pkg/http-server/file-scan.go
@@ -19,7 +19,7 @@ package httpserver
 import (
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
+	"io"
 	"net/http"
 	"os"
 	"path"
@@ -77,7 +77,7 @@ func (g *APIHandler) scanFile(w http.ResponseWriter, r *http.Request) {
 
 	// Create a temporary file within temp directory
 	tempFileTemplate := fmt.Sprintf("terrascan-*%s", fileExtension)
-	tempFile, err := ioutil.TempFile("", tempFileTemplate)
+	tempFile, err := os.CreateTemp("", tempFileTemplate)
 	if err != nil {
 		errMsg := fmt.Sprintf("failed to create temp file. error: '%v'", err)
 		zap.S().Error(errMsg)
@@ -88,7 +88,7 @@ func (g *APIHandler) scanFile(w http.ResponseWriter, r *http.Request) {
 	zap.S().Debugf("create temp config file at '%s'", tempFile.Name())
 
 	// read all of the contents of uploaded file
-	fileBytes, err := ioutil.ReadAll(file)
+	fileBytes, err := io.ReadAll(file)
 	if err != nil {
 		errMsg := fmt.Sprintf("failed to read uploaded file. error: '%v'", err)
 		zap.S().Error(errMsg)
diff --git a/pkg/http-server/webhook-scan.go b/pkg/http-server/webhook-scan.go
index 7f7210a79..9073aab11 100644
--- a/pkg/http-server/webhook-scan.go
+++ b/pkg/http-server/webhook-scan.go
@@ -19,7 +19,7 @@ package httpserver
 import (
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
+	"io"
 	"net/http"
 
 	"github.com/gorilla/mux"
@@ -44,7 +44,7 @@ func (g *APIHandler) validateK8SWebhook(w http.ResponseWriter, r *http.Request)
 	)
 
 	// Read the request into byte array
-	body, err := ioutil.ReadAll(r.Body)
+	body, err := io.ReadAll(r.Body)
 	if err != nil {
 		msg := fmt.Sprintf("failed to read validating admission webhook request body, error: '%v'", err)
 		apiErrorResponse(w, msg, http.StatusBadRequest)
diff --git a/pkg/iac-providers/arm/v1/load-dir.go b/pkg/iac-providers/arm/v1/load-dir.go
index f43c6d1c9..cbe2f2fcd 100644
--- a/pkg/iac-providers/arm/v1/load-dir.go
+++ b/pkg/iac-providers/arm/v1/load-dir.go
@@ -19,7 +19,7 @@ package armv1
 import (
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
+	"io"
 	"os"
 	"path/filepath"
 	"strings"
@@ -113,7 +113,7 @@ func (a *ARMV1) tryGetParameters(fileName string, fileDir string, files []*strin
 	}
 	defer f.Close()
 
-	data, err := ioutil.ReadAll(f)
+	data, err := io.ReadAll(f)
 	if err != nil {
 		zap.S().Debug(errFileLoad, zap.String(iacFile, file), zap.Error(err))
 		return
diff --git a/pkg/iac-providers/arm/v1/load-file.go b/pkg/iac-providers/arm/v1/load-file.go
index eaa265962..07a07f636 100644
--- a/pkg/iac-providers/arm/v1/load-file.go
+++ b/pkg/iac-providers/arm/v1/load-file.go
@@ -19,7 +19,7 @@ package armv1
 import (
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
+	"os"
 	"path/filepath"
 	"strings"
 
@@ -40,7 +40,7 @@ func (a *ARMV1) LoadIacFile(absFilePath string, options map[string]interface{})
 		return allResourcesConfig, fmt.Errorf("unsupported file %s", absFilePath)
 	}
 
-	fileData, err := ioutil.ReadFile(absFilePath)
+	fileData, err := os.ReadFile(absFilePath)
 	if err != nil {
 		zap.S().Debug("unable to read file", zap.Error(err), zap.String("file", absFilePath))
 		return allResourcesConfig, fmt.Errorf("unable to read file %s", absFilePath)
@@ -185,7 +185,7 @@ func (a *ARMV1) getLinkedTemplate(config output.ResourceConfig, path string, map
 			// if linked template is relative path
 			if relativePath := convert.ToString(resourceConfig, types.LinkedTemplateRelativePath); relativePath != "" {
 				templatePath := filepath.Join(filepath.Dir(path), relativePath)
-				data, err := ioutil.ReadFile(templatePath)
+				data, err := os.ReadFile(templatePath)
 				if err != nil {
 					zap.S().Debug("error loading linked template", zap.String("path", relativePath), zap.Error(err))
 				}
diff --git a/pkg/iac-providers/cft/v1/load-file.go b/pkg/iac-providers/cft/v1/load-file.go
index 458b05d9a..2e6780193 100644
--- a/pkg/iac-providers/cft/v1/load-file.go
+++ b/pkg/iac-providers/cft/v1/load-file.go
@@ -20,12 +20,12 @@ import (
 	"encoding/json"
 	"errors"
 	"fmt"
-	"io/ioutil"
+	"os"
 	"path/filepath"
 	"strings"
 
-	"github.com/awslabs/goformation/v5"
-	"github.com/awslabs/goformation/v5/cloudformation"
+	"github.com/awslabs/goformation/v6"
+	"github.com/awslabs/goformation/v6/cloudformation"
 	multierr "github.com/hashicorp/go-multierror"
 	"github.com/tenable/terrascan/pkg/iac-providers/output"
 	"github.com/tenable/terrascan/pkg/mapper"
@@ -38,7 +38,7 @@ import (
 // LoadIacFile loads the specified CFT template file.
 // Note that a single CFT template json file may contain multiple resource definitions.
 func (a *CFTV1) LoadIacFile(absFilePath string, options map[string]interface{}) (allResourcesConfig output.AllResourceConfigs, err error) {
-	fileData, err := ioutil.ReadFile(absFilePath)
+	fileData, err := os.ReadFile(absFilePath)
 	if err != nil {
 		zap.S().Debug("unable to read file", zap.Error(err), zap.String("file", absFilePath))
 		return allResourcesConfig, fmt.Errorf("unable to read file %s", absFilePath)
diff --git a/pkg/iac-providers/cft/v1/sanitize-cft-template.go b/pkg/iac-providers/cft/v1/sanitize-cft-template.go
index d62f210ae..c28e8c0e6 100644
--- a/pkg/iac-providers/cft/v1/sanitize-cft-template.go
+++ b/pkg/iac-providers/cft/v1/sanitize-cft-template.go
@@ -23,9 +23,9 @@ import (
 	"strconv"
 	"strings"
 
-	"github.com/awslabs/goformation/v5/cloudformation"
-	"github.com/awslabs/goformation/v5/cloudformation/policies"
-	"github.com/awslabs/goformation/v5/intrinsics"
+	"github.com/awslabs/goformation/v6/cloudformation"
+	"github.com/awslabs/goformation/v6/cloudformation/policies"
+	"github.com/awslabs/goformation/v6/intrinsics"
 	"go.uber.org/zap"
 )
 
diff --git a/pkg/iac-providers/docker/v1/parser.go b/pkg/iac-providers/docker/v1/parser.go
index 3f53dca72..ff48155ee 100644
--- a/pkg/iac-providers/docker/v1/parser.go
+++ b/pkg/iac-providers/docker/v1/parser.go
@@ -18,7 +18,7 @@ package dockerv1
 
 import (
 	"bytes"
-	"io/ioutil"
+	"os"
 	"strings"
 
 	"github.com/moby/buildkit/frontend/dockerfile/instructions"
@@ -50,7 +50,7 @@ func (dc *DockerV1) Parse(filepath string) ([]DockerConfig, string, error) {
 	config := []DockerConfig{}
 	comments := ""
 
-	data, err := ioutil.ReadFile(filepath)
+	data, err := os.ReadFile(filepath)
 	if err != nil {
 		zap.S().Error("error loading docker file", filepath, zap.Error(err))
 		return config, "", err
diff --git a/pkg/iac-providers/helm/v3/load-dir.go b/pkg/iac-providers/helm/v3/load-dir.go
index 65a00ae5b..b47e71140 100644
--- a/pkg/iac-providers/helm/v3/load-dir.go
+++ b/pkg/iac-providers/helm/v3/load-dir.go
@@ -19,7 +19,6 @@ package helmv3
 import (
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
 	"os"
 	"path/filepath"
 
@@ -170,7 +169,7 @@ func (h *HelmV3) renderChart(chartPath string, chartMap helmChartData, templateD
 	chartFiles := make([]*chart.File, 0)
 	for _, templateFile := range templateFiles {
 		var fileData []byte
-		fileData, err := ioutil.ReadFile(filepath.Join(templateDir, *templateFile))
+		fileData, err := os.ReadFile(filepath.Join(templateDir, *templateFile))
 		if err != nil {
 			logger.Debug("error while reading template file", zap.String("file", *templateFile), zap.Error(err))
 			return iacDocuments, err
@@ -246,7 +245,7 @@ func (h *HelmV3) loadChart(chartPath string) ([]*utils.IacDocument, helmChartDat
 	logger := zap.S().With("chart path", chartPath)
 
 	// load the chart file and values file from the specified chart path
-	chartFileBytes, err := ioutil.ReadFile(chartPath)
+	chartFileBytes, err := os.ReadFile(chartPath)
 	if err != nil {
 		logger.Debug("unable to read", zap.Error(err))
 		return iacDocuments, chartMap, err
@@ -268,7 +267,7 @@ func (h *HelmV3) loadChart(chartPath string) ([]*utils.IacDocument, helmChartDat
 
 	logger.With("file name", fileInfo.Name())
 	var valueFileBytes []byte
-	valueFileBytes, err = ioutil.ReadFile(valuesFile)
+	valueFileBytes, err = os.ReadFile(valuesFile)
 	if err != nil {
 		logger.Debug("unable to read values.yaml", zap.Error(err))
 		return iacDocuments, chartMap, err
diff --git a/pkg/iac-providers/kubernetes/v1/extract-images.go b/pkg/iac-providers/kubernetes/v1/extract-images.go
index 42697c4d9..bed164d92 100644
--- a/pkg/iac-providers/kubernetes/v1/extract-images.go
+++ b/pkg/iac-providers/kubernetes/v1/extract-images.go
@@ -142,7 +142,7 @@ func (k *K8sV1) extractContainerImages(kind string, doc *utils.IacDocument) ([]o
 	return containerImages, initContainerImages, nil
 }
 
-//readContainers prepares list of containers and init containers from k8scorev1.Container object
+// readContainers prepares list of containers and init containers from k8scorev1.Container object
 func readContainers(containers []k8scorev1.Container) (containerImages []output.ContainerDetails) {
 	for _, container := range containers {
 		containerImages = append(containerImages, output.ContainerDetails{Name: container.Name, Image: container.Image})
diff --git a/pkg/iac-providers/output/vulnerability.go b/pkg/iac-providers/output/vulnerability.go
index 5822d0b20..c7df2ffb2 100644
--- a/pkg/iac-providers/output/vulnerability.go
+++ b/pkg/iac-providers/output/vulnerability.go
@@ -66,12 +66,12 @@ type CVSS struct {
 	V3Score  float64 `json:"v3_score,omitempty"`
 }
 
-//ACRResponse holds response from ACR api call
+// ACRResponse holds response from ACR api call
 type ACRResponse struct {
 	Properties ACRVulnerabilityConfig `json:"properties"`
 }
 
-//ACRVulnerabilityConfig holds ACR api vulnerability information
+// ACRVulnerabilityConfig holds ACR api vulnerability information
 type ACRVulnerabilityConfig struct {
 	Description     string             `json:"description"`
 	DisplayName     string             `json:"displayName"`
@@ -124,7 +124,7 @@ type ACRCvss struct {
 	V3 ACRCvssBase `json:"3.0"`
 }
 
-//ACRCvssBase base holds the actual cvss score of vulnerability eg.  "base": 7.8
+// ACRCvssBase base holds the actual cvss score of vulnerability eg.  "base": 7.8
 type ACRCvssBase struct {
 	Base float64 `json:"base"`
 }
@@ -135,7 +135,7 @@ type ACRCve struct {
 	Link  string `json:"link"`
 }
 
-//ACRCicdData holds information about the cicd job completion
+// ACRCicdData holds information about the cicd job completion
 type ACRCicdData struct {
 	Status string `json:"status"`
 }
@@ -194,7 +194,7 @@ func (v *Vulnerability) PrepareFromECRImageScan(imageScanFinding *ecr.ImageScanF
 	}
 }
 
-//PrepareFromACRImageScan - prepares vulnerability object from ACR image scan findings
+// PrepareFromACRImageScan - prepares vulnerability object from ACR image scan findings
 func (v *Vulnerability) PrepareFromACRImageScan(acrResponse ACRResponse) {
 	if acrResponse.Properties.ID == "" {
 		return
@@ -218,7 +218,7 @@ func (v *Vulnerability) PrepareFromACRImageScan(acrResponse ACRResponse) {
 	v.CVSS = vendorCVSS
 }
 
-//PrepareFromGCRImageScan - prepares vulnerability object from GCP image scan findings
+// PrepareFromGCRImageScan - prepares vulnerability object from GCP image scan findings
 func (v *Vulnerability) PrepareFromGCRImageScan(gcpVulnerability *grafeaspb.Occurrence) {
 	vul := gcpVulnerability.GetVulnerability()
 	v.Type = vul.GetType()
@@ -250,7 +250,7 @@ func (v *Vulnerability) PrepareFromGCRImageScan(gcpVulnerability *grafeaspb.Occu
 	v.CVSS = vendorCVSS
 }
 
-//PrepareFromHarborImageScan - prepares vulnerability object from Harbor image scan findings
+// PrepareFromHarborImageScan - prepares vulnerability object from Harbor image scan findings
 func (v *Vulnerability) PrepareFromHarborImageScan(vulnerability map[string]interface{}) {
 	if id, ok := vulnerability["id"]; ok {
 		v.VulnerabilityID, _ = id.(string)
diff --git a/pkg/iac-providers/terraform/commons/extract-container-images.go b/pkg/iac-providers/terraform/commons/extract-container-images.go
index 2f5afe16b..907ebe821 100644
--- a/pkg/iac-providers/terraform/commons/extract-container-images.go
+++ b/pkg/iac-providers/terraform/commons/extract-container-images.go
@@ -18,7 +18,7 @@ package commons
 
 import (
 	"encoding/json"
-	"io/ioutil"
+	"os"
 	"path/filepath"
 	"strings"
 
@@ -62,17 +62,17 @@ func isKuberneteResource(resource *hclConfigs.Resource) bool {
 	return ok
 }
 
-//isAzureConatinerResource verifies resource is azure type
+// isAzureConatinerResource verifies resource is azure type
 func isAzureConatinerResource(resource *hclConfigs.Resource) bool {
 	return resource.Type == azureContainerResource
 }
 
-//isAwsConatinerResource verifies resource is aws type
+// isAwsConatinerResource verifies resource is aws type
 func isAwsConatinerResource(resource *hclConfigs.Resource) bool {
 	return resource.Type == awsContainerResources
 }
 
-//fetchConatinersFromAzureResource extracts all the containers from azure resource
+// fetchConatinersFromAzureResource extracts all the containers from azure resource
 func fetchContainersFromAzureResource(resource jsonObj) []output.ContainerDetails {
 	results := []output.ContainerDetails{}
 	if v, ok := resource[container]; ok {
@@ -83,7 +83,7 @@ func fetchContainersFromAzureResource(resource jsonObj) []output.ContainerDetail
 	return results
 }
 
-//fetchConatinersFromAwsResource extracts all the containers from aws ecs resource
+// fetchConatinersFromAwsResource extracts all the containers from aws ecs resource
 func fetchContainersFromAwsResource(resource jsonObj, hclBody *hclsyntax.Body, resourcePath string) []output.ContainerDetails {
 	results := []output.ContainerDetails{}
 	if v, ok := resource[containerDefinitions]; ok {
@@ -98,7 +98,7 @@ func fetchContainersFromAwsResource(resource jsonObj, hclBody *hclsyntax.Body, r
 			if !filepath.IsAbs(fileLocation) {
 				fileLocation = filepath.Join(dir, fileLocation)
 			}
-			fileData, err := ioutil.ReadFile(fileLocation)
+			fileData, err := os.ReadFile(fileLocation)
 			if err != nil {
 				zap.S().Warnf("failed to fetch containers from aws resource: %v", err)
 				return results
@@ -116,7 +116,7 @@ func fetchContainersFromAwsResource(resource jsonObj, hclBody *hclsyntax.Body, r
 	return results
 }
 
-//getContainersFromhclBody parses the attribute and creates container object
+// getContainersFromhclBody parses the attribute and creates container object
 func getContainersFromhclBody(hclBody *hclsyntax.Body) (results []output.ContainerDetails) {
 	for _, v := range hclBody.Attributes {
 		if v.Name == containerDefinitions {
@@ -194,7 +194,7 @@ func getContainers(containers []jsonObj) (results []output.ContainerDetails) {
 	return
 }
 
-//extractContainerImagesFromk8sResources extracts containers from k8s resource
+// extractContainerImagesFromk8sResources extracts containers from k8s resource
 func extractContainerImagesFromk8sResources(resource *hclConfigs.Resource, body *hclsyntax.Body) (containers, initContainers []output.ContainerDetails) {
 	for _, block := range body.Blocks {
 		if block.Type == spec {
@@ -225,7 +225,7 @@ func getContainerAndInitContainerFromSpecBlocks(specs *hclsyntax.Body) (containe
 	return
 }
 
-//getContainerAndInitContainerFromTemplateBlocks extracts container config from template block of resource
+// getContainerAndInitContainerFromTemplateBlocks extracts container config from template block of resource
 func getContainerAndInitContainerFromTemplateBlocks(templateBlocks []*hclsyntax.Block) (containers, initContainers []*hclsyntax.Block) {
 	for _, templateBlocks := range templateBlocks {
 		if templateBlocks.Type == spec {
@@ -241,7 +241,7 @@ func getContainerAndInitContainerFromTemplateBlocks(templateBlocks []*hclsyntax.
 	return
 }
 
-//getContainerConfigFromContainerBlock creates container config from container block of resource
+// getContainerConfigFromContainerBlock creates container config from container block of resource
 func getContainerConfigFromContainerBlock(containerBlocks []*hclsyntax.Block) (containerImages []output.ContainerDetails) {
 	for _, conatainerBlock := range containerBlocks {
 		containerImage := output.ContainerDetails{}
@@ -261,7 +261,7 @@ func getContainerConfigFromContainerBlock(containerBlocks []*hclsyntax.Block) (c
 	return
 }
 
-//getValueFromCtyExpr get value string from hcl expression
+// getValueFromCtyExpr get value string from hcl expression
 func getValueFromCtyExpr(expr hclsyntax.Expression) (value string) {
 	val, diags := expr.Value(nil)
 	if diags.HasErrors() {
diff --git a/pkg/iac-providers/terraform/commons/load-dir.go b/pkg/iac-providers/terraform/commons/load-dir.go
index eca082adf..1ec931aa3 100644
--- a/pkg/iac-providers/terraform/commons/load-dir.go
+++ b/pkg/iac-providers/terraform/commons/load-dir.go
@@ -20,7 +20,6 @@ import (
 	"encoding/json"
 	"errors"
 	"fmt"
-	"io/ioutil"
 	"os"
 	"path/filepath"
 	"strings"
@@ -56,7 +55,7 @@ type TerraformInstalledModuleMetaData struct {
 	Dir        string `json:"Dir"`
 }
 
-//TerraformModuleManifest holds details of all modules downloaded by terraform
+// TerraformModuleManifest holds details of all modules downloaded by terraform
 type TerraformModuleManifest struct {
 	Modules []TerraformInstalledModuleMetaData `json:"Modules"`
 }
@@ -531,7 +530,7 @@ func (t *TerraformDirectoryLoader) GetRemoteModuleIfPresentInTerraformSrc(req *h
 				zap.S().Error("error reading terraform module metadata file", err)
 				return
 			}
-			data, err := ioutil.ReadFile(filepath.Join(terraformInitRegs, terraformInstalledModulelMetaFileName))
+			data, err := os.ReadFile(filepath.Join(terraformInitRegs, terraformInstalledModulelMetaFileName))
 			if err == nil {
 				err := json.Unmarshal(data, &modules)
 				if err != nil {
@@ -557,7 +556,7 @@ func (t *TerraformDirectoryLoader) GetRemoteModuleIfPresentInTerraformSrc(req *h
 	return
 }
 
-//versionSatisfied - check version in terraform init cache satisfies the required version constraints
+// versionSatisfied - check version in terraform init cache satisfies the required version constraints
 func versionSatisfied(foundversion string, requiredVersion hclConfigs.VersionConstraint) bool {
 	currentVersion, err := version.NewVersion(foundversion)
 	if err != nil {
diff --git a/pkg/iac-providers/terraform/commons/local-references.go b/pkg/iac-providers/terraform/commons/local-references.go
index f38022c29..09b253c4f 100644
--- a/pkg/iac-providers/terraform/commons/local-references.go
+++ b/pkg/iac-providers/terraform/commons/local-references.go
@@ -18,7 +18,7 @@ package commons
 
 import (
 	"encoding/json"
-	"io/ioutil"
+	"os"
 	"reflect"
 	"regexp"
 	"strings"
@@ -72,7 +72,7 @@ func (r *RefResolver) ResolveLocalRef(localRef, callerRef string) interface{} {
 	}
 
 	// read source file
-	fileBytes, err := ioutil.ReadFile(localAttr.DeclRange.Filename)
+	fileBytes, err := os.ReadFile(localAttr.DeclRange.Filename)
 	if err != nil {
 		zap.S().Errorf("failed to read terrafrom IaC file '%s'. error: '%v'", localAttr.DeclRange.Filename, err)
 		return localRef
diff --git a/pkg/iac-providers/terraform/commons/resource.go b/pkg/iac-providers/terraform/commons/resource.go
index 0be764fb6..003898e6d 100644
--- a/pkg/iac-providers/terraform/commons/resource.go
+++ b/pkg/iac-providers/terraform/commons/resource.go
@@ -18,7 +18,7 @@ package commons
 
 import (
 	"fmt"
-	"io/ioutil"
+	"os"
 
 	"github.com/hashicorp/hcl/v2/hclsyntax"
 	hclConfigs "github.com/hashicorp/terraform/configs"
@@ -31,7 +31,7 @@ import (
 func CreateResourceConfig(managedResource *hclConfigs.Resource) (resourceConfig output.ResourceConfig, err error) {
 
 	// read source file
-	fileBytes, err := ioutil.ReadFile(managedResource.DeclRange.Filename)
+	fileBytes, err := os.ReadFile(managedResource.DeclRange.Filename)
 	if err != nil {
 		zap.S().Errorf("failed to read terrafrom IaC file '%s'. error: '%v'", managedResource.DeclRange.Filename, err)
 		return resourceConfig, fmt.Errorf("failed to read terraform file")
@@ -76,7 +76,7 @@ func CreateResourceConfig(managedResource *hclConfigs.Resource) (resourceConfig
 	return resourceConfig, nil
 }
 
-//findContainers finds containers defined in resource
+// findContainers finds containers defined in resource
 func findContainers(managedResource *hclConfigs.Resource, jsonBody jsonObj, hclBody *hclsyntax.Body) (containers []output.ContainerDetails, initContainers []output.ContainerDetails) {
 	if isKuberneteResource(managedResource) {
 		containers, initContainers = extractContainerImagesFromk8sResources(managedResource, hclBody)
diff --git a/pkg/iac-providers/terraform/commons/variable-references.go b/pkg/iac-providers/terraform/commons/variable-references.go
index ada6824c9..1a7f8c3b9 100644
--- a/pkg/iac-providers/terraform/commons/variable-references.go
+++ b/pkg/iac-providers/terraform/commons/variable-references.go
@@ -18,7 +18,7 @@ package commons
 
 import (
 	"encoding/json"
-	"io/ioutil"
+	"os"
 	"reflect"
 	"regexp"
 	"strings"
@@ -148,7 +148,7 @@ func (r *RefResolver) ResolveVarRefFromParentModuleCall(varRef, callerRef string
 	}
 
 	// read source file
-	fileBytes, err := ioutil.ReadFile(r.ParentModuleCall.SourceAddrRange.Filename)
+	fileBytes, err := os.ReadFile(r.ParentModuleCall.SourceAddrRange.Filename)
 	if err != nil {
 		zap.S().Errorf("failed to read terrafrom IaC file '%s'. error: '%v'", r.ParentModuleCall.SourceAddr, err)
 		return varRef
diff --git a/pkg/iac-providers/tfplan/v1/load-file.go b/pkg/iac-providers/tfplan/v1/load-file.go
index 5a3701e1b..83101ef52 100644
--- a/pkg/iac-providers/tfplan/v1/load-file.go
+++ b/pkg/iac-providers/tfplan/v1/load-file.go
@@ -19,7 +19,7 @@ package tfplan
 import (
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
+	"os"
 	"strings"
 
 	"github.com/tenable/terrascan/pkg/iac-providers/output"
@@ -44,7 +44,7 @@ func (t *TFPlan) LoadIacFile(absFilePath string, options map[string]interface{})
 	zap.S().Debug("processing tfplan file")
 
 	// read tfplan json file
-	tfjson, err := ioutil.ReadFile(absFilePath)
+	tfjson, err := os.ReadFile(absFilePath)
 	if err != nil {
 		errMsg := fmt.Sprintf("failed to read tfplan JSON file. error: '%v'", err)
 		zap.S().Debug(errMsg)
diff --git a/pkg/initialize/run.go b/pkg/initialize/run.go
index ed37561a1..eb2c01b20 100644
--- a/pkg/initialize/run.go
+++ b/pkg/initialize/run.go
@@ -20,8 +20,8 @@ import (
 	"bytes"
 	"encoding/json"
 	"fmt"
+	"io"
 	"io/fs"
-	"io/ioutil"
 	"net/http"
 	"os"
 	"path/filepath"
@@ -114,7 +114,7 @@ func dowloadEnvironmentPolicies(policyBasePath, accessToken string) error {
 		return fmt.Errorf("error downloading environment policies, response status code: '%d'", res.StatusCode)
 	}
 
-	policies, err := ioutil.ReadAll(res.Body)
+	policies, err := io.ReadAll(res.Body)
 	if err != nil {
 		return fmt.Errorf("error reading api call response for environment policies. error: '%w'", err)
 	}
@@ -183,7 +183,7 @@ func saveEnvironmentPolicies(policy environmentPolicy, policyRepoPath string) er
 	metadata := buffer.Bytes()
 	metadata = bytes.TrimRight(metadata, "\n")
 	metaDataPath := filepath.Join(resourceDir, policy.metadataFileName)
-	err = ioutil.WriteFile(metaDataPath, metadata, os.ModePerm)
+	err = os.WriteFile(metaDataPath, metadata, os.ModePerm)
 	if err != nil {
 		return fmt.Errorf("could not write rule metadata file on disk. error: '%w'", err)
 	}
@@ -195,7 +195,7 @@ func saveEnvironmentPolicies(policy environmentPolicy, policyRepoPath string) er
 		return nil
 	}
 
-	err = ioutil.WriteFile(regoPath, []byte(policy.regoTemplate), filePermissionBits)
+	err = os.WriteFile(regoPath, []byte(policy.regoTemplate), filePermissionBits)
 	if err != nil {
 		return fmt.Errorf("could not write rego code file on disk. error: '%w'", err)
 	}
diff --git a/pkg/mapper/iac-providers/arm/functions/linked-template.go b/pkg/mapper/iac-providers/arm/functions/linked-template.go
index db393eacb..45f1b144e 100644
--- a/pkg/mapper/iac-providers/arm/functions/linked-template.go
+++ b/pkg/mapper/iac-providers/arm/functions/linked-template.go
@@ -1,7 +1,6 @@
 package functions
 
 import (
-	"io/ioutil"
 	"os"
 	"path/filepath"
 	"strings"
@@ -19,7 +18,7 @@ func ResolveLinkedTemplate(uri string) ([]byte, error) {
 	if err != nil {
 		return nil, err
 	}
-	fileData, err := ioutil.ReadFile(path)
+	fileData, err := os.ReadFile(path)
 	if err != nil {
 		return nil, err
 	}
diff --git a/pkg/mapper/iac-providers/cft/cft.go b/pkg/mapper/iac-providers/cft/cft.go
index 4bebd93d1..8d8e13cec 100644
--- a/pkg/mapper/iac-providers/cft/cft.go
+++ b/pkg/mapper/iac-providers/cft/cft.go
@@ -19,64 +19,64 @@ package cft
 import (
 	"errors"
 
-	"github.com/awslabs/goformation/v5/cloudformation/applicationautoscaling"
-	"github.com/awslabs/goformation/v5/cloudformation/appmesh"
-	"github.com/awslabs/goformation/v5/cloudformation/athena"
-	"github.com/awslabs/goformation/v5/cloudformation/autoscaling"
-	"github.com/awslabs/goformation/v5/cloudformation/backup"
-	"github.com/awslabs/goformation/v5/cloudformation/certificatemanager"
-	"github.com/awslabs/goformation/v5/cloudformation/cloudfront"
-	"github.com/awslabs/goformation/v5/cloudformation/cloudtrail"
-	"github.com/awslabs/goformation/v5/cloudformation/codebuild"
-	"github.com/awslabs/goformation/v5/cloudformation/cognito"
-	"github.com/awslabs/goformation/v5/cloudformation/dms"
-	"github.com/awslabs/goformation/v5/cloudformation/eks"
-	"github.com/awslabs/goformation/v5/cloudformation/emr"
-	"github.com/awslabs/goformation/v5/cloudformation/globalaccelerator"
-	"github.com/awslabs/goformation/v5/cloudformation/lambda"
-	"github.com/awslabs/goformation/v5/cloudformation/msk"
-	"github.com/awslabs/goformation/v5/cloudformation/qldb"
-	"github.com/awslabs/goformation/v5/cloudformation/ram"
-	"github.com/awslabs/goformation/v5/cloudformation/sagemaker"
-	"github.com/awslabs/goformation/v5/cloudformation/serverless"
-	"github.com/awslabs/goformation/v5/cloudformation/sns"
-	"github.com/awslabs/goformation/v5/cloudformation/sqs"
-	"github.com/awslabs/goformation/v5/cloudformation/waf"
+	"github.com/awslabs/goformation/v6/cloudformation/applicationautoscaling"
+	"github.com/awslabs/goformation/v6/cloudformation/appmesh"
+	"github.com/awslabs/goformation/v6/cloudformation/athena"
+	"github.com/awslabs/goformation/v6/cloudformation/autoscaling"
+	"github.com/awslabs/goformation/v6/cloudformation/backup"
+	"github.com/awslabs/goformation/v6/cloudformation/certificatemanager"
+	"github.com/awslabs/goformation/v6/cloudformation/cloudfront"
+	"github.com/awslabs/goformation/v6/cloudformation/cloudtrail"
+	"github.com/awslabs/goformation/v6/cloudformation/codebuild"
+	"github.com/awslabs/goformation/v6/cloudformation/cognito"
+	"github.com/awslabs/goformation/v6/cloudformation/dms"
+	"github.com/awslabs/goformation/v6/cloudformation/eks"
+	"github.com/awslabs/goformation/v6/cloudformation/emr"
+	"github.com/awslabs/goformation/v6/cloudformation/globalaccelerator"
+	"github.com/awslabs/goformation/v6/cloudformation/lambda"
+	"github.com/awslabs/goformation/v6/cloudformation/msk"
+	"github.com/awslabs/goformation/v6/cloudformation/qldb"
+	"github.com/awslabs/goformation/v6/cloudformation/ram"
+	"github.com/awslabs/goformation/v6/cloudformation/sagemaker"
+	"github.com/awslabs/goformation/v6/cloudformation/serverless"
+	"github.com/awslabs/goformation/v6/cloudformation/sns"
+	"github.com/awslabs/goformation/v6/cloudformation/sqs"
+	"github.com/awslabs/goformation/v6/cloudformation/waf"
 
-	cf "github.com/awslabs/goformation/v5/cloudformation/cloudformation"
-	cnf "github.com/awslabs/goformation/v5/cloudformation/config"
-	"github.com/awslabs/goformation/v5/cloudformation/ecr"
-	"github.com/awslabs/goformation/v5/cloudformation/neptune"
-	"github.com/awslabs/goformation/v5/cloudformation/secretsmanager"
-	"github.com/awslabs/goformation/v5/cloudformation/workspaces"
+	cf "github.com/awslabs/goformation/v6/cloudformation/cloudformation"
+	cnf "github.com/awslabs/goformation/v6/cloudformation/config"
+	"github.com/awslabs/goformation/v6/cloudformation/ecr"
+	"github.com/awslabs/goformation/v6/cloudformation/neptune"
+	"github.com/awslabs/goformation/v6/cloudformation/secretsmanager"
+	"github.com/awslabs/goformation/v6/cloudformation/workspaces"
 
-	"github.com/awslabs/goformation/v5/cloudformation/ec2"
-	"github.com/awslabs/goformation/v5/cloudformation/efs"
-	"github.com/awslabs/goformation/v5/cloudformation/elasticache"
+	"github.com/awslabs/goformation/v6/cloudformation/ec2"
+	"github.com/awslabs/goformation/v6/cloudformation/efs"
+	"github.com/awslabs/goformation/v6/cloudformation/elasticache"
 
-	"github.com/awslabs/goformation/v5/cloudformation/dax"
-	"github.com/awslabs/goformation/v5/cloudformation/dynamodb"
-	"github.com/awslabs/goformation/v5/cloudformation/rds"
+	"github.com/awslabs/goformation/v6/cloudformation/dax"
+	"github.com/awslabs/goformation/v6/cloudformation/dynamodb"
+	"github.com/awslabs/goformation/v6/cloudformation/rds"
 
-	"github.com/awslabs/goformation/v5/cloudformation/ecs"
-	"github.com/awslabs/goformation/v5/cloudformation/logs"
+	"github.com/awslabs/goformation/v6/cloudformation/ecs"
+	"github.com/awslabs/goformation/v6/cloudformation/logs"
 
-	"github.com/awslabs/goformation/v5/cloudformation"
-	"github.com/awslabs/goformation/v5/cloudformation/amazonmq"
-	"github.com/awslabs/goformation/v5/cloudformation/apigateway"
-	"github.com/awslabs/goformation/v5/cloudformation/apigatewayv2"
-	"github.com/awslabs/goformation/v5/cloudformation/docdb"
-	"github.com/awslabs/goformation/v5/cloudformation/elasticloadbalancing"
-	"github.com/awslabs/goformation/v5/cloudformation/elasticloadbalancingv2"
-	"github.com/awslabs/goformation/v5/cloudformation/elasticsearch"
-	"github.com/awslabs/goformation/v5/cloudformation/guardduty"
-	"github.com/awslabs/goformation/v5/cloudformation/iam"
-	"github.com/awslabs/goformation/v5/cloudformation/kinesis"
-	"github.com/awslabs/goformation/v5/cloudformation/kinesisfirehose"
-	"github.com/awslabs/goformation/v5/cloudformation/kms"
-	"github.com/awslabs/goformation/v5/cloudformation/redshift"
-	"github.com/awslabs/goformation/v5/cloudformation/route53"
-	"github.com/awslabs/goformation/v5/cloudformation/s3"
+	"github.com/awslabs/goformation/v6/cloudformation"
+	"github.com/awslabs/goformation/v6/cloudformation/amazonmq"
+	"github.com/awslabs/goformation/v6/cloudformation/apigateway"
+	"github.com/awslabs/goformation/v6/cloudformation/apigatewayv2"
+	"github.com/awslabs/goformation/v6/cloudformation/docdb"
+	"github.com/awslabs/goformation/v6/cloudformation/elasticloadbalancing"
+	"github.com/awslabs/goformation/v6/cloudformation/elasticloadbalancingv2"
+	"github.com/awslabs/goformation/v6/cloudformation/elasticsearch"
+	"github.com/awslabs/goformation/v6/cloudformation/guardduty"
+	"github.com/awslabs/goformation/v6/cloudformation/iam"
+	"github.com/awslabs/goformation/v6/cloudformation/kinesis"
+	"github.com/awslabs/goformation/v6/cloudformation/kinesisfirehose"
+	"github.com/awslabs/goformation/v6/cloudformation/kms"
+	"github.com/awslabs/goformation/v6/cloudformation/redshift"
+	"github.com/awslabs/goformation/v6/cloudformation/route53"
+	"github.com/awslabs/goformation/v6/cloudformation/s3"
 	"github.com/tenable/terrascan/pkg/iac-providers/output"
 	"github.com/tenable/terrascan/pkg/mapper/core"
 	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/config"
diff --git a/pkg/mapper/iac-providers/cft/config/api-gateway-rest-api.go b/pkg/mapper/iac-providers/cft/config/api-gateway-rest-api.go
index 6f7ebb687..36e47276e 100644
--- a/pkg/mapper/iac-providers/cft/config/api-gateway-rest-api.go
+++ b/pkg/mapper/iac-providers/cft/config/api-gateway-rest-api.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/apigateway"
+	"github.com/awslabs/goformation/v6/cloudformation/apigateway"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // APIGatewayRestAPIConfig holds config for aws_api_gateway_rest_api
@@ -32,18 +33,18 @@ type APIGatewayRestAPIConfig struct {
 func GetAPIGatewayRestAPIConfig(a *apigateway.RestApi) []AWSResourceConfig {
 	cf := APIGatewayRestAPIConfig{
 		Config: Config{
-			Name: a.Name,
+			Name: functions.GetVal(a.Name),
 			Tags: a.Tags,
 		},
-		MinimumCompressionSize: a.MinimumCompressionSize,
+		MinimumCompressionSize: functions.GetVal(a.MinimumCompressionSize),
 		Policy:                 a.Policy,
 	}
 	// Endpoint Configuration is a []map[string][]string in terraform for some reason
 	// despite having fixed keys and not more than one possible value
 	ec := make(map[string][]string)
 	if a.EndpointConfiguration != nil {
-		ec["types"] = a.EndpointConfiguration.Types
-		ec["vpc_endpoint_ids"] = a.EndpointConfiguration.VpcEndpointIds
+		ec["types"] = functions.GetVal(a.EndpointConfiguration.Types)
+		ec["vpc_endpoint_ids"] = functions.GetVal(a.EndpointConfiguration.VpcEndpointIds)
 	}
 	cf.EndpointConfiguration = []map[string][]string{ec}
 
diff --git a/pkg/mapper/iac-providers/cft/config/api-gateway-stage.go b/pkg/mapper/iac-providers/cft/config/api-gateway-stage.go
index ecea985d6..08a1db06c 100644
--- a/pkg/mapper/iac-providers/cft/config/api-gateway-stage.go
+++ b/pkg/mapper/iac-providers/cft/config/api-gateway-stage.go
@@ -19,12 +19,13 @@ package config
 import (
 	"fmt"
 
-	"github.com/awslabs/goformation/v5/cloudformation/apigateway"
+	"github.com/awslabs/goformation/v6/cloudformation/apigateway"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 const (
-	// GatewayMethodSettings represents subresource aws_api_gateway_method_settings for MethodSettings attribute
-	GatewayMethodSettings = "MethodSettings"
+	// GatewayMethodSetting represents subresource aws_api_gateway_method_settings for MethodSettings attribute
+	GatewayMethodSetting = "MethodSetting"
 )
 
 // MethodSettingConfig holds config for aws_api_gateway_method_settings
@@ -41,7 +42,7 @@ type Settings struct {
 // APIGatewayStageConfig holds config for aws_api_gateway_stage
 type APIGatewayStageConfig struct {
 	AccessLogSettings   interface{} `json:"access_log_settings"`
-	ClientCertificateID interface{} `json:"client_certificate_id"`
+	ClientCertificateID string      `json:"client_certificate_id"`
 	Config
 	XrayTracingEnabled bool `json:"xray_tracing_enabled"`
 }
@@ -53,7 +54,7 @@ func GetAPIGatewayStageConfig(s *apigateway.Stage) []AWSResourceConfig {
 
 	cf := APIGatewayStageConfig{
 		Config: Config{
-			Name: s.StageName,
+			Name: functions.GetVal(s.StageName),
 			Tags: s.Tags,
 		},
 	}
@@ -62,10 +63,8 @@ func GetAPIGatewayStageConfig(s *apigateway.Stage) []AWSResourceConfig {
 	} else {
 		cf.AccessLogSettings = struct{}{}
 	}
-	cf.XrayTracingEnabled = s.TracingEnabled
-	if len(s.ClientCertificateId) > 0 {
-		cf.ClientCertificateID = s.ClientCertificateId
-	}
+	cf.XrayTracingEnabled = functions.GetVal(s.TracingEnabled)
+	cf.ClientCertificateID = functions.GetVal(s.ClientCertificateId)
 
 	// add aws_api_gateway_stage
 	resourceConfigs = append(resourceConfigs, AWSResourceConfig{
@@ -76,20 +75,20 @@ func GetAPIGatewayStageConfig(s *apigateway.Stage) []AWSResourceConfig {
 	// add aws_api_gateway_method_settings
 	// multiple MethodSettings can be configured for same resource in cft
 	if s.MethodSettings != nil {
-		for i, settings := range s.MethodSettings {
+		for i, settings := range functions.GetVal(s.MethodSettings) {
 			msc := MethodSettingConfig{
 				Config: Config{
-					Name: s.StageName,
+					Name: functions.GetVal(s.StageName),
 					Tags: s.Tags,
 				},
 				MethodSettings: []Settings{{
-					MetricsEnabled: settings.MetricsEnabled,
+					MetricsEnabled: functions.GetVal(settings.MetricsEnabled),
 				}},
 			}
 			resourceConfigs = append(resourceConfigs, AWSResourceConfig{
-				Type: GatewayMethodSettings,
+				Type: GatewayMethodSetting,
 				// Unique name for each method setting used fopr ID
-				Name:     fmt.Sprintf("%s%v", s.StageName, i),
+				Name:     fmt.Sprintf("%s%v", functions.GetVal(s.StageName), i),
 				Resource: msc,
 				Metadata: s.AWSCloudFormationMetadata,
 			})
diff --git a/pkg/mapper/iac-providers/cft/config/api-gatewayv2-api.go b/pkg/mapper/iac-providers/cft/config/api-gatewayv2-api.go
index 3c37f4428..bacd8004c 100644
--- a/pkg/mapper/iac-providers/cft/config/api-gatewayv2-api.go
+++ b/pkg/mapper/iac-providers/cft/config/api-gatewayv2-api.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/apigatewayv2"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/apigatewayv2"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // CorsConfigurationBlock holds config for cors_configuration attribute
 type CorsConfigurationBlock struct {
@@ -51,30 +54,30 @@ func GetAPIGatewayV2ApiConfig(a *apigatewayv2.Api) []AWSResourceConfig {
 
 	if a.CorsConfiguration != nil {
 		corsConfigData = make([]CorsConfigurationBlock, 1)
-		corsConfigData[0].AllowCredentials = a.CorsConfiguration.AllowCredentials
-		corsConfigData[0].AllowHeaders = a.CorsConfiguration.AllowHeaders
-		corsConfigData[0].AllowMethods = a.CorsConfiguration.AllowMethods
-		corsConfigData[0].AllowOrigins = a.CorsConfiguration.AllowOrigins
-		corsConfigData[0].ExposeHeaders = a.CorsConfiguration.ExposeHeaders
-		corsConfigData[0].MaxAge = a.CorsConfiguration.MaxAge
+		corsConfigData[0].AllowCredentials = functions.GetVal(a.CorsConfiguration.AllowCredentials)
+		corsConfigData[0].AllowHeaders = functions.GetVal(a.CorsConfiguration.AllowHeaders)
+		corsConfigData[0].AllowMethods = functions.GetVal(a.CorsConfiguration.AllowMethods)
+		corsConfigData[0].AllowOrigins = functions.GetVal(a.CorsConfiguration.AllowOrigins)
+		corsConfigData[0].ExposeHeaders = functions.GetVal(a.CorsConfiguration.ExposeHeaders)
+		corsConfigData[0].MaxAge = functions.GetVal(a.CorsConfiguration.MaxAge)
 	}
 
 	cf := APIGatewayV2ApiConfig{
 		Config: Config{
-			Name: a.Name,
+			Name: functions.GetVal(a.Name),
 			Tags: a.Tags,
 		},
-		Name:                      a.Name,
-		ProtocolType:              a.ProtocolType,
-		RouteKey:                  a.RouteKey,
-		Description:               a.Description,
-		CredentialsArn:            a.CredentialsArn,
-		RouteSelectionExpression:  a.RouteSelectionExpression,
-		Target:                    a.Target,
-		Version:                   a.Version,
-		APIKeySelectionExpression: a.ApiKeySelectionExpression,
-		DisableExecuteAPIEndpoint: a.DisableExecuteApiEndpoint,
-		FailOnWarnings:            a.FailOnWarnings,
+		Name:                      functions.GetVal(a.Name),
+		ProtocolType:              functions.GetVal(a.ProtocolType),
+		RouteKey:                  functions.GetVal(a.RouteKey),
+		Description:               functions.GetVal(a.Description),
+		CredentialsArn:            functions.GetVal(a.CredentialsArn),
+		RouteSelectionExpression:  functions.GetVal(a.RouteSelectionExpression),
+		Target:                    functions.GetVal(a.Target),
+		Version:                   functions.GetVal(a.Version),
+		APIKeySelectionExpression: functions.GetVal(a.ApiKeySelectionExpression),
+		DisableExecuteAPIEndpoint: functions.GetVal(a.DisableExecuteApiEndpoint),
+		FailOnWarnings:            functions.GetVal(a.FailOnWarnings),
 		CorsConfiguration:         corsConfigData,
 	}
 
diff --git a/pkg/mapper/iac-providers/cft/config/api-gatewayv2-stage.go b/pkg/mapper/iac-providers/cft/config/api-gatewayv2-stage.go
index 010df68dd..4718a1656 100644
--- a/pkg/mapper/iac-providers/cft/config/api-gatewayv2-stage.go
+++ b/pkg/mapper/iac-providers/cft/config/api-gatewayv2-stage.go
@@ -17,7 +17,7 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/apigatewayv2"
+	"github.com/awslabs/goformation/v6/cloudformation/apigatewayv2"
 )
 
 // APIGatewayV2StageConfig holds config for aws_api_gatewayv2_stage
diff --git a/pkg/mapper/iac-providers/cft/config/app-autoscaling-policy.go b/pkg/mapper/iac-providers/cft/config/app-autoscaling-policy.go
index 7f504e222..338aea5c5 100644
--- a/pkg/mapper/iac-providers/cft/config/app-autoscaling-policy.go
+++ b/pkg/mapper/iac-providers/cft/config/app-autoscaling-policy.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/applicationautoscaling"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/applicationautoscaling"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // AppAutoScalingPolicyConfig holds config for AppAutoScalingPolicy
 type AppAutoScalingPolicyConfig struct {
@@ -36,9 +39,9 @@ func GetAppAutoScalingPolicyConfig(a *applicationautoscaling.ScalingPolicy) []AW
 		},
 		Name:              a.PolicyName,
 		PolicyType:        a.PolicyType,
-		ResourceID:        a.ResourceId,
-		ScalableDimension: a.ScalableDimension,
-		ServiceNamespace:  a.ServiceNamespace,
+		ResourceID:        functions.GetVal(a.ResourceId),
+		ScalableDimension: functions.GetVal(a.ScalableDimension),
+		ServiceNamespace:  functions.GetVal(a.ServiceNamespace),
 	}
 
 	return []AWSResourceConfig{{
diff --git a/pkg/mapper/iac-providers/cft/config/appmesh-mesh.go b/pkg/mapper/iac-providers/cft/config/appmesh-mesh.go
index cc656b938..1721e96bc 100644
--- a/pkg/mapper/iac-providers/cft/config/appmesh-mesh.go
+++ b/pkg/mapper/iac-providers/cft/config/appmesh-mesh.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/appmesh"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/appmesh"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // AppMeshEgressFilterBlock holds config for AppMeshEgressFilter
 type AppMeshEgressFilterBlock struct {
@@ -50,10 +53,10 @@ func GetAppMeshMeshConfig(m *appmesh.Mesh) []AWSResourceConfig {
 
 	cf := AppMeshMeshConfig{
 		Config: Config{
-			Name: m.MeshName,
+			Name: functions.GetVal(m.MeshName),
 			Tags: m.Tags,
 		},
-		Name: m.MeshName,
+		Name: functions.GetVal(m.MeshName),
 		Spec: spec,
 	}
 
diff --git a/pkg/mapper/iac-providers/cft/config/athena-workgroup.go b/pkg/mapper/iac-providers/cft/config/athena-workgroup.go
index 2388c2cf0..192f262c6 100644
--- a/pkg/mapper/iac-providers/cft/config/athena-workgroup.go
+++ b/pkg/mapper/iac-providers/cft/config/athena-workgroup.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/athena"
+	"github.com/awslabs/goformation/v6/cloudformation/athena"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // EncryptionConfigurationBlock holds config for encryption_configuration attribute
@@ -61,25 +62,25 @@ func GetAthenaWorkGroupConfig(w *athena.WorkGroup) []AWSResourceConfig {
 	if w.WorkGroupConfiguration != nil {
 		workGroupConfig = make([]WorkgroupConfigurationBlock, 1)
 
-		workGroupConfig[0].BytesScannedCutoffPerQuery = w.WorkGroupConfiguration.BytesScannedCutoffPerQuery
-		workGroupConfig[0].EnforceWorkgroupConfiguration = w.WorkGroupConfiguration.EnforceWorkGroupConfiguration
-		workGroupConfig[0].RequesterPaysEnabled = w.WorkGroupConfiguration.RequesterPaysEnabled
-		workGroupConfig[0].PublishCloudwatchMetricsEnabled = w.WorkGroupConfiguration.PublishCloudWatchMetricsEnabled
+		workGroupConfig[0].BytesScannedCutoffPerQuery = functions.GetVal(w.WorkGroupConfiguration.BytesScannedCutoffPerQuery)
+		workGroupConfig[0].EnforceWorkgroupConfiguration = functions.GetVal(w.WorkGroupConfiguration.EnforceWorkGroupConfiguration)
+		workGroupConfig[0].RequesterPaysEnabled = functions.GetVal(w.WorkGroupConfiguration.RequesterPaysEnabled)
+		workGroupConfig[0].PublishCloudwatchMetricsEnabled = functions.GetVal(w.WorkGroupConfiguration.PublishCloudWatchMetricsEnabled)
 
 		if w.WorkGroupConfiguration.EngineVersion != nil {
 			engineConfig := make([]EnginerVersionBlock, 1)
-			engineConfig[0].SelectedEngineVersion = w.WorkGroupConfiguration.EngineVersion.SelectedEngineVersion
+			engineConfig[0].SelectedEngineVersion = functions.GetVal(w.WorkGroupConfiguration.EngineVersion.SelectedEngineVersion)
 			workGroupConfig[0].EngineVersion = engineConfig
 		}
 
 		if w.WorkGroupConfiguration.ResultConfiguration != nil {
 			resultConfig := make([]ResultConfigurationBlock, 1)
-			resultConfig[0].OutputLocation = w.WorkGroupConfiguration.ResultConfiguration.OutputLocation
+			resultConfig[0].OutputLocation = functions.GetVal(w.WorkGroupConfiguration.ResultConfiguration.OutputLocation)
 
 			if w.WorkGroupConfiguration.ResultConfiguration.EncryptionConfiguration != nil {
 				encryptionCofig := make([]EncryptionConfigurationBlock, 1)
 				encryptionCofig[0].EncryptionOption = w.WorkGroupConfiguration.ResultConfiguration.EncryptionConfiguration.EncryptionOption
-				encryptionCofig[0].KmsKeyArn = w.WorkGroupConfiguration.ResultConfiguration.EncryptionConfiguration.KmsKey
+				encryptionCofig[0].KmsKeyArn = functions.GetVal(w.WorkGroupConfiguration.ResultConfiguration.EncryptionConfiguration.KmsKey)
 
 				resultConfig[0].EncryptionConfiguration = encryptionCofig
 			}
diff --git a/pkg/mapper/iac-providers/cft/config/autoscaling-launch-configuration.go b/pkg/mapper/iac-providers/cft/config/autoscaling-launch-configuration.go
index e2040ff4c..5cf2f58f7 100644
--- a/pkg/mapper/iac-providers/cft/config/autoscaling-launch-configuration.go
+++ b/pkg/mapper/iac-providers/cft/config/autoscaling-launch-configuration.go
@@ -20,7 +20,8 @@ import (
 	"encoding/base64"
 	"unicode"
 
-	"github.com/awslabs/goformation/v5/cloudformation/autoscaling"
+	"github.com/awslabs/goformation/v6/cloudformation/autoscaling"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // EbsBlockDeviceBlock holds config for EbsBlockDevice
@@ -48,38 +49,41 @@ type AutoScalingLaunchConfigurationConfig struct {
 
 // GetAutoScalingLaunchConfigurationConfig returns config for AutoScalingLaunchConfiguration
 func GetAutoScalingLaunchConfigurationConfig(l *autoscaling.LaunchConfiguration) []AWSResourceConfig {
-	ebsBlockDevice := make([]EbsBlockDeviceBlock, len(l.BlockDeviceMappings))
-
-	for i := range l.BlockDeviceMappings {
-		if l.BlockDeviceMappings[i].Ebs != nil {
-			ebsBlockDevice[i].Encrypted = l.BlockDeviceMappings[i].Ebs.Encrypted
-			ebsBlockDevice[i].DeleteOnTermination = l.BlockDeviceMappings[i].Ebs.DeleteOnTermination
+	var ebsBlockDevice []EbsBlockDeviceBlock
+	if l.BlockDeviceMappings != nil {
+		blockDeviceMappingLen := len(functions.GetVal(l.BlockDeviceMappings))
+		ebsBlockDevice = make([]EbsBlockDeviceBlock, blockDeviceMappingLen)
+		for i, blockDeviceMapping := range functions.GetVal(l.BlockDeviceMappings) {
+			if blockDeviceMapping.Ebs != nil {
+				ebsBlockDevice[i].Encrypted = functions.GetVal(blockDeviceMapping.Ebs.Encrypted)
+				ebsBlockDevice[i].DeleteOnTermination = functions.GetVal(blockDeviceMapping.Ebs.DeleteOnTermination)
+			}
+			ebsBlockDevice[i].DeviceName = blockDeviceMapping.DeviceName
 		}
-		ebsBlockDevice[i].DeviceName = l.BlockDeviceMappings[i].DeviceName
 	}
 
 	var metadataOptions MetadataOptionsBlock
 	if l.MetadataOptions != nil {
-		metadataOptions.HTTPEndpoint = l.MetadataOptions.HttpEndpoint
-		metadataOptions.HTTPTokens = l.MetadataOptions.HttpTokens
+		metadataOptions.HTTPEndpoint = functions.GetVal(l.MetadataOptions.HttpEndpoint)
+		metadataOptions.HTTPTokens = functions.GetVal(l.MetadataOptions.HttpTokens)
 	}
 
 	cf := AutoScalingLaunchConfigurationConfig{
 		Config: Config{
-			Name: l.LaunchConfigurationName,
+			Name: functions.GetVal(l.LaunchConfigurationName),
 		},
-		EnableMonitoring: l.InstanceMonitoring,
+		EnableMonitoring: functions.GetVal(l.InstanceMonitoring),
 		MetadataOptions:  metadataOptions,
 		EbsBlockDevice:   ebsBlockDevice,
 	}
 
-	data, err := base64.StdEncoding.Strict().DecodeString(l.UserData)
+	data, err := base64.StdEncoding.Strict().DecodeString(functions.GetVal(l.UserData))
 	datastr := string(data)
 
 	if isASCII(datastr) && err == nil {
-		cf.UserDataBase64 = l.UserData
+		cf.UserDataBase64 = datastr
 	} else {
-		cf.UserData = l.UserData
+		cf.UserData = datastr
 	}
 
 	return []AWSResourceConfig{{
diff --git a/pkg/mapper/iac-providers/cft/config/backup-vault.go b/pkg/mapper/iac-providers/cft/config/backup-vault.go
index 7a4e7aa0f..134b6371d 100644
--- a/pkg/mapper/iac-providers/cft/config/backup-vault.go
+++ b/pkg/mapper/iac-providers/cft/config/backup-vault.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/backup"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/backup"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // BackupVaultConfig holds config for BackupVault
 type BackupVaultConfig struct {
@@ -33,7 +36,7 @@ func GetBackupVaultConfig(b *backup.BackupVault) []AWSResourceConfig {
 			Tags: b.BackupVaultTags,
 		},
 		Name:      b.BackupVaultName,
-		KMSKeyARN: b.EncryptionKeyArn,
+		KMSKeyARN: functions.GetVal(b.EncryptionKeyArn),
 	}
 
 	return []AWSResourceConfig{{
diff --git a/pkg/mapper/iac-providers/cft/config/certificatemanager-certificate.go b/pkg/mapper/iac-providers/cft/config/certificatemanager-certificate.go
index 9a3e0593a..a8d990234 100644
--- a/pkg/mapper/iac-providers/cft/config/certificatemanager-certificate.go
+++ b/pkg/mapper/iac-providers/cft/config/certificatemanager-certificate.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/certificatemanager"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/certificatemanager"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // CertificateManagerCertificateConfig holds config for CertificateManagerCertificate
 type CertificateManagerCertificateConfig struct {
@@ -32,7 +35,7 @@ func GetCertificateManagerCertificateConfig(c *certificatemanager.Certificate) [
 			Tags: c.Tags,
 		},
 		DomainName:       c.DomainName,
-		ValidationMethod: c.ValidationMethod,
+		ValidationMethod: functions.GetVal(c.ValidationMethod),
 	}
 
 	return []AWSResourceConfig{{
diff --git a/pkg/mapper/iac-providers/cft/config/cloudformation-stack.go b/pkg/mapper/iac-providers/cft/config/cloudformation-stack.go
index f1d886a78..288fca311 100644
--- a/pkg/mapper/iac-providers/cft/config/cloudformation-stack.go
+++ b/pkg/mapper/iac-providers/cft/config/cloudformation-stack.go
@@ -17,7 +17,7 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/cloudformation"
+	"github.com/awslabs/goformation/v6/cloudformation/cloudformation"
 	fn "github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
@@ -39,7 +39,7 @@ func GetCloudFormationStackConfig(s *cloudformation.Stack) []AWSResourceConfig {
 		TemplateData:     []byte{},
 	}
 
-	if len(s.NotificationARNs) > 0 {
+	if s.NotificationARNs != nil {
 		cf.NotificationARNs = s.NotificationARNs
 	}
 
@@ -55,7 +55,7 @@ func GetCloudFormationStackConfig(s *cloudformation.Stack) []AWSResourceConfig {
 
 	// Add Parameters for propogation to the nested Stack
 	if s.Parameters != nil {
-		cf.Parameters = s.Parameters
+		cf.Parameters = *s.Parameters
 	}
 
 	return []AWSResourceConfig{{
diff --git a/pkg/mapper/iac-providers/cft/config/cloudfront-distribution.go b/pkg/mapper/iac-providers/cft/config/cloudfront-distribution.go
index 5510e0101..438f3fb32 100644
--- a/pkg/mapper/iac-providers/cft/config/cloudfront-distribution.go
+++ b/pkg/mapper/iac-providers/cft/config/cloudfront-distribution.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/cloudfront"
+	"github.com/awslabs/goformation/v6/cloudformation/cloudfront"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // CloudFrontDistributionConfig holds config for aws_cloudfront_distribution
@@ -37,20 +38,19 @@ func GetCloudFrontDistributionConfig(d *cloudfront.Distribution) []AWSResourceCo
 			Tags: d.Tags,
 		},
 	}
-	if d.DistributionConfig != nil &&
-		d.DistributionConfig.Restrictions != nil &&
-		d.DistributionConfig.Restrictions.GeoRestriction != nil &&
-		len(d.DistributionConfig.Restrictions.GeoRestriction.RestrictionType) > 0 {
+	if checkDistributionConfig(d.DistributionConfig) {
 		restrictions := make([]map[string]interface{}, 0)
 		restriction := make(map[string]interface{})
 		geoRestrictions := make([]map[string]interface{}, 0)
 		geoRestriction := make(map[string]interface{})
+
 		geoRestriction["restriction_type"] = d.DistributionConfig.Restrictions.GeoRestriction.RestrictionType
-		if len(d.DistributionConfig.Restrictions.GeoRestriction.Locations) > 0 {
+		if (d.DistributionConfig.Restrictions.GeoRestriction.Locations) != nil {
 			geoRestriction["locations"] = d.DistributionConfig.Restrictions.GeoRestriction.Locations
 		}
 		geoRestrictions = append(geoRestrictions, geoRestriction)
 		restriction["geo_restriction"] = geoRestrictions
+
 		restrictions = append(restrictions, restriction)
 		if len(restrictions) > 0 {
 			cf.Restrictions = restrictions
@@ -58,9 +58,9 @@ func GetCloudFrontDistributionConfig(d *cloudfront.Distribution) []AWSResourceCo
 	}
 	if d.DistributionConfig.CacheBehaviors != nil {
 		orderedCacheBehaviors := make([]map[string]interface{}, 0)
-		for i := range d.DistributionConfig.CacheBehaviors {
+		for _, cacheBehaviour := range *d.DistributionConfig.CacheBehaviors {
 			orderedCacheBehavior := make(map[string]interface{})
-			orderedCacheBehavior["viewer_protocol_policy"] = d.DistributionConfig.CacheBehaviors[i].ViewerProtocolPolicy
+			orderedCacheBehavior["viewer_protocol_policy"] = cacheBehaviour.ViewerProtocolPolicy
 			orderedCacheBehaviors = append(orderedCacheBehaviors, orderedCacheBehavior)
 		}
 		if len(orderedCacheBehaviors) > 0 {
@@ -84,10 +84,17 @@ func GetCloudFrontDistributionConfig(d *cloudfront.Distribution) []AWSResourceCo
 			cf.ViewerCertificate = viewerCertificates
 		}
 	}
-	cf.WebACLId = d.DistributionConfig.WebACLId
+	cf.WebACLId = functions.GetVal(d.DistributionConfig.WebACLId)
 
 	return []AWSResourceConfig{{
 		Resource: cf,
 		Metadata: d.AWSCloudFormationMetadata,
 	}}
 }
+
+func checkDistributionConfig(distributionConfig *cloudfront.Distribution_DistributionConfig) bool {
+	return distributionConfig != nil &&
+		distributionConfig.Restrictions != nil &&
+		distributionConfig.Restrictions.GeoRestriction != nil &&
+		len(distributionConfig.Restrictions.GeoRestriction.RestrictionType) > 0
+}
diff --git a/pkg/mapper/iac-providers/cft/config/cloudtrail.go b/pkg/mapper/iac-providers/cft/config/cloudtrail.go
index 229e84e32..afa9e61f7 100644
--- a/pkg/mapper/iac-providers/cft/config/cloudtrail.go
+++ b/pkg/mapper/iac-providers/cft/config/cloudtrail.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/cloudtrail"
+	"github.com/awslabs/goformation/v6/cloudformation/cloudtrail"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // CloudTrailConfig holds config for aws_cloudtrail
@@ -32,16 +33,11 @@ type CloudTrailConfig struct {
 // GetCloudTrailConfig returns config for aws_cloudtrail
 func GetCloudTrailConfig(t *cloudtrail.Trail) []AWSResourceConfig {
 	cf := CloudTrailConfig{
-		Config:                  Config{Tags: t.Tags, Name: t.TrailName},
+		Config:                  Config{Tags: t.Tags, Name: functions.GetVal(t.TrailName)},
 		EnableLogFileValidation: t.EnableLogFileValidation,
 		IsMultiRegionTrail:      t.IsMultiRegionTrail,
 	}
-	if len(t.KMSKeyId) > 0 {
-		cf.KmsKeyID = t.KMSKeyId
-	}
-	if len(t.SnsTopicName) > 0 {
-		cf.SnsTopicName = t.SnsTopicName
-	}
-
+	cf.KmsKeyID = functions.GetVal(t.KMSKeyId)
+	cf.SnsTopicName = functions.GetVal(t.SnsTopicName)
 	return []AWSResourceConfig{{Resource: cf, Metadata: t.AWSCloudFormationMetadata}}
 }
diff --git a/pkg/mapper/iac-providers/cft/config/cloudwatch-log-group.go b/pkg/mapper/iac-providers/cft/config/cloudwatch-log-group.go
index fdb6f0e18..f6b408d1b 100644
--- a/pkg/mapper/iac-providers/cft/config/cloudwatch-log-group.go
+++ b/pkg/mapper/iac-providers/cft/config/cloudwatch-log-group.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/logs"
+	"github.com/awslabs/goformation/v6/cloudformation/logs"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // LogCloudWatchGroupConfig holds config for aws_cloudwatch_log_group
@@ -32,11 +33,11 @@ type LogCloudWatchGroupConfig struct {
 func GetLogCloudWatchGroupConfig(r *logs.LogGroup) []AWSResourceConfig {
 	cf := LogCloudWatchGroupConfig{
 		Config: Config{
-			Name: r.LogGroupName,
+			Name: functions.GetVal(r.LogGroupName),
 		},
-		LogGroupName:    r.LogGroupName,
-		KmsKeyID:        r.KmsKeyId,
-		RetentionInDays: r.RetentionInDays,
+		LogGroupName:    functions.GetVal(r.LogGroupName),
+		KmsKeyID:        functions.GetVal(r.KmsKeyId),
+		RetentionInDays: functions.GetVal(r.RetentionInDays),
 	}
 	return []AWSResourceConfig{{
 		Resource: cf,
diff --git a/pkg/mapper/iac-providers/cft/config/codebuild-project.go b/pkg/mapper/iac-providers/cft/config/codebuild-project.go
index 41c8eadd1..6e63d949d 100644
--- a/pkg/mapper/iac-providers/cft/config/codebuild-project.go
+++ b/pkg/mapper/iac-providers/cft/config/codebuild-project.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/codebuild"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/codebuild"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // ArtifactBlock holds config for ArtifactBlock
 type ArtifactBlock struct {
@@ -74,7 +77,7 @@ func GetCodebuildProjectConfig(p *codebuild.Project) []AWSResourceConfig {
 		cacheBlock = make([]CacheBlock, 1)
 
 		cacheBlock[0].Type = p.Cache.Type
-		cacheBlock[0].Modes = p.Cache.Modes
+		cacheBlock[0].Modes = *p.Cache.Modes
 	}
 
 	var environmentBlock []CodebuildEnvironmentBlock
@@ -84,7 +87,7 @@ func GetCodebuildProjectConfig(p *codebuild.Project) []AWSResourceConfig {
 		environmentBlock[0].ComputeType = p.Environment.ComputeType
 		environmentBlock[0].Image = p.Environment.Image
 		environmentBlock[0].Type = p.Environment.Type
-		environmentBlock[0].ImagePullCredentialsType = p.Environment.ImagePullCredentialsType
+		environmentBlock[0].ImagePullCredentialsType = functions.GetVal(p.Environment.ImagePullCredentialsType)
 	}
 
 	var sourceBlock []SourceBlock
@@ -92,20 +95,20 @@ func GetCodebuildProjectConfig(p *codebuild.Project) []AWSResourceConfig {
 		sourceBlock = make([]SourceBlock, 1)
 
 		sourceBlock[0].Type = p.Source.Type
-		sourceBlock[0].Location = p.Source.Location
-		sourceBlock[0].GitCloneDepth = p.Source.GitCloneDepth
+		sourceBlock[0].Location = functions.GetVal(p.Source.Location)
+		sourceBlock[0].GitCloneDepth = functions.GetVal(p.Source.GitCloneDepth)
 	}
 
 	cf := CodebuildProjectConfig{
 		Config: Config{
-			Name: p.Name,
+			Name: functions.GetVal(p.Name),
 		},
-		Name:          p.Name,
-		Description:   p.Description,
-		BuildTimeout:  p.TimeoutInMinutes,
-		QueuedTimeout: p.QueuedTimeoutInMinutes,
+		Name:          functions.GetVal(p.Name),
+		Description:   functions.GetVal(p.Description),
+		BuildTimeout:  functions.GetVal(p.TimeoutInMinutes),
+		QueuedTimeout: functions.GetVal(p.QueuedTimeoutInMinutes),
 		ServiceRole:   p.ServiceRole,
-		EncryptionKey: p.EncryptionKey,
+		EncryptionKey: functions.GetVal(p.EncryptionKey),
 		Artifacts:     artifactBlock,
 		Cache:         cacheBlock,
 		Environment:   environmentBlock,
diff --git a/pkg/mapper/iac-providers/cft/config/cognito-user-pool.go b/pkg/mapper/iac-providers/cft/config/cognito-user-pool.go
index 48f0b8852..66390490d 100644
--- a/pkg/mapper/iac-providers/cft/config/cognito-user-pool.go
+++ b/pkg/mapper/iac-providers/cft/config/cognito-user-pool.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/cognito"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/cognito"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // PasswordPolicyBlock holds config for PasswordPolicy
 type PasswordPolicyBlock struct {
@@ -41,19 +44,19 @@ func GetCognitoUserPoolConfig(u *cognito.UserPool) []AWSResourceConfig {
 	if u.Policies != nil && u.Policies.PasswordPolicy != nil {
 		passwordPolicy = make([]PasswordPolicyBlock, 1)
 
-		passwordPolicy[0].MinimumLength = u.Policies.PasswordPolicy.MinimumLength
-		passwordPolicy[0].RequireLowercase = u.Policies.PasswordPolicy.RequireLowercase
-		passwordPolicy[0].RequireUppercase = u.Policies.PasswordPolicy.RequireUppercase
-		passwordPolicy[0].RequireNumbers = u.Policies.PasswordPolicy.RequireNumbers
-		passwordPolicy[0].RequireSymbols = u.Policies.PasswordPolicy.RequireSymbols
-		passwordPolicy[0].TemporaryPasswordValidityDays = u.Policies.PasswordPolicy.TemporaryPasswordValidityDays
+		passwordPolicy[0].MinimumLength = functions.GetVal(u.Policies.PasswordPolicy.MinimumLength)
+		passwordPolicy[0].RequireLowercase = functions.GetVal(u.Policies.PasswordPolicy.RequireLowercase)
+		passwordPolicy[0].RequireUppercase = functions.GetVal(u.Policies.PasswordPolicy.RequireUppercase)
+		passwordPolicy[0].RequireNumbers = functions.GetVal(u.Policies.PasswordPolicy.RequireNumbers)
+		passwordPolicy[0].RequireSymbols = functions.GetVal(u.Policies.PasswordPolicy.RequireSymbols)
+		passwordPolicy[0].TemporaryPasswordValidityDays = functions.GetVal(u.Policies.PasswordPolicy.TemporaryPasswordValidityDays)
 	}
 
 	cf := CognitoUserPoolConfig{
 		Config: Config{
-			Name: u.UserPoolName,
+			Name: functions.GetVal(u.UserPoolName),
 		},
-		Name:           u.UserPoolName,
+		Name:           functions.GetVal(u.UserPoolName),
 		PasswordPolicy: passwordPolicy,
 	}
 
diff --git a/pkg/mapper/iac-providers/cft/config/config-configrule.go b/pkg/mapper/iac-providers/cft/config/config-configrule.go
index 1147f4473..df9f2b2cb 100644
--- a/pkg/mapper/iac-providers/cft/config/config-configrule.go
+++ b/pkg/mapper/iac-providers/cft/config/config-configrule.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/config"
+	"github.com/awslabs/goformation/v6/cloudformation/config"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // AWSConfigConfigRuleConfig holds config for aws_config_config_rule
@@ -30,13 +31,13 @@ type AWSConfigConfigRuleConfig struct {
 func GetConfigConfigRuleConfig(c *config.ConfigRule) []AWSResourceConfig {
 	cf := AWSConfigConfigRuleConfig{
 		Config: Config{
-			Name: c.ConfigRuleName,
+			Name: functions.GetVal(c.ConfigRuleName),
 		},
 	}
 	if c.Source != nil {
 		sources := make([]map[string]interface{}, 0)
 		source := make(map[string]interface{})
-		source["source_identifier"] = c.Source.SourceIdentifier
+		source["source_identifier"] = functions.GetVal(c.Source.SourceIdentifier)
 		sources = append(sources, source)
 		if len(sources) > 0 {
 			cf.Source = sources
diff --git a/pkg/mapper/iac-providers/cft/config/config-configurationaggregator.go b/pkg/mapper/iac-providers/cft/config/config-configurationaggregator.go
index beca0c5b0..23f4a467b 100644
--- a/pkg/mapper/iac-providers/cft/config/config-configurationaggregator.go
+++ b/pkg/mapper/iac-providers/cft/config/config-configurationaggregator.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/config"
+	"github.com/awslabs/goformation/v6/cloudformation/config"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // ConfigurationAggregatorConfig holds config for aws_config_configuration_aggregator
@@ -32,14 +33,14 @@ func GetConfigConfigurationAggregatorConfig(c *config.ConfigurationAggregator) [
 	cf := ConfigurationAggregatorConfig{
 		Config: Config{
 			Tags: c.Tags,
-			Name: c.ConfigurationAggregatorName,
+			Name: functions.GetVal(c.ConfigurationAggregatorName),
 		},
 	}
 	if c.AccountAggregationSources != nil {
 		accountAggregationSources := make([]map[string]interface{}, 0)
-		for i := range c.AccountAggregationSources {
+		for _, agsource := range functions.GetVal(c.AccountAggregationSources) {
 			accountAggregationSource := make(map[string]interface{})
-			accountAggregationSource["all_regions"] = c.AccountAggregationSources[i].AllAwsRegions
+			accountAggregationSource["all_regions"] = functions.GetVal(agsource.AllAwsRegions)
 			accountAggregationSources = append(accountAggregationSources, accountAggregationSource)
 		}
 		if len(accountAggregationSources) > 0 {
@@ -49,7 +50,7 @@ func GetConfigConfigurationAggregatorConfig(c *config.ConfigurationAggregator) [
 	if c.OrganizationAggregationSource != nil {
 		organizationAggregationSources := make([]map[string]interface{}, 0)
 		organizationAggregationSource := make(map[string]interface{})
-		organizationAggregationSource["all_regions"] = c.OrganizationAggregationSource.AllAwsRegions
+		organizationAggregationSource["all_regions"] = functions.GetVal(c.OrganizationAggregationSource.AllAwsRegions)
 		organizationAggregationSources = append(organizationAggregationSources, organizationAggregationSource)
 		if len(organizationAggregationSources) > 0 {
 			cf.OrgAggregationSource = organizationAggregationSources
diff --git a/pkg/mapper/iac-providers/cft/config/dax-cluster.go b/pkg/mapper/iac-providers/cft/config/dax-cluster.go
index 090ae7fae..b6f04b24c 100644
--- a/pkg/mapper/iac-providers/cft/config/dax-cluster.go
+++ b/pkg/mapper/iac-providers/cft/config/dax-cluster.go
@@ -17,13 +17,14 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/dax"
+	"github.com/awslabs/goformation/v6/cloudformation/dax"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // DaxClusterConfig holds config for aws_dax_cluster
 type DaxClusterConfig struct {
 	Config
-	ServerSideEncryption []map[string]interface{} `json:"server_side_encryption"`
+	ServerSideEncryption []SSE `json:"server_side_encryption"`
 }
 
 // GetDaxClusterConfig returns config for aws_dax_cluster
@@ -31,14 +32,16 @@ func GetDaxClusterConfig(t *dax.Cluster) []AWSResourceConfig {
 	cf := DaxClusterConfig{
 		Config: Config{
 			Tags: t.Tags,
-			Name: t.ClusterName,
+			Name: functions.GetVal(t.ClusterName),
 		},
 	}
-	sse := make(map[string]interface{})
+
 	if t.SSESpecification != nil {
-		sse["enabled"] = t.SSESpecification.SSEEnabled
+		cf.ServerSideEncryption = make([]SSE, 1)
+
+		cf.ServerSideEncryption[0].Enabled = functions.GetVal(t.SSESpecification.SSEEnabled)
 	}
-	cf.ServerSideEncryption = []map[string]interface{}{sse}
+
 	return []AWSResourceConfig{{
 		Resource: cf,
 		Metadata: t.AWSCloudFormationMetadata,
diff --git a/pkg/mapper/iac-providers/cft/config/db-event-subscription.go b/pkg/mapper/iac-providers/cft/config/db-event-subscription.go
index fc8cd542b..5e5a61daf 100644
--- a/pkg/mapper/iac-providers/cft/config/db-event-subscription.go
+++ b/pkg/mapper/iac-providers/cft/config/db-event-subscription.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/rds"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/rds"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // DBEventSubscriptionConfig holds config for aws_db_event_subscription resource
 type DBEventSubscriptionConfig struct {
@@ -30,19 +33,17 @@ type DBEventSubscriptionConfig struct {
 
 // GetDBEventSubscriptionConfig returns config for aws_db_event_subscription resource
 func GetDBEventSubscriptionConfig(d *rds.EventSubscription) []AWSResourceConfig {
-
 	cf := DBEventSubscriptionConfig{
 		Config:          Config{},
 		SnsTopicArn:     d.SnsTopicArn,
-		Enabled:         d.Enabled,
-		EventCategories: d.EventCategories,
-		SourceIds:       d.SourceIds,
-		SourceType:      d.SourceType,
+		Enabled:         functions.GetVal(d.Enabled),
+		EventCategories: functions.GetVal(d.EventCategories),
+		SourceIds:       functions.GetVal(d.SourceIds),
+		SourceType:      functions.GetVal(d.SourceType),
 	}
 
 	return []AWSResourceConfig{{
 		Resource: cf,
 		Metadata: d.AWSCloudFormationMetadata,
 	}}
-
 }
diff --git a/pkg/mapper/iac-providers/cft/config/db-instance.go b/pkg/mapper/iac-providers/cft/config/db-instance.go
index e4e040544..a814c02b3 100644
--- a/pkg/mapper/iac-providers/cft/config/db-instance.go
+++ b/pkg/mapper/iac-providers/cft/config/db-instance.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/rds"
+	"github.com/awslabs/goformation/v6/cloudformation/rds"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // DBInstanceConfig holds config for aws_db_instance
@@ -37,15 +38,15 @@ func GetDBInstanceConfig(d *rds.DBInstance) []AWSResourceConfig {
 	cf := DBInstanceConfig{
 		Config: Config{
 			Tags: d.Tags,
-			Name: d.DBName,
+			Name: functions.GetVal(d.DBName),
 		},
-		EnabledCloudWatchLogsExports: d.EnableCloudwatchLogsExports,
-		AutoMinorVersionUpgrade:      d.AutoMinorVersionUpgrade,
-		StorageEncrypted:             d.StorageEncrypted,
-		KmsKeyID:                     d.KmsKeyId,
-		CaCertIdentifier:             d.CACertificateIdentifier,
-		IamDBAuthEnabled:             d.EnableIAMDatabaseAuthentication,
-		PubliclyAccessible:           d.PubliclyAccessible,
+		EnabledCloudWatchLogsExports: functions.GetVal(d.EnableCloudwatchLogsExports),
+		AutoMinorVersionUpgrade:      functions.GetVal(d.AutoMinorVersionUpgrade),
+		StorageEncrypted:             functions.GetVal(d.StorageEncrypted),
+		KmsKeyID:                     functions.GetVal(d.KmsKeyId),
+		CaCertIdentifier:             functions.GetVal(d.CACertificateIdentifier),
+		IamDBAuthEnabled:             functions.GetVal(d.EnableIAMDatabaseAuthentication),
+		PubliclyAccessible:           functions.GetVal(d.PubliclyAccessible),
 	}
 	return []AWSResourceConfig{{
 		Resource: cf,
diff --git a/pkg/mapper/iac-providers/cft/config/db-security-group.go b/pkg/mapper/iac-providers/cft/config/db-security-group.go
index 6126ee43c..680dc5220 100644
--- a/pkg/mapper/iac-providers/cft/config/db-security-group.go
+++ b/pkg/mapper/iac-providers/cft/config/db-security-group.go
@@ -17,13 +17,20 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/rds"
+	"github.com/awslabs/goformation/v6/cloudformation/rds"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
+// DBIngress holds config for ingress block
+type DBIngress struct {
+	CIDR              string `json:"cidr"`
+	SecurityGroupName string `json:"security_group_name"`
+}
+
 // DBSecurityGroupConfig holds config for aws_db_security_group
 type DBSecurityGroupConfig struct {
 	Config
-	Ingress []map[string]interface{} `json:"ingress"`
+	Ingress []DBIngress `json:"ingress"`
 }
 
 // GetDBSecurityGroupConfig returns config for aws_db_security_group
@@ -33,11 +40,15 @@ func GetDBSecurityGroupConfig(dbsg *rds.DBSecurityGroup) []AWSResourceConfig {
 			Tags: dbsg.Tags,
 		},
 	}
-	for _, dbsgi := range dbsg.DBSecurityGroupIngress {
-		i := make(map[string]interface{})
-		i["cidr"] = dbsgi.CIDRIP
-		cf.Ingress = append(cf.Ingress, i)
+
+	if dbsg.DBSecurityGroupIngress != nil {
+		cf.Ingress = make([]DBIngress, len(dbsg.DBSecurityGroupIngress))
+		for i, dbsgi := range dbsg.DBSecurityGroupIngress {
+			cf.Ingress[i].CIDR = functions.GetVal(dbsgi.CIDRIP)
+			cf.Ingress[i].SecurityGroupName = functions.GetVal(dbsgi.EC2SecurityGroupName)
+		}
 	}
+
 	return []AWSResourceConfig{{
 		Resource: cf,
 		Metadata: dbsg.AWSCloudFormationMetadata,
diff --git a/pkg/mapper/iac-providers/cft/config/dms-replication-instance.go b/pkg/mapper/iac-providers/cft/config/dms-replication-instance.go
index 4f9b58e95..23f369622 100644
--- a/pkg/mapper/iac-providers/cft/config/dms-replication-instance.go
+++ b/pkg/mapper/iac-providers/cft/config/dms-replication-instance.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/dms"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/dms"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // DmsReplicationInstanceConfig holds config for DmsReplicationInstance
 type DmsReplicationInstanceConfig struct {
@@ -42,18 +45,18 @@ func GetDmsReplicationInstanceConfig(r *dms.ReplicationInstance) []AWSResourceCo
 			Tags: r.Tags,
 		},
 
-		AlocatedStorage:            r.AllocatedStorage,
-		AutoMinorVersionUpgrade:    r.AutoMinorVersionUpgrade,
-		AvailabilityZone:           r.AvailabilityZone,
-		EngineVersion:              r.EngineVersion,
-		KMSKeyARN:                  r.KmsKeyId,
-		MultiAZ:                    r.MultiAZ,
-		PreferredMaintenanceWindow: r.PreferredMaintenanceWindow,
-		PubliclyAccessible:         r.PubliclyAccessible,
+		AlocatedStorage:            functions.GetVal(r.AllocatedStorage),
+		AutoMinorVersionUpgrade:    functions.GetVal(r.AutoMinorVersionUpgrade),
+		AvailabilityZone:           functions.GetVal(r.AvailabilityZone),
+		EngineVersion:              functions.GetVal(r.EngineVersion),
+		KMSKeyARN:                  functions.GetVal(r.KmsKeyId),
+		MultiAZ:                    functions.GetVal(r.MultiAZ),
+		PreferredMaintenanceWindow: functions.GetVal(r.PreferredMaintenanceWindow),
+		PubliclyAccessible:         functions.GetVal(r.PubliclyAccessible),
 		ReplicationInstanceClass:   r.ReplicationInstanceClass,
-		ReplicationInstanceID:      r.ReplicationInstanceIdentifier,
-		ReplicationSubnetGroupID:   r.ReplicationSubnetGroupIdentifier,
-		VPCSecurityGroupIDs:        r.VpcSecurityGroupIds,
+		ReplicationInstanceID:      functions.GetVal(r.ReplicationInstanceIdentifier),
+		ReplicationSubnetGroupID:   functions.GetVal(r.ReplicationSubnetGroupIdentifier),
+		VPCSecurityGroupIDs:        functions.GetVal(r.VpcSecurityGroupIds),
 	}
 
 	return []AWSResourceConfig{{
diff --git a/pkg/mapper/iac-providers/cft/config/docdb-cluster.go b/pkg/mapper/iac-providers/cft/config/docdb-cluster.go
index 28d00a73b..0245ccc75 100644
--- a/pkg/mapper/iac-providers/cft/config/docdb-cluster.go
+++ b/pkg/mapper/iac-providers/cft/config/docdb-cluster.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/docdb"
+	"github.com/awslabs/goformation/v6/cloudformation/docdb"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // DocDBClusterConfig holds config for aws_docdb_cluster
@@ -34,9 +35,9 @@ func GetDocDBConfig(d *docdb.DBCluster) []AWSResourceConfig {
 		Config: Config{
 			Tags: d.Tags,
 		},
-		KmsKeyID:                    d.KmsKeyId,
-		StorageEncrypted:            d.StorageEncrypted,
-		EnableCloudwatchLogsExports: d.EnableCloudwatchLogsExports,
+		KmsKeyID:                    functions.GetVal(d.KmsKeyId),
+		StorageEncrypted:            functions.GetVal(d.StorageEncrypted),
+		EnableCloudwatchLogsExports: functions.GetVal(d.EnableCloudwatchLogsExports),
 	}
 	return []AWSResourceConfig{{
 		Resource: cf,
diff --git a/pkg/mapper/iac-providers/cft/config/dynamodb-table.go b/pkg/mapper/iac-providers/cft/config/dynamodb-table.go
index 03d54e52b..112614f60 100644
--- a/pkg/mapper/iac-providers/cft/config/dynamodb-table.go
+++ b/pkg/mapper/iac-providers/cft/config/dynamodb-table.go
@@ -17,14 +17,25 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/dynamodb"
+	"github.com/awslabs/goformation/v6/cloudformation/dynamodb"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
+// PITR holds config for point_in_time_recovery block
+type PITR struct {
+	Enabled bool `json:"enabled"`
+}
+
+// SSE holds config for server_side_encryption block
+type SSE struct {
+	Enabled bool `json:"enabled"`
+}
+
 // DynamoDBTableConfig holds config for aws_dynamodb_table
 type DynamoDBTableConfig struct {
 	Config
-	ServerSideEncryption []map[string]interface{} `json:"server_side_encryption"`
-	PointInTimeRecovery  []map[string]interface{} `json:"point_in_time_recovery"`
+	ServerSideEncryption []SSE  `json:"server_side_encryption"`
+	PointInTimeRecovery  []PITR `json:"point_in_time_recovery"`
 }
 
 // GetDynamoDBTableConfig returns config for aws_dynamodb_table
@@ -32,21 +43,22 @@ func GetDynamoDBTableConfig(t *dynamodb.Table) []AWSResourceConfig {
 	cf := DynamoDBTableConfig{
 		Config: Config{
 			Tags: t.Tags,
-			Name: t.TableName,
+			Name: functions.GetVal(t.TableName),
 		},
 	}
-	sse := make(map[string]interface{})
-	pitr := make(map[string]interface{})
+
 	if t.SSESpecification != nil {
-		sse["enabled"] = t.SSESpecification.SSEEnabled
+		cf.ServerSideEncryption = make([]SSE, 1)
+
+		cf.ServerSideEncryption[0].Enabled = t.SSESpecification.SSEEnabled
 	}
 
 	if t.PointInTimeRecoverySpecification != nil {
-		pitr["enabled"] = t.PointInTimeRecoverySpecification.PointInTimeRecoveryEnabled
+		cf.PointInTimeRecovery = make([]PITR, 1)
+
+		cf.PointInTimeRecovery[0].Enabled = functions.GetVal(t.PointInTimeRecoverySpecification.PointInTimeRecoveryEnabled)
 	}
 
-	cf.ServerSideEncryption = []map[string]interface{}{sse}
-	cf.PointInTimeRecovery = []map[string]interface{}{pitr}
 	return []AWSResourceConfig{{
 		Resource: cf,
 		Metadata: t.AWSCloudFormationMetadata,
diff --git a/pkg/mapper/iac-providers/cft/config/ebs-volume.go b/pkg/mapper/iac-providers/cft/config/ebs-volume.go
index 029d9133c..7b57a7a5c 100644
--- a/pkg/mapper/iac-providers/cft/config/ebs-volume.go
+++ b/pkg/mapper/iac-providers/cft/config/ebs-volume.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/ec2"
+	"github.com/awslabs/goformation/v6/cloudformation/ec2"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // EbsVolumeConfig holds config for aws_ebs_volume
@@ -33,8 +34,8 @@ func GetEbsVolumeConfig(v *ec2.Volume) []AWSResourceConfig {
 		Config: Config{
 			Tags: v.Tags,
 		},
-		Encrypted: v.Encrypted,
-		KmsKeyID:  v.KmsKeyId,
+		Encrypted: functions.GetVal(v.Encrypted),
+		KmsKeyID:  functions.GetVal(v.KmsKeyId),
 	}
 	return []AWSResourceConfig{{
 		Resource: cf,
diff --git a/pkg/mapper/iac-providers/cft/config/ec2-instance.go b/pkg/mapper/iac-providers/cft/config/ec2-instance.go
index 457e042fc..f9c1abeec 100644
--- a/pkg/mapper/iac-providers/cft/config/ec2-instance.go
+++ b/pkg/mapper/iac-providers/cft/config/ec2-instance.go
@@ -20,7 +20,8 @@ import (
 	"fmt"
 	"strconv"
 
-	"github.com/awslabs/goformation/v5/cloudformation/ec2"
+	"github.com/awslabs/goformation/v6/cloudformation/ec2"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/store"
 )
 
@@ -65,24 +66,26 @@ type EC2InstanceConfig struct {
 
 // GetEC2InstanceConfig returns config for EC2Instance
 func GetEC2InstanceConfig(i *ec2.Instance, instanceName string) []AWSResourceConfig {
-	nics := make([]NetworkInterfaceBlock, len(i.NetworkInterfaces))
-	niconfigs := make([]NetworkInterfaceConfig, len(i.NetworkInterfaces))
-	awsconfig := make([]AWSResourceConfig, len(i.NetworkInterfaces))
+	networkInterfaces := functions.GetVal(i.NetworkInterfaces)
 
-	for index := range i.NetworkInterfaces {
-		nics[index].NetworkInterfaceID = i.NetworkInterfaces[index].NetworkInterfaceId
-		nics[index].DeleteOnTermination = i.NetworkInterfaces[index].DeleteOnTermination
+	nics := make([]NetworkInterfaceBlock, len(networkInterfaces))
+	niconfigs := make([]NetworkInterfaceConfig, len(networkInterfaces))
+	awsconfig := make([]AWSResourceConfig, len(networkInterfaces))
+
+	for index, networkInterface := range networkInterfaces {
+		nics[index].NetworkInterfaceID = functions.GetVal(networkInterface.NetworkInterfaceId)
+		nics[index].DeleteOnTermination = functions.GetVal(networkInterface.DeleteOnTermination)
 		var devindex int
-		devindex, err := strconv.Atoi(i.NetworkInterfaces[index].DeviceIndex)
+		devindex, err := strconv.Atoi(networkInterface.DeviceIndex)
 		if err != nil {
 			devindex = 0
 		}
 		nics[index].DeviceIndex = devindex
 
 		// create aws_network_interface resource on the fly for every network interface used in aws_instance
-		niconfigs[index].SubnetID = i.NetworkInterfaces[index].SubnetId
-		if i.NetworkInterfaces[index].PrivateIpAddress != "" {
-			niconfigs[index].PrivateIPs = []string{i.NetworkInterfaces[index].PrivateIpAddress}
+		niconfigs[index].SubnetID = functions.GetVal(networkInterface.SubnetId)
+		if networkInterface.PrivateIpAddress != nil {
+			niconfigs[index].PrivateIPs = []string{functions.GetVal(networkInterface.PrivateIpAddress)}
 		}
 
 		nicname := fmt.Sprintf("%s%d", instanceName, index)
@@ -102,17 +105,17 @@ func GetEC2InstanceConfig(i *ec2.Instance, instanceName string) []AWSResourceCon
 			Tags: i.Tags,
 			Name: instanceName,
 		},
-		AMI:                 i.ImageId,
-		InstanceType:        i.InstanceType,
-		EBSOptimized:        i.EbsOptimized,
-		Monitoring:          i.Monitoring,
-		IAMInstanceProfile:  i.IamInstanceProfile,
-		VPCSecurityGroupIDs: i.SecurityGroupIds,
+		AMI:                 functions.GetVal(i.ImageId),
+		InstanceType:        functions.GetVal(i.InstanceType),
+		EBSOptimized:        functions.GetVal(i.EbsOptimized),
+		Monitoring:          functions.GetVal(i.Monitoring),
+		IAMInstanceProfile:  functions.GetVal(i.IamInstanceProfile),
+		VPCSecurityGroupIDs: functions.GetVal(i.SecurityGroupIds),
 		NetworkInterface:    nics,
 	}
 
 	if i.HibernationOptions != nil {
-		ec2Config.Hibernation = i.HibernationOptions.Configured
+		ec2Config.Hibernation = functions.GetVal(i.HibernationOptions.Configured)
 	}
 
 	var awsconfigec2 AWSResourceConfig
diff --git a/pkg/mapper/iac-providers/cft/config/ec2-vpc.go b/pkg/mapper/iac-providers/cft/config/ec2-vpc.go
index 0ea658d78..ad028ea0f 100644
--- a/pkg/mapper/iac-providers/cft/config/ec2-vpc.go
+++ b/pkg/mapper/iac-providers/cft/config/ec2-vpc.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/ec2"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/ec2"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // Ec2VpcConfig holds config for Ec2Vpc
 type Ec2VpcConfig struct {
@@ -33,10 +36,10 @@ func GetEc2VpcConfig(v *ec2.VPC) []AWSResourceConfig {
 		Config: Config{
 			Tags: v.Tags,
 		},
-		CIDRBlock:          v.CidrBlock,
-		EnableDNSSupport:   v.EnableDnsSupport,
-		EnableDNSHostnames: v.EnableDnsHostnames,
-		InstanceTenancy:    v.InstanceTenancy,
+		CIDRBlock:          functions.GetVal(v.CidrBlock),
+		EnableDNSSupport:   functions.GetVal(v.EnableDnsSupport),
+		EnableDNSHostnames: functions.GetVal(v.EnableDnsHostnames),
+		InstanceTenancy:    functions.GetVal(v.InstanceTenancy),
 	}
 
 	return []AWSResourceConfig{{
diff --git a/pkg/mapper/iac-providers/cft/config/ecr-repository.go b/pkg/mapper/iac-providers/cft/config/ecr-repository.go
index 1ebbc137e..e77126e6d 100644
--- a/pkg/mapper/iac-providers/cft/config/ecr-repository.go
+++ b/pkg/mapper/iac-providers/cft/config/ecr-repository.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/ecr"
+	"github.com/awslabs/goformation/v6/cloudformation/ecr"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // EcrRepositoryConfig holds config for aws_ecr_repository
@@ -37,13 +38,13 @@ func GetEcrRepositoryConfig(r *ecr.Repository) []AWSResourceConfig {
 	var imageScanningConfiguration []ImageScanningConfigurationBlock
 	if r.ImageScanningConfiguration != nil {
 		imageScanningConfiguration = make([]ImageScanningConfigurationBlock, 1)
-		imageScanningConfiguration[0].ScanOnPush = r.ImageScanningConfiguration.ScanOnPush
+		imageScanningConfiguration[0].ScanOnPush = functions.GetVal(r.ImageScanningConfiguration.ScanOnPush)
 	}
 
 	cf := EcrRepositoryConfig{
 		Config: Config{
 			Tags: r.Tags,
-			Name: r.RepositoryName,
+			Name: functions.GetVal(r.RepositoryName),
 		},
 		ImageScanningConfiguration: imageScanningConfiguration,
 	}
diff --git a/pkg/mapper/iac-providers/cft/config/ecs-cluster.go b/pkg/mapper/iac-providers/cft/config/ecs-cluster.go
index 632d95c6c..4a99e5ad1 100644
--- a/pkg/mapper/iac-providers/cft/config/ecs-cluster.go
+++ b/pkg/mapper/iac-providers/cft/config/ecs-cluster.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/ecs"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/ecs"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // ClusterSettingsBlock holds config for settings attribute
 type ClusterSettingsBlock struct {
@@ -66,25 +69,27 @@ func GetEcsClusterConfig(e *ecs.Cluster) []AWSResourceConfig {
 	var clusterSettingsData []ClusterSettingsBlock
 	var capacityProviderStrategyData []CapacityProviderStrategyBlock
 
-	clusterSettingsData = make([]ClusterSettingsBlock, len(e.ClusterSettings))
-	for i := range e.ClusterSettings {
-		clusterSettingsData[i].Name = e.ClusterSettings[i].Name
-		clusterSettingsData[i].Value = e.ClusterSettings[i].Value
+	clusterSettings := functions.GetVal(e.ClusterSettings)
+	clusterSettingsData = make([]ClusterSettingsBlock, len(clusterSettings))
+	for i, clusterSetting := range clusterSettings {
+		clusterSettingsData[i].Name = functions.GetVal(clusterSetting.Name)
+		clusterSettingsData[i].Value = functions.GetVal(clusterSetting.Value)
 	}
 
-	capacityProviderStrategyData = make([]CapacityProviderStrategyBlock, len(e.DefaultCapacityProviderStrategy))
-	for i := range e.DefaultCapacityProviderStrategy {
-		capacityProviderStrategyData[i].Base = e.DefaultCapacityProviderStrategy[i].Base
-		capacityProviderStrategyData[i].CapacityProvider = e.DefaultCapacityProviderStrategy[i].CapacityProvider
-		capacityProviderStrategyData[i].Weight = e.DefaultCapacityProviderStrategy[i].Weight
+	defaultCapacityProviderStrategy := functions.GetVal(e.DefaultCapacityProviderStrategy)
+	capacityProviderStrategyData = make([]CapacityProviderStrategyBlock, len(defaultCapacityProviderStrategy))
+	for i, defaultCapacityProviderStrategy := range defaultCapacityProviderStrategy {
+		capacityProviderStrategyData[i].Base = functions.GetVal(defaultCapacityProviderStrategy.Base)
+		capacityProviderStrategyData[i].CapacityProvider = functions.GetVal(defaultCapacityProviderStrategy.CapacityProvider)
+		capacityProviderStrategyData[i].Weight = functions.GetVal(defaultCapacityProviderStrategy.Weight)
 	}
 
 	cf := EcsClusterConfig{
 		Config: Config{
-			Name: e.ClusterName,
+			Name: functions.GetVal(e.ClusterName),
 			Tags: e.Tags,
 		},
-		ClusterName:                     e.ClusterName,
+		ClusterName:                     functions.GetVal(e.ClusterName),
 		ClusterSettings:                 clusterSettingsData,
 		DefaultCapacityProviderStrategy: capacityProviderStrategyData,
 	}
@@ -119,8 +124,8 @@ func setExecCommandConfigBlock(e *ecs.Cluster) []ExecuteCommandConfiguration {
 
 	execCommandConfigData = make([]ExecuteCommandConfiguration, 1)
 
-	execCommandConfigData[0].KmsKeyID = e.Configuration.ExecuteCommandConfiguration.KmsKeyId
-	execCommandConfigData[0].Logging = e.Configuration.ExecuteCommandConfiguration.Logging
+	execCommandConfigData[0].KmsKeyID = functions.GetVal(e.Configuration.ExecuteCommandConfiguration.KmsKeyId)
+	execCommandConfigData[0].Logging = functions.GetVal(e.Configuration.ExecuteCommandConfiguration.Logging)
 
 	if e.Configuration.ExecuteCommandConfiguration.LogConfiguration == nil {
 		return execCommandConfigData
@@ -134,11 +139,11 @@ func setExecCommandConfigBlock(e *ecs.Cluster) []ExecuteCommandConfiguration {
 func setLogConfigurationBlock(e *ecs.Cluster) []LogConfigurationBlock {
 	logConfigData := make([]LogConfigurationBlock, 1)
 
-	logConfigData[0].S3BucketName = e.Configuration.ExecuteCommandConfiguration.LogConfiguration.S3BucketName
-	logConfigData[0].S3KeyPrefix = e.Configuration.ExecuteCommandConfiguration.LogConfiguration.S3KeyPrefix
-	logConfigData[0].S3EncryptionEnabled = e.Configuration.ExecuteCommandConfiguration.LogConfiguration.S3EncryptionEnabled
-	logConfigData[0].CloudWatchLogGroupName = e.Configuration.ExecuteCommandConfiguration.LogConfiguration.CloudWatchLogGroupName
-	logConfigData[0].CloudWatchEncryptionEnabled = e.Configuration.ExecuteCommandConfiguration.LogConfiguration.CloudWatchEncryptionEnabled
+	logConfigData[0].S3BucketName = functions.GetVal(e.Configuration.ExecuteCommandConfiguration.LogConfiguration.S3BucketName)
+	logConfigData[0].S3KeyPrefix = functions.GetVal(e.Configuration.ExecuteCommandConfiguration.LogConfiguration.S3KeyPrefix)
+	logConfigData[0].S3EncryptionEnabled = functions.GetVal(e.Configuration.ExecuteCommandConfiguration.LogConfiguration.S3EncryptionEnabled)
+	logConfigData[0].CloudWatchLogGroupName = functions.GetVal(e.Configuration.ExecuteCommandConfiguration.LogConfiguration.CloudWatchLogGroupName)
+	logConfigData[0].CloudWatchEncryptionEnabled = functions.GetVal(e.Configuration.ExecuteCommandConfiguration.LogConfiguration.CloudWatchEncryptionEnabled)
 
 	return logConfigData
 }
diff --git a/pkg/mapper/iac-providers/cft/config/ecs-service.go b/pkg/mapper/iac-providers/cft/config/ecs-service.go
index f1d3f3eee..0733132d8 100644
--- a/pkg/mapper/iac-providers/cft/config/ecs-service.go
+++ b/pkg/mapper/iac-providers/cft/config/ecs-service.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/ecs"
+	"github.com/awslabs/goformation/v6/cloudformation/ecs"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // EcsServiceConfig holds config for aws_ecs_service
@@ -30,10 +31,10 @@ type EcsServiceConfig struct {
 func GetEcsServiceConfig(c *ecs.Service) []AWSResourceConfig {
 	cf := EcsServiceConfig{
 		Config: Config{
-			Name: c.ServiceName,
+			Name: functions.GetVal(c.ServiceName),
 			Tags: c.Tags,
 		},
-		IamRole: c.Role,
+		IamRole: functions.GetVal(c.Role),
 	}
 	return []AWSResourceConfig{{
 		Resource: cf,
diff --git a/pkg/mapper/iac-providers/cft/config/ecs-task-definition.go b/pkg/mapper/iac-providers/cft/config/ecs-task-definition.go
index 12581f312..576f983e3 100644
--- a/pkg/mapper/iac-providers/cft/config/ecs-task-definition.go
+++ b/pkg/mapper/iac-providers/cft/config/ecs-task-definition.go
@@ -19,7 +19,8 @@ package config
 import (
 	"encoding/json"
 
-	"github.com/awslabs/goformation/v5/cloudformation/ecs"
+	"github.com/awslabs/goformation/v6/cloudformation/ecs"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // EcsTaskDefinitionConfig holds config for aws_ecs_task_definition
@@ -56,19 +57,19 @@ func GetEcsTaskDefinitionConfig(t *ecs.TaskDefinition) []AWSResourceConfig {
 		Config: Config{
 			Tags: t.Tags,
 		},
-		NetworkMode: t.NetworkMode,
+		NetworkMode: functions.GetVal(t.NetworkMode),
 	}
 
 	if t.ContainerDefinitions != nil {
 		// add container_definitions as a json string with mapped values
 		cDefs := make([]ContainerDefinitionConfig, 0)
-		for _, cDef := range t.ContainerDefinitions {
+		for _, cDef := range *t.ContainerDefinitions {
 			// add environment kn pairs
 			if cDef.Environment != nil {
 				env := make([]EnvironmentConfig, 0)
-				for _, kvPair := range cDef.Environment {
+				for _, kvPair := range functions.GetVal(cDef.Environment) {
 					env = append(env, EnvironmentConfig{
-						Name: kvPair.Name,
+						Name: functions.GetVal(kvPair.Name),
 					})
 				}
 				cDefs = append(cDefs, ContainerDefinitionConfig{
@@ -84,11 +85,11 @@ func GetEcsTaskDefinitionConfig(t *ecs.TaskDefinition) []AWSResourceConfig {
 
 	if t.Volumes != nil {
 		volumes := make([]VolumeConfig, 0)
-		for _, volume := range t.Volumes {
+		for _, volume := range functions.GetVal(t.Volumes) {
 			if volume.EFSVolumeConfiguration != nil {
 				volumes = append(volumes, VolumeConfig{
 					EfsVolumeConfiguration: EfsVolumeConfig{
-						TransitEncryption: volume.EFSVolumeConfiguration.TransitEncryption,
+						TransitEncryption: functions.GetVal(volume.EFSVolumeConfiguration.TransitEncryption),
 					},
 				})
 			}
diff --git a/pkg/mapper/iac-providers/cft/config/efs-file-system.go b/pkg/mapper/iac-providers/cft/config/efs-file-system.go
index 96c4d0e87..c377aab83 100644
--- a/pkg/mapper/iac-providers/cft/config/efs-file-system.go
+++ b/pkg/mapper/iac-providers/cft/config/efs-file-system.go
@@ -19,7 +19,8 @@ package config
 import (
 	"encoding/json"
 
-	"github.com/awslabs/goformation/v5/cloudformation/efs"
+	"github.com/awslabs/goformation/v6/cloudformation/efs"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 const (
@@ -48,8 +49,8 @@ func GetEfsFileSystemConfig(f *efs.FileSystem) []AWSResourceConfig {
 	resourceConfigs = append(resourceConfigs, AWSResourceConfig{
 		Metadata: f.AWSCloudFormationMetadata,
 		Resource: EfsFileSystemConfig{
-			KmsKeyID:  f.KmsKeyId,
-			Encrypted: f.Encrypted,
+			KmsKeyID:  functions.GetVal(f.KmsKeyId),
+			Encrypted: functions.GetVal(f.Encrypted),
 		},
 	})
 
diff --git a/pkg/mapper/iac-providers/cft/config/eks-cluster.go b/pkg/mapper/iac-providers/cft/config/eks-cluster.go
index ac917ef64..524d078fa 100644
--- a/pkg/mapper/iac-providers/cft/config/eks-cluster.go
+++ b/pkg/mapper/iac-providers/cft/config/eks-cluster.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/eks"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/eks"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // EKSVPCConfigBlock holds config for EKSVPCConfig
 type EKSVPCConfigBlock struct {
@@ -42,24 +45,25 @@ func GetEksClusterConfig(c *eks.Cluster) []AWSResourceConfig {
 		vpcConfig := make([]EKSVPCConfigBlock, 1)
 
 		vpcConfig[0].SubnetIDs = c.ResourcesVpcConfig.SubnetIds
-		vpcConfig[0].SecurityGroupIDs = c.ResourcesVpcConfig.SecurityGroupIds
-		vpcConfig[0].EndpointPrivateAccess = c.ResourcesVpcConfig.EndpointPrivateAccess
-		vpcConfig[0].EndpointPublicAccess = c.ResourcesVpcConfig.EndpointPublicAccess
+		vpcConfig[0].SecurityGroupIDs = functions.GetVal(c.ResourcesVpcConfig.SecurityGroupIds)
+		vpcConfig[0].EndpointPrivateAccess = functions.GetVal(c.ResourcesVpcConfig.EndpointPrivateAccess)
+		vpcConfig[0].EndpointPublicAccess = functions.GetVal(c.ResourcesVpcConfig.EndpointPublicAccess)
 	}
 
 	cf := EksClusterConfig{
 		Config: Config{
-			Name: c.Name,
+			Name: functions.GetVal(c.Name),
 		},
-		Name:      c.Name,
+		Name:      functions.GetVal(c.Name),
 		RoleARN:   c.RoleArn,
 		VPCConfig: vpcConfig,
 	}
 
-	if c.Logging != nil && c.Logging.ClusterLogging != nil && len(c.Logging.ClusterLogging.EnabledTypes) > 0 {
-		enabledClusterLogTypes := make([]string, len(c.Logging.ClusterLogging.EnabledTypes))
-		for i := range c.Logging.ClusterLogging.EnabledTypes {
-			enabledClusterLogTypes[i] = c.Logging.ClusterLogging.EnabledTypes[i].Type
+	enabledTypes := functions.GetVal(c.Logging.ClusterLogging.EnabledTypes)
+	if c.Logging != nil && c.Logging.ClusterLogging != nil && len(enabledTypes) > 0 {
+		enabledClusterLogTypes := make([]string, len(enabledTypes))
+		for i, enabledType := range enabledTypes {
+			enabledClusterLogTypes[i] = functions.GetVal(enabledType.Type)
 		}
 		cf.EnabledClusterLogTypes = enabledClusterLogTypes
 	}
diff --git a/pkg/mapper/iac-providers/cft/config/eks-node-group.go b/pkg/mapper/iac-providers/cft/config/eks-node-group.go
index 3327fdbd2..da0e047a4 100644
--- a/pkg/mapper/iac-providers/cft/config/eks-node-group.go
+++ b/pkg/mapper/iac-providers/cft/config/eks-node-group.go
@@ -16,13 +16,16 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/eks"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/eks"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // EksNodeGroupScalingConfigBlock holds config for EksNodeGroupScalingConfig
 type EksNodeGroupScalingConfigBlock struct {
-	DesiredSize float64 `json:"desired_size"`
-	MaxSize     float64 `json:"max_size"`
-	MinSize     float64 `json:"min_size"`
+	DesiredSize int `json:"desired_size"`
+	MaxSize     int `json:"max_size"`
+	MinSize     int `json:"min_size"`
 }
 
 // EksNodeGroupConfig holds config for EksNodeGroup
@@ -41,18 +44,18 @@ func GetEksNodeGroupConfig(g *eks.Nodegroup) []AWSResourceConfig {
 	var scalingConfig []EksNodeGroupScalingConfigBlock
 	if g.ScalingConfig != nil {
 		scalingConfig = make([]EksNodeGroupScalingConfigBlock, 1)
-		scalingConfig[0].DesiredSize = g.ScalingConfig.DesiredSize
-		scalingConfig[0].MaxSize = g.ScalingConfig.MaxSize
-		scalingConfig[0].MinSize = g.ScalingConfig.MinSize
+		scalingConfig[0].DesiredSize = functions.GetVal(g.ScalingConfig.DesiredSize)
+		scalingConfig[0].MaxSize = functions.GetVal(g.ScalingConfig.MaxSize)
+		scalingConfig[0].MinSize = functions.GetVal(g.ScalingConfig.MinSize)
 	}
 
 	cf := EksNodeGroupConfig{
 		Config: Config{
-			Name: g.NodegroupName,
+			Name: functions.GetVal(g.NodegroupName),
 			Tags: g.Tags,
 		},
 		ClusterName:   g.ClusterName,
-		NodeGroupName: g.NodegroupName,
+		NodeGroupName: functions.GetVal(g.NodegroupName),
 		NodeRoleARN:   g.NodeRole,
 		SubnetIDs:     g.Subnets,
 		ScalingConfig: scalingConfig,
diff --git a/pkg/mapper/iac-providers/cft/config/elasticache-cluster.go b/pkg/mapper/iac-providers/cft/config/elasticache-cluster.go
index f9150a6d3..675bde902 100644
--- a/pkg/mapper/iac-providers/cft/config/elasticache-cluster.go
+++ b/pkg/mapper/iac-providers/cft/config/elasticache-cluster.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/elasticache"
+	"github.com/awslabs/goformation/v6/cloudformation/elasticache"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // ElastiCacheClusterConfig holds config for aws_elasticache_cluster
@@ -33,11 +34,11 @@ func GetElastiCacheClusterConfig(e *elasticache.CacheCluster) []AWSResourceConfi
 	cf := ElastiCacheClusterConfig{
 		Config: Config{
 			Tags: e.Tags,
-			Name: e.ClusterName,
+			Name: functions.GetVal(e.ClusterName),
 		},
-		AZMode:        e.AZMode,
+		AZMode:        functions.GetVal(e.AZMode),
 		Engine:        e.Engine,
-		EngineVersion: e.EngineVersion,
+		EngineVersion: functions.GetVal(e.EngineVersion),
 	}
 	return []AWSResourceConfig{{
 		Resource: cf,
diff --git a/pkg/mapper/iac-providers/cft/config/elasticache-replicationgroup.go b/pkg/mapper/iac-providers/cft/config/elasticache-replicationgroup.go
index af61f8be8..0bbdc86ef 100644
--- a/pkg/mapper/iac-providers/cft/config/elasticache-replicationgroup.go
+++ b/pkg/mapper/iac-providers/cft/config/elasticache-replicationgroup.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/elasticache"
+	"github.com/awslabs/goformation/v6/cloudformation/elasticache"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // ElastiCacheReplicationGroupConfig holds config for aws_elasticache_replication_group
@@ -33,8 +34,8 @@ func GetElastiCacheReplicationGroupConfig(r *elasticache.ReplicationGroup) []AWS
 		Config: Config{
 			Tags: r.Tags,
 		},
-		AtRestEncryptionEnabled:  r.AtRestEncryptionEnabled,
-		TransitEncryptionEnabled: r.TransitEncryptionEnabled,
+		AtRestEncryptionEnabled:  functions.GetVal(r.AtRestEncryptionEnabled),
+		TransitEncryptionEnabled: functions.GetVal(r.TransitEncryptionEnabled),
 	}
 	return []AWSResourceConfig{{
 		Resource: cf,
diff --git a/pkg/mapper/iac-providers/cft/config/elasticloadbalancing-loadbalancer.go b/pkg/mapper/iac-providers/cft/config/elasticloadbalancing-loadbalancer.go
index 6fc8fe682..ca8f34213 100644
--- a/pkg/mapper/iac-providers/cft/config/elasticloadbalancing-loadbalancer.go
+++ b/pkg/mapper/iac-providers/cft/config/elasticloadbalancing-loadbalancer.go
@@ -19,7 +19,8 @@ package config
 import (
 	"fmt"
 
-	"github.com/awslabs/goformation/v5/cloudformation/elasticloadbalancing"
+	"github.com/awslabs/goformation/v6/cloudformation/elasticloadbalancing"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // GetPolicies represents subresource aws_load_balancer_policy for Policies attribute
@@ -62,19 +63,21 @@ type ELBListenerConfig struct {
 
 // GetElasticLoadBalancingLoadBalancerConfig returns config for aws_elb
 func GetElasticLoadBalancingLoadBalancerConfig(e *elasticloadbalancing.LoadBalancer, elbname string) []AWSResourceConfig {
-	elbpolicies := make([]ElasticLoadBalancingLoadBalancerPoliciesConfig, len(e.Policies))
-	awsconfig := make([]AWSResourceConfig, len(e.Policies))
+	policies := functions.GetVal(e.Policies)
 
-	for i := range e.Policies {
+	elbpolicies := make([]ElasticLoadBalancingLoadBalancerPoliciesConfig, len(policies))
+	awsconfig := make([]AWSResourceConfig, len(policies))
+
+	for i, policy := range policies {
 		indexedElbName := fmt.Sprintf("%s%d", elbname, i)
 
 		elbpolicies[i].LoadBalancerName = indexedElbName
-		elbpolicies[i].PolicyName = e.Policies[i].PolicyName
-		elbpolicies[i].PolicyTypeName = e.Policies[i].PolicyType
+		elbpolicies[i].PolicyName = policy.PolicyName
+		elbpolicies[i].PolicyTypeName = policy.PolicyType
 
-		elbpolicies[i].PolicyAttribute = make([]PolicyAttributeBlock, len(e.Policies[i].Attributes))
-		for ai := range e.Policies[i].Attributes {
-			attribVals, ok := e.Policies[i].Attributes[ai].(map[string]interface{})
+		elbpolicies[i].PolicyAttribute = make([]PolicyAttributeBlock, len(policy.Attributes))
+		for ai := range policy.Attributes {
+			attribVals, ok := policy.Attributes[ai].(map[string]interface{})
 			if !ok {
 				continue
 			}
@@ -115,7 +118,7 @@ func GetElasticLoadBalancingLoadBalancerConfig(e *elasticloadbalancing.LoadBalan
 		lc := make([]ELBListenerConfig, 0)
 		for _, listener := range e.Listeners {
 			lc = append(lc, ELBListenerConfig{
-				InstanceProtocol: listener.InstanceProtocol,
+				InstanceProtocol: functions.GetVal(listener.InstanceProtocol),
 				LBProtocol:       listener.Protocol,
 			})
 		}
diff --git a/pkg/mapper/iac-providers/cft/config/elasticloadbalancingv2-listener.go b/pkg/mapper/iac-providers/cft/config/elasticloadbalancingv2-listener.go
index 35da6a9de..e2592e4db 100644
--- a/pkg/mapper/iac-providers/cft/config/elasticloadbalancingv2-listener.go
+++ b/pkg/mapper/iac-providers/cft/config/elasticloadbalancingv2-listener.go
@@ -17,19 +17,20 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/elasticloadbalancingv2"
+	"github.com/awslabs/goformation/v6/cloudformation/elasticloadbalancingv2"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // ElasticLoadBalancingV2ListenerConfig holds config for aws_lb_listener
 type ElasticLoadBalancingV2ListenerConfig struct {
 	Config
-	Protocol      string              `json:"protocol"`
-	DefaultAction DefaultActionConfig `json:"default_action"`
+	Protocol      string                `json:"protocol"`
+	DefaultAction []DefaultActionConfig `json:"default_action"`
 }
 
 // DefaultActionConfig holds config for default_action attribute of aws_lb_listener
 type DefaultActionConfig struct {
-	RedirectConfig RedirectConfig `json:"redirect"`
+	RedirectConfig []RedirectConfig `json:"redirect"`
 }
 
 // RedirectConfig holds config for redirect attirbute of default_action
@@ -47,12 +48,16 @@ func GetElasticLoadBalancingV2ListenerConfig(l *elasticloadbalancingv2.Listener)
 		// DefaultActions are required
 		cf := ElasticLoadBalancingV2ListenerConfig{
 			Config:   Config{},
-			Protocol: l.Protocol,
+			Protocol: functions.GetVal(l.Protocol),
 		}
 		if action.RedirectConfig != nil {
-			defaultAction := DefaultActionConfig{
-				RedirectConfig: RedirectConfig{
-					Protocol: action.RedirectConfig.Protocol,
+			defaultAction := []DefaultActionConfig{
+				{
+					RedirectConfig: []RedirectConfig{
+						{
+							Protocol: functions.GetVal(action.RedirectConfig.Protocol),
+						},
+					},
 				},
 			}
 			cf.DefaultAction = defaultAction
diff --git a/pkg/mapper/iac-providers/cft/config/elasticloadbalancingv2-target-group.go b/pkg/mapper/iac-providers/cft/config/elasticloadbalancingv2-target-group.go
index 182ee1478..dbc7745f7 100644
--- a/pkg/mapper/iac-providers/cft/config/elasticloadbalancingv2-target-group.go
+++ b/pkg/mapper/iac-providers/cft/config/elasticloadbalancingv2-target-group.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/elasticloadbalancingv2"
+	"github.com/awslabs/goformation/v6/cloudformation/elasticloadbalancingv2"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // ElasticLoadBalancingV2TargetGroupConfig holds config for aws_lb_target_group
@@ -32,10 +33,10 @@ func GetElasticLoadBalancingV2TargetGroupConfig(l *elasticloadbalancingv2.Target
 	// as only one default action per listener is possible in terraform
 	cf := ElasticLoadBalancingV2TargetGroupConfig{
 		Config: Config{
-			Name: l.Name,
+			Name: functions.GetVal(l.Name),
 			Tags: l.Tags,
 		},
-		Protocol: l.Protocol,
+		Protocol: functions.GetVal(l.Protocol),
 	}
 
 	return []AWSResourceConfig{{
diff --git a/pkg/mapper/iac-providers/cft/config/elasticsearch-domain.go b/pkg/mapper/iac-providers/cft/config/elasticsearch-domain.go
index b12dc6bac..ffc3f46b4 100644
--- a/pkg/mapper/iac-providers/cft/config/elasticsearch-domain.go
+++ b/pkg/mapper/iac-providers/cft/config/elasticsearch-domain.go
@@ -19,7 +19,8 @@ package config
 import (
 	"encoding/json"
 
-	"github.com/awslabs/goformation/v5/cloudformation/elasticsearch"
+	"github.com/awslabs/goformation/v6/cloudformation/elasticsearch"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 const (
@@ -66,16 +67,16 @@ func GetElasticsearchDomainConfig(d *elasticsearch.Domain) []AWSResourceConfig {
 	// add domain config
 	esDomainConfig := ElasticsearchDomainConfig{
 		Config: Config{
-			Name: d.DomainName,
+			Name: functions.GetVal(d.DomainName),
 			Tags: d.Tags,
 		},
 	}
 
 	if d.LogPublishingOptions != nil {
 		lpConfig := make([]LogPublishingOptionsConfig, 0)
-		for ltype, options := range d.LogPublishingOptions {
+		for ltype, options := range *d.LogPublishingOptions {
 			lpConfig = append(lpConfig, LogPublishingOptionsConfig{
-				Enabled: options.Enabled,
+				Enabled: functions.GetVal(options.Enabled),
 				LogType: ltype,
 			})
 		}
@@ -84,14 +85,14 @@ func GetElasticsearchDomainConfig(d *elasticsearch.Domain) []AWSResourceConfig {
 
 	if d.NodeToNodeEncryptionOptions != nil {
 		esDomainConfig.NodeToNodeEncryptionOptions = []NodeToNodeEncryptionOptionsConfig{{
-			Enabled: d.NodeToNodeEncryptionOptions.Enabled,
+			Enabled: functions.GetVal(d.NodeToNodeEncryptionOptions.Enabled),
 		}}
 	}
 
 	if d.EncryptionAtRestOptions != nil {
 		enc := EncryptionAtRestConfig{
-			KmsKeyID: d.EncryptionAtRestOptions.KmsKeyId,
-			Enabled:  d.EncryptionAtRestOptions.Enabled,
+			KmsKeyID: functions.GetVal(d.EncryptionAtRestOptions.KmsKeyId),
+			Enabled:  functions.GetVal(d.EncryptionAtRestOptions.Enabled),
 		}
 		esDomainConfig.EncryptionAtRest = []EncryptionAtRestConfig{enc}
 	}
@@ -105,7 +106,7 @@ func GetElasticsearchDomainConfig(d *elasticsearch.Domain) []AWSResourceConfig {
 	if d.AccessPolicies != nil {
 		policyConfig := ElasticsearchDomainAccessPolicyConfig{
 			Config: Config{
-				Name: d.DomainName,
+				Name: functions.GetVal(d.DomainName),
 			},
 		}
 		policies, err := json.Marshal(d.AccessPolicies)
@@ -115,7 +116,7 @@ func GetElasticsearchDomainConfig(d *elasticsearch.Domain) []AWSResourceConfig {
 		resourceConfigs = append(resourceConfigs, AWSResourceConfig{
 			Resource: policyConfig,
 			Type:     ElasticsearchDomainAccessPolicy,
-			Name:     d.DomainName,
+			Name:     functions.GetVal(d.DomainName),
 			Metadata: d.AWSCloudFormationMetadata,
 		})
 	}
diff --git a/pkg/mapper/iac-providers/cft/config/emr-cluster.go b/pkg/mapper/iac-providers/cft/config/emr-cluster.go
index 1cb71fe5e..87f4b03a9 100644
--- a/pkg/mapper/iac-providers/cft/config/emr-cluster.go
+++ b/pkg/mapper/iac-providers/cft/config/emr-cluster.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/emr"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/emr"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // KerberosAttributesBlock holds config for KerberosAttributes
 type KerberosAttributesBlock struct {
@@ -49,9 +52,9 @@ func GetEmrClusterConfig(c *emr.Cluster) []AWSResourceConfig {
 			Name: c.Name,
 		},
 		Name:                  c.Name,
-		ReleaseLabel:          c.ReleaseLabel,
+		ReleaseLabel:          functions.GetVal(c.ReleaseLabel),
 		ServiceRole:           c.ServiceRole,
-		TerminationProtection: c.Instances.TerminationProtected,
+		TerminationProtection: functions.GetVal(c.Instances.TerminationProtected),
 		KerberosAttributes:    kerberosAttributes,
 	}
 
diff --git a/pkg/mapper/iac-providers/cft/config/global-accelerator.go b/pkg/mapper/iac-providers/cft/config/global-accelerator.go
index c6e1f5b16..af0d9cd81 100644
--- a/pkg/mapper/iac-providers/cft/config/global-accelerator.go
+++ b/pkg/mapper/iac-providers/cft/config/global-accelerator.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/globalaccelerator"
+	"github.com/awslabs/goformation/v6/cloudformation/globalaccelerator"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // GlobalAcceleratorConfig holds config for aws_globalaccelerator_accelerator resource
@@ -36,8 +37,8 @@ func GetGlobalAcceleratorConfig(g *globalaccelerator.Accelerator) []AWSResourceC
 			Tags: g.Tags,
 		},
 		Name:          g.Name,
-		Enabled:       g.Enabled,
-		IPAddressType: g.IpAddressType,
+		Enabled:       functions.GetVal(g.Enabled),
+		IPAddressType: functions.GetVal(g.IpAddressType),
 	}
 
 	return []AWSResourceConfig{{
diff --git a/pkg/mapper/iac-providers/cft/config/guardduty-detector.go b/pkg/mapper/iac-providers/cft/config/guardduty-detector.go
index 4f3941e98..8bd116afb 100644
--- a/pkg/mapper/iac-providers/cft/config/guardduty-detector.go
+++ b/pkg/mapper/iac-providers/cft/config/guardduty-detector.go
@@ -17,7 +17,7 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/guardduty"
+	"github.com/awslabs/goformation/v6/cloudformation/guardduty"
 )
 
 // GuardDutyDetectorConfig holds config for aws_guardduty_detector
diff --git a/pkg/mapper/iac-providers/cft/config/iam-access-key.go b/pkg/mapper/iac-providers/cft/config/iam-access-key.go
index 6d6a226b2..465f8fc31 100644
--- a/pkg/mapper/iac-providers/cft/config/iam-access-key.go
+++ b/pkg/mapper/iac-providers/cft/config/iam-access-key.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/iam"
+	"github.com/awslabs/goformation/v6/cloudformation/iam"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // IamAccessKeyConfig holds config for aws_iam_access_key
@@ -34,7 +35,7 @@ func GetIamAccessKeyConfig(r *iam.AccessKey) []AWSResourceConfig {
 			Name: r.UserName,
 		},
 		UserName: r.UserName,
-		Status:   r.Status,
+		Status:   functions.GetVal(r.Status),
 	}
 	return []AWSResourceConfig{{
 		Resource: cf,
diff --git a/pkg/mapper/iac-providers/cft/config/iam-group.go b/pkg/mapper/iac-providers/cft/config/iam-group.go
index 070a4b896..60b0c5018 100644
--- a/pkg/mapper/iac-providers/cft/config/iam-group.go
+++ b/pkg/mapper/iac-providers/cft/config/iam-group.go
@@ -20,7 +20,8 @@ import (
 	"encoding/json"
 	"fmt"
 
-	"github.com/awslabs/goformation/v5/cloudformation/iam"
+	"github.com/awslabs/goformation/v6/cloudformation/iam"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 const (
@@ -46,7 +47,7 @@ func GetIamGroupConfig(r *iam.Group) []AWSResourceConfig {
 	// aws_iam_role_policy as a SubResource
 	policyConfigs := make([]AWSResourceConfig, 0)
 	if r.Policies != nil {
-		for i, policy := range r.Policies {
+		for i, policy := range functions.GetVal(r.Policies) {
 			pc := IamGroupPolicyConfig{
 				Config: Config{
 					Name: policy.PolicyName,
@@ -69,9 +70,9 @@ func GetIamGroupConfig(r *iam.Group) []AWSResourceConfig {
 
 	groupConfig := IamGroupConfig{
 		Config: Config{
-			Name: r.GroupName,
+			Name: functions.GetVal(r.GroupName),
 		},
-		Name: r.GroupName,
+		Name: functions.GetVal(r.GroupName),
 	}
 
 	var groupPolicyConfig AWSResourceConfig
diff --git a/pkg/mapper/iac-providers/cft/config/iam-policy.go b/pkg/mapper/iac-providers/cft/config/iam-policy.go
index 6cea77d73..b4b3e87c7 100644
--- a/pkg/mapper/iac-providers/cft/config/iam-policy.go
+++ b/pkg/mapper/iac-providers/cft/config/iam-policy.go
@@ -19,7 +19,7 @@ package config
 import (
 	"encoding/json"
 
-	"github.com/awslabs/goformation/v5/cloudformation/iam"
+	"github.com/awslabs/goformation/v6/cloudformation/iam"
 )
 
 // IamPolicyConfig holds config for aws_iam_policy
diff --git a/pkg/mapper/iac-providers/cft/config/iam-role.go b/pkg/mapper/iac-providers/cft/config/iam-role.go
index 72abdcea0..aa1e7a10a 100644
--- a/pkg/mapper/iac-providers/cft/config/iam-role.go
+++ b/pkg/mapper/iac-providers/cft/config/iam-role.go
@@ -20,7 +20,8 @@ import (
 	"encoding/json"
 	"fmt"
 
-	"github.com/awslabs/goformation/v5/cloudformation/iam"
+	"github.com/awslabs/goformation/v6/cloudformation/iam"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 const (
@@ -49,7 +50,7 @@ func GetIamRoleConfig(r *iam.Role) []AWSResourceConfig {
 	// add aws_iam_role
 	roleConfig := IamRoleConfig{
 		Config: Config{
-			Name: r.RoleName,
+			Name: functions.GetVal(r.RoleName),
 			Tags: r.Tags,
 		},
 	}
@@ -65,7 +66,7 @@ func GetIamRoleConfig(r *iam.Role) []AWSResourceConfig {
 	// aws_iam_role_policy as a SubResource
 	// multiple Policies can be defined for a resource in cft
 	if r.Policies != nil {
-		for i, policy := range r.Policies {
+		for i, policy := range functions.GetVal(r.Policies) {
 			pc := IamRolePolicyConfig{
 				Config: Config{
 					Name: policy.PolicyName,
diff --git a/pkg/mapper/iac-providers/cft/config/iam-user.go b/pkg/mapper/iac-providers/cft/config/iam-user.go
index 421d6f9f5..8340fb833 100644
--- a/pkg/mapper/iac-providers/cft/config/iam-user.go
+++ b/pkg/mapper/iac-providers/cft/config/iam-user.go
@@ -20,7 +20,8 @@ import (
 	"encoding/json"
 	"fmt"
 
-	"github.com/awslabs/goformation/v5/cloudformation/iam"
+	"github.com/awslabs/goformation/v6/cloudformation/iam"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 const (
@@ -59,33 +60,33 @@ func GetIamUserConfig(i *iam.User) []AWSResourceConfig {
 		Metadata: i.AWSCloudFormationMetadata,
 		Resource: IamUserConfig{
 			Config: Config{
-				Name: i.UserName,
+				Name: functions.GetVal(i.UserName),
 				Tags: i.Tags,
 			},
-			UserName: i.UserName,
+			UserName: functions.GetVal(i.UserName),
 		},
 	})
 
 	iamLoginProfileConfig := IamUserLoginProfileConfig{
 		Config: Config{
-			Name: i.UserName,
+			Name: functions.GetVal(i.UserName),
 		},
 	}
 	if i.LoginProfile != nil {
-		iamLoginProfileConfig.PasswordResetRequired = i.LoginProfile.PasswordResetRequired
+		iamLoginProfileConfig.PasswordResetRequired = functions.GetVal(i.LoginProfile.PasswordResetRequired)
 	}
 
 	// add aws_iam_user_login_profile
 	resourceConfigs = append(resourceConfigs, AWSResourceConfig{
 		Type:     IamUserLoginProfile,
-		Name:     i.UserName,
+		Name:     functions.GetVal(i.UserName),
 		Metadata: i.AWSCloudFormationMetadata,
 		Resource: iamLoginProfileConfig,
 	})
 
 	// add aws_iam_user_policy
 	if i.Policies != nil {
-		for j, policy := range i.Policies {
+		for j, policy := range functions.GetVal(i.Policies) {
 			pc := IamUserPolicyConfig{
 				Config: Config{
 					Name: policy.PolicyName,
diff --git a/pkg/mapper/iac-providers/cft/config/kinesis-firehose-delivery-stream.go b/pkg/mapper/iac-providers/cft/config/kinesis-firehose-delivery-stream.go
index c72bec159..534c5d36b 100644
--- a/pkg/mapper/iac-providers/cft/config/kinesis-firehose-delivery-stream.go
+++ b/pkg/mapper/iac-providers/cft/config/kinesis-firehose-delivery-stream.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/kinesisfirehose"
+	"github.com/awslabs/goformation/v6/cloudformation/kinesisfirehose"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // KinesisFirehoseDeliveryStreamConfig holds config for aws_kinesis_firehose_delivery_stream
@@ -37,7 +38,7 @@ type KinesisFirehoseDeliveryStreamSseConfig struct {
 func GetKinesisFirehoseDeliveryStreamConfig(k *kinesisfirehose.DeliveryStream) []AWSResourceConfig {
 	cf := KinesisFirehoseDeliveryStreamConfig{
 		Config: Config{
-			Name: k.DeliveryStreamName,
+			Name: functions.GetVal(k.DeliveryStreamName),
 			Tags: k.Tags,
 		},
 	}
@@ -45,7 +46,7 @@ func GetKinesisFirehoseDeliveryStreamConfig(k *kinesisfirehose.DeliveryStream) [
 	if k.DeliveryStreamEncryptionConfigurationInput != nil {
 		sseConfig.Enabled = true
 		sseConfig.KeyType = k.DeliveryStreamEncryptionConfigurationInput.KeyType
-		sseConfig.KeyARN = k.DeliveryStreamEncryptionConfigurationInput.KeyARN
+		sseConfig.KeyARN = functions.GetVal(k.DeliveryStreamEncryptionConfigurationInput.KeyARN)
 	}
 	cf.ServerSideEncryption = []KinesisFirehoseDeliveryStreamSseConfig{sseConfig}
 	return []AWSResourceConfig{{
diff --git a/pkg/mapper/iac-providers/cft/config/kinesis-stream.go b/pkg/mapper/iac-providers/cft/config/kinesis-stream.go
index e6fd16598..328f068c7 100644
--- a/pkg/mapper/iac-providers/cft/config/kinesis-stream.go
+++ b/pkg/mapper/iac-providers/cft/config/kinesis-stream.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/kinesis"
+	"github.com/awslabs/goformation/v6/cloudformation/kinesis"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // KinesisStreamConfig holds config for aws_kinesis_stream
@@ -32,10 +33,10 @@ type KinesisStreamConfig struct {
 func GetKinesisStreamConfig(k *kinesis.Stream) []AWSResourceConfig {
 	cf := KinesisStreamConfig{
 		Config: Config{
-			Name: k.Name,
+			Name: functions.GetVal(k.Name),
 			Tags: k.Tags,
 		},
-		Name: k.Name,
+		Name: functions.GetVal(k.Name),
 	}
 
 	if k.StreamEncryption != nil {
diff --git a/pkg/mapper/iac-providers/cft/config/kms-key.go b/pkg/mapper/iac-providers/cft/config/kms-key.go
index 68b347aaa..645dd704d 100644
--- a/pkg/mapper/iac-providers/cft/config/kms-key.go
+++ b/pkg/mapper/iac-providers/cft/config/kms-key.go
@@ -19,7 +19,8 @@ package config
 import (
 	"encoding/json"
 
-	"github.com/awslabs/goformation/v5/cloudformation/kms"
+	"github.com/awslabs/goformation/v6/cloudformation/kms"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // KmsKeyConfig holds config for aws_kms_key
@@ -38,9 +39,9 @@ func GetKmsKeyConfig(k *kms.Key) []AWSResourceConfig {
 		Config: Config{
 			Tags: k.Tags,
 		},
-		Enabled:             k.Enabled,
-		EnableKeyRotation:   k.EnableKeyRotation,
-		PendingWindowInDays: k.PendingWindowInDays,
+		Enabled:             functions.GetVal(k.Enabled),
+		EnableKeyRotation:   functions.GetVal(k.EnableKeyRotation),
+		PendingWindowInDays: functions.GetVal(k.PendingWindowInDays),
 	}
 
 	keyPolicy, err := json.Marshal(k.KeyPolicy)
diff --git a/pkg/mapper/iac-providers/cft/config/lambda-function.go b/pkg/mapper/iac-providers/cft/config/lambda-function.go
index ce9c74bd1..0ed70a438 100644
--- a/pkg/mapper/iac-providers/cft/config/lambda-function.go
+++ b/pkg/mapper/iac-providers/cft/config/lambda-function.go
@@ -20,8 +20,9 @@ import (
 	"strconv"
 	"strings"
 
-	"github.com/awslabs/goformation/v5/cloudformation/lambda"
-	"github.com/awslabs/goformation/v5/cloudformation/serverless"
+	"github.com/awslabs/goformation/v6/cloudformation/lambda"
+	"github.com/awslabs/goformation/v6/cloudformation/serverless"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // TracingConfigBlock holds config for TracingConfig
@@ -76,7 +77,7 @@ func GetLambdaFunctionConfig(sf interface{}) []AWSResourceConfig {
 
 func getServerlessConfig(sf *serverless.Function) []AWSResourceConfig {
 	tracingConfig := make([]TracingConfigBlock, 1)
-	tracingConfig[0].Mode = sf.Tracing
+	tracingConfig[0].Mode = functions.GetVal(sf.Tracing)
 
 	var vpcConfig []VPCConfigBlock
 	if sf.VpcConfig != nil {
@@ -95,19 +96,19 @@ func getServerlessConfig(sf *serverless.Function) []AWSResourceConfig {
 
 	cf := LambdaFunctionConfig{
 		Config: Config{
-			Name: sf.FunctionName,
+			Name: functions.GetVal(sf.FunctionName),
 		},
-		FunctionName:                 sf.FunctionName,
-		Role:                         sf.Role,
-		Handler:                      sf.Handler,
-		MemorySize:                   sf.MemorySize,
-		ReservedConcurrentExecutions: sf.ReservedConcurrentExecutions,
-		Runtime:                      sf.Runtime,
-		Timeout:                      sf.Timeout,
+		FunctionName:                 functions.GetVal(sf.FunctionName),
+		Role:                         functions.GetVal(sf.Role),
+		Handler:                      functions.GetVal(sf.Handler),
+		MemorySize:                   functions.GetVal(sf.MemorySize),
+		ReservedConcurrentExecutions: functions.GetVal(sf.ReservedConcurrentExecutions),
+		Runtime:                      functions.GetVal(sf.Runtime),
+		Timeout:                      functions.GetVal(sf.Timeout),
 		TracingConfig:                tracingConfig,
 		VPCConfig:                    vpcConfig,
 		Environment:                  environment,
-		KMSKeyARN:                    sf.KmsKeyArn,
+		KMSKeyARN:                    functions.GetVal(sf.KmsKeyArn),
 	}
 
 	cf = setServerlessCodePackage(cf, sf)
@@ -123,22 +124,21 @@ func setServerlessCodePackage(cf LambdaFunctionConfig, f *serverless.Function) L
 		return cf
 	}
 
-	if f.ImageUri != "" {
-		cf.ImageURI = f.ImageUri
+	if f.ImageUri != nil {
+		cf.ImageURI = functions.GetVal(f.ImageUri)
 		return cf
 	}
 
 	if f.CodeUri != nil && f.CodeUri.String != nil &&
-		*f.CodeUri.String != "" && !strings.HasPrefix(*f.CodeUri.String, "s3") {
-		cf.FileName = *f.CodeUri.String
+		functions.GetVal(f.CodeUri.String) != "" && !strings.HasPrefix(functions.GetVal(f.CodeUri.String), "s3") {
+		cf.FileName = functions.GetVal(f.CodeUri.String)
 		return cf
 	}
 
 	if f.CodeUri != nil && f.CodeUri.S3Location != nil {
 		cf.S3Bucket = f.CodeUri.S3Location.Bucket
 		cf.S3Key = f.CodeUri.S3Location.Key
-		cf.S3ObjectVersion = strconv.Itoa(f.CodeUri.S3Location.Version)
-
+		cf.S3ObjectVersion = strconv.Itoa(functions.GetVal(f.CodeUri.S3Location.Version))
 	}
 
 	return cf
@@ -149,39 +149,39 @@ func getLambdaConfig(lf *lambda.Function) []AWSResourceConfig {
 	if lf.TracingConfig != nil {
 		tracingConfig = make([]TracingConfigBlock, 1)
 
-		tracingConfig[0].Mode = lf.TracingConfig.Mode
+		tracingConfig[0].Mode = functions.GetVal(lf.TracingConfig.Mode)
 	}
 
 	var vpcConfig []VPCConfigBlock
 	if lf.VpcConfig != nil {
 		vpcConfig = make([]VPCConfigBlock, 1)
 
-		vpcConfig[0].SecurityGroupIDs = lf.VpcConfig.SecurityGroupIds
-		vpcConfig[0].SubnetIDs = lf.VpcConfig.SubnetIds
+		vpcConfig[0].SecurityGroupIDs = *lf.VpcConfig.SecurityGroupIds
+		vpcConfig[0].SubnetIDs = *lf.VpcConfig.SubnetIds
 	}
 
 	var environment []EnvironmentBlock
 	if lf.Environment != nil {
 		environment = make([]EnvironmentBlock, 1)
 
-		environment[0].Variables = lf.Environment.Variables
+		environment[0].Variables = *lf.Environment.Variables
 	}
 
 	cf := LambdaFunctionConfig{
 		Config: Config{
-			Name: lf.FunctionName,
+			Name: functions.GetVal(lf.FunctionName),
 		},
-		FunctionName:                 lf.FunctionName,
+		FunctionName:                 functions.GetVal(lf.FunctionName),
 		Role:                         lf.Role,
-		Handler:                      lf.Handler,
-		MemorySize:                   lf.MemorySize,
-		ReservedConcurrentExecutions: lf.ReservedConcurrentExecutions,
-		Runtime:                      lf.Runtime,
-		Timeout:                      lf.Timeout,
+		Handler:                      functions.GetVal(lf.Handler),
+		MemorySize:                   functions.GetVal(lf.MemorySize),
+		ReservedConcurrentExecutions: functions.GetVal(lf.ReservedConcurrentExecutions),
+		Runtime:                      functions.GetVal(lf.Runtime),
+		Timeout:                      functions.GetVal(lf.Timeout),
 		TracingConfig:                tracingConfig,
 		VPCConfig:                    vpcConfig,
 		Environment:                  environment,
-		KMSKeyARN:                    lf.KmsKeyArn,
+		KMSKeyARN:                    functions.GetVal(lf.KmsKeyArn),
 	}
 
 	cf = setLambdaCodePackage(cf, lf)
@@ -193,13 +193,12 @@ func getLambdaConfig(lf *lambda.Function) []AWSResourceConfig {
 }
 
 func setLambdaCodePackage(cf LambdaFunctionConfig, f *lambda.Function) LambdaFunctionConfig {
-	if f.Code.ImageUri != "" {
-		cf.ImageURI = f.Code.ImageUri
+	if f.Code != nil {
+		cf.ImageURI = functions.GetVal(f.Code.ImageUri)
 		return cf
 	}
-
-	cf.S3Bucket = f.Code.S3Bucket
-	cf.S3Key = f.Code.S3Key
-	cf.S3ObjectVersion = f.Code.S3ObjectVersion
+	cf.S3Bucket = functions.GetVal(f.Code.S3Bucket)
+	cf.S3Key = functions.GetVal(f.Code.S3Key)
+	cf.S3ObjectVersion = functions.GetVal(f.Code.S3ObjectVersion)
 	return cf
 }
diff --git a/pkg/mapper/iac-providers/cft/config/mq-broker.go b/pkg/mapper/iac-providers/cft/config/mq-broker.go
index 131af595b..7ed54a995 100644
--- a/pkg/mapper/iac-providers/cft/config/mq-broker.go
+++ b/pkg/mapper/iac-providers/cft/config/mq-broker.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/amazonmq"
+	"github.com/awslabs/goformation/v6/cloudformation/amazonmq"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // MqBrokerConfig holds config for aws_mq_broker
@@ -38,12 +39,12 @@ func GetMqBorkerConfig(c *amazonmq.Broker) []AWSResourceConfig {
 	}
 	if c.Logs != nil {
 		log := make(map[string]bool)
-		if c.Logs.Audit {
+		if functions.GetVal(c.Logs.Audit) {
 			log["audit"] = true
 		} else {
 			log["audit"] = false
 		}
-		if c.Logs.General {
+		if functions.GetVal(c.Logs.General) {
 			log["general"] = true
 		} else {
 			log["general"] = false
diff --git a/pkg/mapper/iac-providers/cft/config/msk-cluster.go b/pkg/mapper/iac-providers/cft/config/msk-cluster.go
index 064a15b5c..c126ebc8c 100644
--- a/pkg/mapper/iac-providers/cft/config/msk-cluster.go
+++ b/pkg/mapper/iac-providers/cft/config/msk-cluster.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/msk"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/msk"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // EncryptionInTransitBlock holds config for EncryptionInTransit
 type EncryptionInTransitBlock struct {
@@ -55,9 +58,9 @@ func GetMskClusterConfig(c *msk.Cluster) []AWSResourceConfig {
 		brokerNodeGroupInfo = make([]BrokerNodeGroupInfoBlock, 1)
 
 		brokerNodeGroupInfo[0].InstanceType = c.BrokerNodeGroupInfo.InstanceType
-		brokerNodeGroupInfo[0].EksVolumeSize = c.BrokerNodeGroupInfo.StorageInfo.EBSStorageInfo.VolumeSize
+		brokerNodeGroupInfo[0].EksVolumeSize = functions.GetVal(c.BrokerNodeGroupInfo.StorageInfo.EBSStorageInfo.VolumeSize)
 		brokerNodeGroupInfo[0].ClientSubnets = c.BrokerNodeGroupInfo.ClientSubnets
-		brokerNodeGroupInfo[0].SecurityGroups = c.BrokerNodeGroupInfo.SecurityGroups
+		brokerNodeGroupInfo[0].SecurityGroups = functions.GetVal(c.BrokerNodeGroupInfo.SecurityGroups)
 	}
 
 	var encryptionInfo []EncryptionInfoBlock
@@ -71,8 +74,8 @@ func GetMskClusterConfig(c *msk.Cluster) []AWSResourceConfig {
 		if c.EncryptionInfo.EncryptionInTransit != nil {
 			encryptionInfo[0].EncryptionInTransit = make([]EncryptionInTransitBlock, 1)
 
-			encryptionInfo[0].EncryptionInTransit[0].ClientBroker = c.EncryptionInfo.EncryptionInTransit.ClientBroker
-			encryptionInfo[0].EncryptionInTransit[0].InCluster = c.EncryptionInfo.EncryptionInTransit.InCluster
+			encryptionInfo[0].EncryptionInTransit[0].ClientBroker = functions.GetVal(c.EncryptionInfo.EncryptionInTransit.ClientBroker)
+			encryptionInfo[0].EncryptionInTransit[0].InCluster = functions.GetVal(c.EncryptionInfo.EncryptionInTransit.InCluster)
 		}
 	}
 
diff --git a/pkg/mapper/iac-providers/cft/config/nat-gateway.go b/pkg/mapper/iac-providers/cft/config/nat-gateway.go
index e2012196e..e690a3bf3 100644
--- a/pkg/mapper/iac-providers/cft/config/nat-gateway.go
+++ b/pkg/mapper/iac-providers/cft/config/nat-gateway.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/ec2"
+	"github.com/awslabs/goformation/v6/cloudformation/ec2"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // NatGatewayConfig holds config for aws_nat_gateway
@@ -34,8 +35,8 @@ func GetNatGatewayConfig(e *ec2.NatGateway) []AWSResourceConfig {
 		Config: Config{
 			Tags: e.Tags,
 		},
-		AllocationID:     e.AllocationId,
-		ConnectivityType: e.ConnectivityType,
+		AllocationID:     functions.GetVal(e.AllocationId),
+		ConnectivityType: functions.GetVal(e.ConnectivityType),
 		SubnetID:         e.SubnetId,
 	}
 	return []AWSResourceConfig{{
diff --git a/pkg/mapper/iac-providers/cft/config/neptune-cluster-instance.go b/pkg/mapper/iac-providers/cft/config/neptune-cluster-instance.go
index 0fb009670..6b54b7c16 100644
--- a/pkg/mapper/iac-providers/cft/config/neptune-cluster-instance.go
+++ b/pkg/mapper/iac-providers/cft/config/neptune-cluster-instance.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/neptune"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/neptune"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // NeptuneClusterInstanceConfig holds config for aws_neptune_cluster_instance resource
 type NeptuneClusterInstanceConfig struct {
@@ -36,13 +39,13 @@ func GetNeptuneClusterInstanceConfig(n *neptune.DBInstance) []AWSResourceConfig
 		Config: Config{
 			Tags: n.Tags,
 		},
-		AutoMinorVersionUpgrade:    n.AutoMinorVersionUpgrade,
-		AvailabilityZone:           n.AvailabilityZone,
-		DBClusterIdentifier:        n.DBClusterIdentifier,
+		AutoMinorVersionUpgrade:    functions.GetVal(n.AutoMinorVersionUpgrade),
+		AvailabilityZone:           functions.GetVal(n.AvailabilityZone),
+		DBClusterIdentifier:        functions.GetVal(n.DBClusterIdentifier),
 		DBInstanceClass:            n.DBInstanceClass,
-		DBParameterGroupName:       n.DBParameterGroupName,
-		DBSubnetGroupName:          n.DBSubnetGroupName,
-		PreferredMaintenanceWindow: n.PreferredMaintenanceWindow,
+		DBParameterGroupName:       functions.GetVal(n.DBParameterGroupName),
+		DBSubnetGroupName:          functions.GetVal(n.DBSubnetGroupName),
+		PreferredMaintenanceWindow: functions.GetVal(n.PreferredMaintenanceWindow),
 	}
 	return []AWSResourceConfig{{
 		Resource: cf,
diff --git a/pkg/mapper/iac-providers/cft/config/neptune-cluster.go b/pkg/mapper/iac-providers/cft/config/neptune-cluster.go
index 8c0b609e2..fc59174b6 100644
--- a/pkg/mapper/iac-providers/cft/config/neptune-cluster.go
+++ b/pkg/mapper/iac-providers/cft/config/neptune-cluster.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/neptune"
+	"github.com/awslabs/goformation/v6/cloudformation/neptune"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // NeptuneClusterConfig holds config for aws_neptune_cluster
@@ -33,8 +34,8 @@ func GetNeptuneClusterConfig(d *neptune.DBCluster) []AWSResourceConfig {
 		Config: Config{
 			Tags: d.Tags,
 		},
-		StorageEncrypted:            d.StorageEncrypted,
-		EnableCloudwatchLogsExports: d.EnableCloudwatchLogsExports,
+		StorageEncrypted:            functions.GetVal(d.StorageEncrypted),
+		EnableCloudwatchLogsExports: functions.GetVal(d.EnableCloudwatchLogsExports),
 	}
 	return []AWSResourceConfig{{
 		Resource: cf,
diff --git a/pkg/mapper/iac-providers/cft/config/qldb-ledger.go b/pkg/mapper/iac-providers/cft/config/qldb-ledger.go
index 8cd22efae..dbe144167 100644
--- a/pkg/mapper/iac-providers/cft/config/qldb-ledger.go
+++ b/pkg/mapper/iac-providers/cft/config/qldb-ledger.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/qldb"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/qldb"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // QldbLedgerConfig holds config for aws_qldb_ledger resource
 type QldbLedgerConfig struct {
@@ -31,12 +34,12 @@ func GetQldbLedgerConfig(q *qldb.Ledger) []AWSResourceConfig {
 
 	cf := QldbLedgerConfig{
 		Config: Config{
-			Name: q.Name,
+			Name: functions.GetVal(q.Name),
 			Tags: q.Tags,
 		},
-		Name:               q.Name,
+		Name:               functions.GetVal(q.Name),
 		PermissionsMode:    q.PermissionsMode,
-		DeletionProtection: q.DeletionProtection,
+		DeletionProtection: functions.GetVal(q.DeletionProtection),
 	}
 
 	return []AWSResourceConfig{{
diff --git a/pkg/mapper/iac-providers/cft/config/ram-resource-share.go b/pkg/mapper/iac-providers/cft/config/ram-resource-share.go
index 6dfeeb62e..e92628d8d 100644
--- a/pkg/mapper/iac-providers/cft/config/ram-resource-share.go
+++ b/pkg/mapper/iac-providers/cft/config/ram-resource-share.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/ram"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/ram"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // RAMResourceShareConfig holds config for RAMResourceShare
 type RAMResourceShareConfig struct {
@@ -33,7 +36,7 @@ func GetRAMResourceShareConfig(r *ram.ResourceShare) []AWSResourceConfig {
 			Tags: r.Tags,
 		},
 		Name:                    r.Name,
-		AllowExternalPrincipals: r.AllowExternalPrincipals,
+		AllowExternalPrincipals: functions.GetVal(r.AllowExternalPrincipals),
 	}
 
 	return []AWSResourceConfig{{
diff --git a/pkg/mapper/iac-providers/cft/config/rds-cluster.go b/pkg/mapper/iac-providers/cft/config/rds-cluster.go
index fd5376172..99e431930 100644
--- a/pkg/mapper/iac-providers/cft/config/rds-cluster.go
+++ b/pkg/mapper/iac-providers/cft/config/rds-cluster.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/rds"
+	"github.com/awslabs/goformation/v6/cloudformation/rds"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // RDSClusterConfig holds config for aws_rds_cluster
@@ -31,11 +32,11 @@ type RDSClusterConfig struct {
 func GetRDSClusterConfig(c *rds.DBCluster) []AWSResourceConfig {
 	cf := RDSClusterConfig{
 		Config: Config{
-			Name: c.DatabaseName,
+			Name: functions.GetVal(c.DatabaseName),
 			Tags: c.Tags,
 		},
-		BackupRetentionPeriod: c.BackupRetentionPeriod,
-		StorageEncrypted:      c.StorageEncrypted,
+		BackupRetentionPeriod: functions.GetVal(c.BackupRetentionPeriod),
+		StorageEncrypted:      functions.GetVal(c.StorageEncrypted),
 	}
 	return []AWSResourceConfig{{
 		Resource: cf,
diff --git a/pkg/mapper/iac-providers/cft/config/redshift-cluster.go b/pkg/mapper/iac-providers/cft/config/redshift-cluster.go
index 5db4e6a93..1616a9c1d 100644
--- a/pkg/mapper/iac-providers/cft/config/redshift-cluster.go
+++ b/pkg/mapper/iac-providers/cft/config/redshift-cluster.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/redshift"
+	"github.com/awslabs/goformation/v6/cloudformation/redshift"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // RedshiftClusterConfig holds config for aws_redshift_cluster
@@ -36,9 +37,9 @@ func GetRedshiftClusterConfig(c *redshift.Cluster) []AWSResourceConfig {
 			Name: c.DBName,
 			Tags: c.Tags,
 		},
-		KmsKeyID:           c.KmsKeyId,
-		Encrypted:          c.Encrypted,
-		PubliclyAccessible: c.PubliclyAccessible,
+		KmsKeyID:           functions.GetVal(c.KmsKeyId),
+		Encrypted:          functions.GetVal(c.Encrypted),
+		PubliclyAccessible: functions.GetVal(c.PubliclyAccessible),
 	}
 	if c.LoggingProperties != nil {
 		// if LoggingProperties are mentioned in cft,
diff --git a/pkg/mapper/iac-providers/cft/config/redshift-parameter-group.go b/pkg/mapper/iac-providers/cft/config/redshift-parameter-group.go
index 63e2da618..274ebfc2c 100644
--- a/pkg/mapper/iac-providers/cft/config/redshift-parameter-group.go
+++ b/pkg/mapper/iac-providers/cft/config/redshift-parameter-group.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/redshift"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/redshift"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // ParameterBlock holds config for Parameter
 type ParameterBlock struct {
@@ -35,10 +38,14 @@ type RedshiftParameterGroupConfig struct {
 
 // GetRedshiftParameterGroupConfig returns config for RedshiftParameterGroup
 func GetRedshiftParameterGroupConfig(p *redshift.ClusterParameterGroup, paramGroupName string) []AWSResourceConfig {
-	parameterBlock := make([]ParameterBlock, len(p.Parameters))
-	for i := range p.Parameters {
-		parameterBlock[i].Name = p.Parameters[i].ParameterName
-		parameterBlock[i].Value = p.Parameters[i].ParameterValue
+	var parameterBlock []ParameterBlock
+	if p.Parameters != nil {
+		params := functions.GetVal(p.Parameters)
+		parameterBlock := make([]ParameterBlock, len(params))
+		for i, parameter := range params {
+			parameterBlock[i].Name = parameter.ParameterName
+			parameterBlock[i].Value = parameter.ParameterValue
+		}
 	}
 
 	cf := RedshiftParameterGroupConfig{
diff --git a/pkg/mapper/iac-providers/cft/config/route-table-association.go b/pkg/mapper/iac-providers/cft/config/route-table-association.go
index 51617a355..6bb2c4384 100644
--- a/pkg/mapper/iac-providers/cft/config/route-table-association.go
+++ b/pkg/mapper/iac-providers/cft/config/route-table-association.go
@@ -17,7 +17,7 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/ec2"
+	"github.com/awslabs/goformation/v6/cloudformation/ec2"
 )
 
 // RouteTableAssociationConfig holds config for aws_route_table_association
diff --git a/pkg/mapper/iac-providers/cft/config/route-table.go b/pkg/mapper/iac-providers/cft/config/route-table.go
index c9e169e39..0e94b867f 100644
--- a/pkg/mapper/iac-providers/cft/config/route-table.go
+++ b/pkg/mapper/iac-providers/cft/config/route-table.go
@@ -17,7 +17,7 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/ec2"
+	"github.com/awslabs/goformation/v6/cloudformation/ec2"
 )
 
 // RouteTableConfig holds config for aws_route_table
diff --git a/pkg/mapper/iac-providers/cft/config/route.go b/pkg/mapper/iac-providers/cft/config/route.go
index e81ca676e..4d2689be8 100644
--- a/pkg/mapper/iac-providers/cft/config/route.go
+++ b/pkg/mapper/iac-providers/cft/config/route.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/ec2"
+	"github.com/awslabs/goformation/v6/cloudformation/ec2"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // RouteConfig holds config for aws_route
@@ -41,19 +42,19 @@ type RouteConfig struct {
 // GetRouteConfig returns config for aws_route
 func GetRouteConfig(e *ec2.Route) []AWSResourceConfig {
 	cf := RouteConfig{
-		CarrierGatewayID:            e.CarrierGatewayId,
-		DestinationCidrBlock:        e.DestinationCidrBlock,
-		DestinationIpv6CidrBlock:    e.DestinationIpv6CidrBlock,
-		EgressOnlyInternetGatewayID: e.EgressOnlyInternetGatewayId,
-		GatewayID:                   e.GatewayId,
-		InstanceID:                  e.InstanceId,
-		LocalGatewayID:              e.LocalGatewayId,
-		NatGatewayID:                e.NatGatewayId,
-		NetworkInterfaceID:          e.NetworkInterfaceId,
+		CarrierGatewayID:            functions.GetVal(e.CarrierGatewayId),
+		DestinationCidrBlock:        functions.GetVal(e.DestinationCidrBlock),
+		DestinationIpv6CidrBlock:    functions.GetVal(e.DestinationIpv6CidrBlock),
+		EgressOnlyInternetGatewayID: functions.GetVal(e.EgressOnlyInternetGatewayId),
+		GatewayID:                   functions.GetVal(e.GatewayId),
+		InstanceID:                  functions.GetVal(e.InstanceId),
+		LocalGatewayID:              functions.GetVal(e.LocalGatewayId),
+		NatGatewayID:                functions.GetVal(e.NatGatewayId),
+		NetworkInterfaceID:          functions.GetVal(e.NetworkInterfaceId),
 		RouteTableID:                e.RouteTableId,
-		TransitGatewayID:            e.TransitGatewayId,
-		VpcEndpointID:               e.VpcEndpointId,
-		VpcPeeringConnectionID:      e.VpcPeeringConnectionId,
+		TransitGatewayID:            functions.GetVal(e.TransitGatewayId),
+		VpcEndpointID:               functions.GetVal(e.VpcEndpointId),
+		VpcPeeringConnectionID:      functions.GetVal(e.VpcPeeringConnectionId),
 	}
 	return []AWSResourceConfig{{
 		Resource: cf,
diff --git a/pkg/mapper/iac-providers/cft/config/route53-record.go b/pkg/mapper/iac-providers/cft/config/route53-record.go
index 198635b52..8803a7b7d 100644
--- a/pkg/mapper/iac-providers/cft/config/route53-record.go
+++ b/pkg/mapper/iac-providers/cft/config/route53-record.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/route53"
+	"github.com/awslabs/goformation/v6/cloudformation/route53"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // Route53RecordConfig holds config for aws_route53_record
@@ -32,7 +33,7 @@ func GetRoute53RecordConfig(r *route53.RecordSet) []AWSResourceConfig {
 		Config: Config{
 			Name: r.Name,
 		},
-		ResourceRecords: r.ResourceRecords,
+		ResourceRecords: functions.GetVal(r.ResourceRecords),
 	}
 	return []AWSResourceConfig{{
 		Resource: cf,
diff --git a/pkg/mapper/iac-providers/cft/config/s3-bucket-policy.go b/pkg/mapper/iac-providers/cft/config/s3-bucket-policy.go
index d5c843ad5..b8f9770c0 100644
--- a/pkg/mapper/iac-providers/cft/config/s3-bucket-policy.go
+++ b/pkg/mapper/iac-providers/cft/config/s3-bucket-policy.go
@@ -19,7 +19,7 @@ package config
 import (
 	"encoding/json"
 
-	"github.com/awslabs/goformation/v5/cloudformation/s3"
+	"github.com/awslabs/goformation/v6/cloudformation/s3"
 )
 
 // S3BucketPolicyConfig holds config for aws_s3_bucket_policy
diff --git a/pkg/mapper/iac-providers/cft/config/s3-bucket.go b/pkg/mapper/iac-providers/cft/config/s3-bucket.go
index 48ef7620d..b92cb4fe0 100644
--- a/pkg/mapper/iac-providers/cft/config/s3-bucket.go
+++ b/pkg/mapper/iac-providers/cft/config/s3-bucket.go
@@ -20,7 +20,8 @@ import (
 	"fmt"
 	"strings"
 
-	"github.com/awslabs/goformation/v5/cloudformation/s3"
+	"github.com/awslabs/goformation/v6/cloudformation/s3"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 const (
@@ -87,16 +88,15 @@ type S3BucketPublicAccessBlockConfig struct {
 
 // GetS3BucketConfig returns config for aws_s3_bucket
 func GetS3BucketConfig(s *s3.Bucket) []AWSResourceConfig {
-
 	resourceConfigs := make([]AWSResourceConfig, 0)
 
 	cf := S3BucketConfig{
 		Config: Config{
-			Name: s.BucketName,
+			Name: functions.GetVal(s.BucketName),
 			Tags: s.Tags,
 		},
-		Bucket:        s.BucketName,
-		AccessControl: strings.ToLower(s.AccessControl),
+		Bucket:        functions.GetVal(s.BucketName),
+		AccessControl: strings.ToLower(functions.GetVal(s.AccessControl)),
 	}
 
 	// add sse configurations
@@ -105,7 +105,7 @@ func GetS3BucketConfig(s *s3.Bucket) []AWSResourceConfig {
 		for _, sseRule := range s.BucketEncryption.ServerSideEncryptionConfiguration {
 			if sseRule.ServerSideEncryptionByDefault != nil {
 				defaultConfig := DefaultSSEConfig{
-					KMSMasterKeyID: sseRule.ServerSideEncryptionByDefault.KMSMasterKeyID,
+					KMSMasterKeyID: functions.GetVal(sseRule.ServerSideEncryptionByDefault.KMSMasterKeyID),
 					SSEAlgorithm:   sseRule.ServerSideEncryptionByDefault.SSEAlgorithm,
 				}
 				sseRules = append(sseRules, ServerSideEncryptionRule{
@@ -121,16 +121,16 @@ func GetS3BucketConfig(s *s3.Bucket) []AWSResourceConfig {
 	// add logging configurasions
 	if s.LoggingConfiguration != nil {
 		cf.Logging = []LoggingConfig{{
-			DestinationBucketName: s.LoggingConfiguration.DestinationBucketName,
-			LogFilePrefix:         s.LoggingConfiguration.LogFilePrefix,
+			DestinationBucketName: functions.GetVal(s.LoggingConfiguration.DestinationBucketName),
+			LogFilePrefix:         functions.GetVal(s.LoggingConfiguration.LogFilePrefix),
 		}}
 	}
 
 	// add website configurations
 	if s.WebsiteConfiguration != nil {
 		cf.WebsiteConfiguration = []WebsiteConfig{{
-			IndexDocument:         s.WebsiteConfiguration.IndexDocument,
-			ErrorDocument:         s.WebsiteConfiguration.ErrorDocument,
+			IndexDocument:         functions.GetVal(s.WebsiteConfiguration.IndexDocument),
+			ErrorDocument:         functions.GetVal(s.WebsiteConfiguration.ErrorDocument),
 			RedirectAllRequestsTo: s.WebsiteConfiguration.RedirectAllRequestsTo,
 			RoutingRules:          s.WebsiteConfiguration.RoutingRules,
 		}}
@@ -158,17 +158,17 @@ func GetS3BucketConfig(s *s3.Bucket) []AWSResourceConfig {
 		resourceConfigs = append(resourceConfigs, AWSResourceConfig{
 			Resource: S3BucketPublicAccessBlockConfig{
 				Config: Config{
-					Name: s.BucketName,
+					Name: functions.GetVal(s.BucketName),
 				},
-				Bucket:                fmt.Sprintf("aws_s3_bucket.%s", s.BucketName),
-				BlockPublicAcls:       s.PublicAccessBlockConfiguration.BlockPublicAcls,
-				BlockPublicPolicy:     s.PublicAccessBlockConfiguration.BlockPublicPolicy,
-				IgnorePublicAcls:      s.PublicAccessBlockConfiguration.IgnorePublicAcls,
-				RestrictPublicBuckets: s.PublicAccessBlockConfiguration.RestrictPublicBuckets,
+				Bucket:                fmt.Sprintf("aws_s3_bucket.%s", functions.GetVal(s.BucketName)),
+				BlockPublicAcls:       functions.GetVal(s.PublicAccessBlockConfiguration.BlockPublicAcls),
+				BlockPublicPolicy:     functions.GetVal(s.PublicAccessBlockConfiguration.BlockPublicPolicy),
+				IgnorePublicAcls:      functions.GetVal(s.PublicAccessBlockConfiguration.IgnorePublicAcls),
+				RestrictPublicBuckets: functions.GetVal(s.PublicAccessBlockConfiguration.RestrictPublicBuckets),
 			},
 			Metadata: s.AWSCloudFormationMetadata,
 			Type:     PublicAccessBlock,
-			Name:     s.BucketName,
+			Name:     functions.GetVal(s.BucketName),
 		})
 	}
 
diff --git a/pkg/mapper/iac-providers/cft/config/sagemaker-model.go b/pkg/mapper/iac-providers/cft/config/sagemaker-model.go
index e0737e384..b1b2b1502 100644
--- a/pkg/mapper/iac-providers/cft/config/sagemaker-model.go
+++ b/pkg/mapper/iac-providers/cft/config/sagemaker-model.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/sagemaker"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/sagemaker"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // ImageConfigBlock holds config for ImageConfig
 type ImageConfigBlock struct {
@@ -44,9 +47,12 @@ type SagemakerModelConfig struct {
 
 // GetSagemakerModelConfig returns config for SagemakerModel
 func GetSagemakerModelConfig(m *sagemaker.Model) []AWSResourceConfig {
-	container := make([]ContainerBlock, len(m.Containers))
-	for i := range m.Containers {
-		container[i] = getContainer(m.Containers[i])
+	var containerBlock []ContainerBlock
+	if m.Containers != nil {
+		containerBlock = make([]ContainerBlock, len(*m.Containers))
+		for i, container := range *m.Containers {
+			containerBlock[i] = getContainer(container)
+		}
 	}
 
 	var primaryContainer []ContainerBlock
@@ -57,12 +63,12 @@ func GetSagemakerModelConfig(m *sagemaker.Model) []AWSResourceConfig {
 
 	cf := SagemakerModelConfig{
 		Config: Config{
-			Name: m.ModelName,
+			Name: functions.GetVal(m.ModelName),
 			Tags: m.Tags,
 		},
-		Name:             m.ModelName,
+		Name:             functions.GetVal(m.ModelName),
 		ExecutionRoleARN: m.ExecutionRoleArn,
-		Container:        container,
+		Container:        containerBlock,
 		PrimaryContainer: primaryContainer,
 	}
 
@@ -75,10 +81,10 @@ func GetSagemakerModelConfig(m *sagemaker.Model) []AWSResourceConfig {
 func getContainer(gftContainer sagemaker.Model_ContainerDefinition) ContainerBlock {
 	var container ContainerBlock
 
-	container.Image = gftContainer.Image
-	container.Mode = gftContainer.Mode
-	container.ModelDataURL = gftContainer.ModelDataUrl
-	container.ContainerHostname = gftContainer.ContainerHostname
+	container.Image = functions.GetVal(gftContainer.Image)
+	container.Mode = functions.GetVal(gftContainer.Mode)
+	container.ModelDataURL = functions.GetVal(gftContainer.ModelDataUrl)
+	container.ContainerHostname = functions.GetVal(gftContainer.ContainerHostname)
 	container.Environment = gftContainer.Environment
 
 	if gftContainer.ImageConfig != nil {
diff --git a/pkg/mapper/iac-providers/cft/config/sagemaker-notebookinstance.go b/pkg/mapper/iac-providers/cft/config/sagemaker-notebookinstance.go
index d523d2a66..c1cf999e0 100644
--- a/pkg/mapper/iac-providers/cft/config/sagemaker-notebookinstance.go
+++ b/pkg/mapper/iac-providers/cft/config/sagemaker-notebookinstance.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/sagemaker"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/sagemaker"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // SagemakerNotebookInstanceConfig holds config for SagemakerNotebookInstance
 type SagemakerNotebookInstanceConfig struct {
@@ -33,15 +36,15 @@ type SagemakerNotebookInstanceConfig struct {
 func GetSagemakerNotebookInstanceConfig(n *sagemaker.NotebookInstance) []AWSResourceConfig {
 	cf := SagemakerNotebookInstanceConfig{
 		Config: Config{
-			Name: n.NotebookInstanceName,
+			Name: functions.GetVal(n.NotebookInstanceName),
 			Tags: n.Tags,
 		},
-		Name:                 n.NotebookInstanceName,
+		Name:                 functions.GetVal(n.NotebookInstanceName),
 		RoleARN:              n.RoleArn,
 		InstanceType:         n.InstanceType,
-		KMSKeyID:             n.KmsKeyId,
-		DirectInternetAccess: n.DirectInternetAccess,
-		RootAccess:           n.RootAccess,
+		KMSKeyID:             functions.GetVal(n.KmsKeyId),
+		DirectInternetAccess: functions.GetVal(n.DirectInternetAccess),
+		RootAccess:           functions.GetVal(n.RootAccess),
 	}
 
 	return []AWSResourceConfig{{
diff --git a/pkg/mapper/iac-providers/cft/config/secretsmanager-secret-policy.go b/pkg/mapper/iac-providers/cft/config/secretsmanager-secret-policy.go
index 05517398e..7a0afaf35 100644
--- a/pkg/mapper/iac-providers/cft/config/secretsmanager-secret-policy.go
+++ b/pkg/mapper/iac-providers/cft/config/secretsmanager-secret-policy.go
@@ -19,7 +19,7 @@ package config
 import (
 	"encoding/json"
 
-	"github.com/awslabs/goformation/v5/cloudformation/secretsmanager"
+	"github.com/awslabs/goformation/v6/cloudformation/secretsmanager"
 )
 
 // SecretsManagerSecretPolicyConfig holds config for aws_secretsmanager_secret_policy
diff --git a/pkg/mapper/iac-providers/cft/config/secretsmanager-secret-rotation.go b/pkg/mapper/iac-providers/cft/config/secretsmanager-secret-rotation.go
index 05372900d..954356f71 100644
--- a/pkg/mapper/iac-providers/cft/config/secretsmanager-secret-rotation.go
+++ b/pkg/mapper/iac-providers/cft/config/secretsmanager-secret-rotation.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/secretsmanager"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/secretsmanager"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // SecretRotationRulesBlock holds config for SecretRotationRules
 type SecretRotationRulesBlock struct {
@@ -36,12 +39,12 @@ func GetSecretsManagerSecretRotationConfig(r *secretsmanager.RotationSchedule) [
 	var rotationRules []SecretRotationRulesBlock
 	if r.RotationRules != nil {
 		rotationRules = make([]SecretRotationRulesBlock, 1)
-		rotationRules[0].AutomaticallyAfterDays = r.RotationRules.AutomaticallyAfterDays
+		rotationRules[0].AutomaticallyAfterDays = functions.GetVal(r.RotationRules.AutomaticallyAfterDays)
 	}
 
 	cf := SecretsManagerSecretRotationConfig{
 		SecretID:          r.SecretId,
-		RotationLambdaARN: r.RotationLambdaARN,
+		RotationLambdaARN: functions.GetVal(r.RotationLambdaARN),
 		RotationRules:     rotationRules,
 	}
 
diff --git a/pkg/mapper/iac-providers/cft/config/secretsmanager-secret.go b/pkg/mapper/iac-providers/cft/config/secretsmanager-secret.go
index d114f108a..5c12621fc 100644
--- a/pkg/mapper/iac-providers/cft/config/secretsmanager-secret.go
+++ b/pkg/mapper/iac-providers/cft/config/secretsmanager-secret.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/secretsmanager"
+	"github.com/awslabs/goformation/v6/cloudformation/secretsmanager"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // SecretsManagerSecretConfig holds config for aws_secretsmanager_secret
@@ -31,9 +32,9 @@ func GetSecretsManagerSecretConfig(s *secretsmanager.Secret) []AWSResourceConfig
 	cf := SecretsManagerSecretConfig{
 		Config: Config{
 			Tags: s.Tags,
-			Name: s.Name,
+			Name: functions.GetVal(s.Name),
 		},
-		KmsKeyID: s.KmsKeyId,
+		KmsKeyID: functions.GetVal(s.KmsKeyId),
 	}
 	return []AWSResourceConfig{{
 		Resource: cf,
diff --git a/pkg/mapper/iac-providers/cft/config/security-group.go b/pkg/mapper/iac-providers/cft/config/security-group.go
index a8b317b1b..f41d8d2ba 100644
--- a/pkg/mapper/iac-providers/cft/config/security-group.go
+++ b/pkg/mapper/iac-providers/cft/config/security-group.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/ec2"
+	"github.com/awslabs/goformation/v6/cloudformation/ec2"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // IngressEgress holds config for SecurityGroupEgress, SecurityGroupIngress attributes of SecurityGroupConfig
@@ -43,37 +44,23 @@ type SecurityGroupConfig struct {
 func GetSecurityGroupConfig(s *ec2.SecurityGroup) []AWSResourceConfig {
 	cf := SecurityGroupConfig{
 		Config: Config{
-			Name: s.GroupName,
+			Name: functions.GetVal(s.GroupName),
 			Tags: s.Tags,
 		},
-		GroupName:        s.GroupName,
+		GroupName:        functions.GetVal(s.GroupName),
 		GroupDescription: s.GroupDescription,
 	}
 
 	ingresses := make([]IngressEgress, 0)
-	for _, i := range s.SecurityGroupIngress {
-		ingress := IngressEgress{
-			IPProtocol:  i.IpProtocol,
-			Description: i.Description,
-			CidrIP:      []string{i.CidrIp},
-			CidrIpv6:    []string{i.CidrIpv6},
-			FromPort:    i.FromPort,
-			ToPort:      i.ToPort,
-		}
+	for _, i := range functions.GetVal(s.SecurityGroupIngress) {
+		ingress := getIngressEgress(i)
 		ingresses = append(ingresses, ingress)
 	}
 	cf.SecurityGroupIngress = ingresses
 
 	egresses := make([]IngressEgress, 0)
-	for _, e := range s.SecurityGroupEgress {
-		egress := IngressEgress{
-			IPProtocol:  e.IpProtocol,
-			Description: e.Description,
-			CidrIP:      []string{e.CidrIp},
-			CidrIpv6:    []string{e.CidrIpv6},
-			FromPort:    e.FromPort,
-			ToPort:      e.ToPort,
-		}
+	for _, e := range functions.GetVal(s.SecurityGroupEgress) {
+		egress := getIngressEgress(e)
 		egresses = append(egresses, egress)
 	}
 	cf.SecurityGroupEgress = egresses
@@ -83,3 +70,35 @@ func GetSecurityGroupConfig(s *ec2.SecurityGroup) []AWSResourceConfig {
 		Metadata: s.AWSCloudFormationMetadata,
 	}}
 }
+
+func getIngressEgress(ie any) IngressEgress {
+	if egress, ok := ie.(*ec2.SecurityGroup_Egress); ok {
+		return getEgress(egress)
+	}
+	if ingress, ok := ie.(*ec2.SecurityGroup_Ingress); ok {
+		return getIngress(ingress)
+	}
+	return IngressEgress{}
+}
+
+func getEgress(egress *ec2.SecurityGroup_Egress) IngressEgress {
+	return IngressEgress{
+		IPProtocol:  egress.IpProtocol,
+		Description: functions.GetVal(egress.Description),
+		CidrIP:      []string{functions.GetVal(egress.CidrIp)},
+		CidrIpv6:    []string{functions.GetVal(egress.CidrIpv6)},
+		FromPort:    functions.GetVal(egress.FromPort),
+		ToPort:      functions.GetVal(egress.ToPort),
+	}
+}
+
+func getIngress(egress *ec2.SecurityGroup_Ingress) IngressEgress {
+	return IngressEgress{
+		IPProtocol:  egress.IpProtocol,
+		Description: functions.GetVal(egress.Description),
+		CidrIP:      []string{functions.GetVal(egress.CidrIp)},
+		CidrIpv6:    []string{functions.GetVal(egress.CidrIpv6)},
+		FromPort:    functions.GetVal(egress.FromPort),
+		ToPort:      functions.GetVal(egress.ToPort),
+	}
+}
diff --git a/pkg/mapper/iac-providers/cft/config/sns-topic-policy.go b/pkg/mapper/iac-providers/cft/config/sns-topic-policy.go
index fe1fd48f0..600271c22 100644
--- a/pkg/mapper/iac-providers/cft/config/sns-topic-policy.go
+++ b/pkg/mapper/iac-providers/cft/config/sns-topic-policy.go
@@ -19,7 +19,7 @@ package config
 import (
 	"encoding/json"
 
-	"github.com/awslabs/goformation/v5/cloudformation/sns"
+	"github.com/awslabs/goformation/v6/cloudformation/sns"
 )
 
 // SnsTopicPolicyConfig holds config for SnsTopicPolicy
diff --git a/pkg/mapper/iac-providers/cft/config/sns-topic.go b/pkg/mapper/iac-providers/cft/config/sns-topic.go
index 26ae77ca7..55bd6b71a 100644
--- a/pkg/mapper/iac-providers/cft/config/sns-topic.go
+++ b/pkg/mapper/iac-providers/cft/config/sns-topic.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/sns"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/sns"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // SnsTopicConfig holds config for SnsTopic
 type SnsTopicConfig struct {
@@ -29,10 +32,10 @@ type SnsTopicConfig struct {
 func GetSnsTopicConfig(t *sns.Topic) []AWSResourceConfig {
 	cf := SnsTopicConfig{
 		Config: Config{
-			Name: t.TopicName,
+			Name: functions.GetVal(t.TopicName),
 		},
-		Name:        t.TopicName,
-		KmsMasterID: t.KmsMasterKeyId,
+		Name:        functions.GetVal(t.TopicName),
+		KmsMasterID: functions.GetVal(t.KmsMasterKeyId),
 	}
 	return []AWSResourceConfig{{
 		Resource: cf,
diff --git a/pkg/mapper/iac-providers/cft/config/sqs-queue-policy.go b/pkg/mapper/iac-providers/cft/config/sqs-queue-policy.go
index a980e491e..d7aa737a1 100644
--- a/pkg/mapper/iac-providers/cft/config/sqs-queue-policy.go
+++ b/pkg/mapper/iac-providers/cft/config/sqs-queue-policy.go
@@ -19,7 +19,7 @@ package config
 import (
 	"encoding/json"
 
-	"github.com/awslabs/goformation/v5/cloudformation/sqs"
+	"github.com/awslabs/goformation/v6/cloudformation/sqs"
 )
 
 // SqsQueuePolicyConfig holds config for SqsQueuePolicy
diff --git a/pkg/mapper/iac-providers/cft/config/sqs-queue.go b/pkg/mapper/iac-providers/cft/config/sqs-queue.go
index 1895ff8ff..ba3a9fadc 100644
--- a/pkg/mapper/iac-providers/cft/config/sqs-queue.go
+++ b/pkg/mapper/iac-providers/cft/config/sqs-queue.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/sqs"
+	"github.com/awslabs/goformation/v6/cloudformation/sqs"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // SqsQueueConfig holds config for SqsQueue
@@ -33,12 +34,12 @@ type SqsQueueConfig struct {
 func GetSqsQueueConfig(q *sqs.Queue) []AWSResourceConfig {
 	cf := SqsQueueConfig{
 		Config: Config{
-			Name: q.QueueName,
+			Name: functions.GetVal(q.QueueName),
 		},
-		Name:                         q.QueueName,
-		KmsMasterKeyID:               q.KmsMasterKeyId,
-		KmsDataKeyReusePeriodSeconds: q.KmsDataKeyReusePeriodSeconds,
-		MessageRetentionSeconds:      q.MessageRetentionPeriod,
+		Name:                         functions.GetVal(q.QueueName),
+		KmsMasterKeyID:               functions.GetVal(q.KmsMasterKeyId),
+		KmsDataKeyReusePeriodSeconds: functions.GetVal(q.KmsDataKeyReusePeriodSeconds),
+		MessageRetentionSeconds:      functions.GetVal(q.MessageRetentionPeriod),
 	}
 	return []AWSResourceConfig{{
 		Resource: cf,
diff --git a/pkg/mapper/iac-providers/cft/config/subnet.go b/pkg/mapper/iac-providers/cft/config/subnet.go
index b4f8bbe8f..07089507f 100644
--- a/pkg/mapper/iac-providers/cft/config/subnet.go
+++ b/pkg/mapper/iac-providers/cft/config/subnet.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/ec2"
+	"github.com/awslabs/goformation/v6/cloudformation/ec2"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // SubnetConfig holds config for aws_subnet
@@ -38,12 +39,12 @@ func GetSubnetConfig(e *ec2.Subnet) []AWSResourceConfig {
 		Config: Config{
 			Tags: e.Tags,
 		},
-		AssignIpv6AddressOnCreation: e.AssignIpv6AddressOnCreation,
-		AvailabilityZone:            e.AvailabilityZone,
-		CidrBlock:                   e.CidrBlock,
-		Ipv6CidrBlock:               e.Ipv6CidrBlock,
-		MapPublicIPOnLaunch:         e.MapPublicIpOnLaunch,
-		OutpostArn:                  e.OutpostArn,
+		AssignIpv6AddressOnCreation: functions.GetVal(e.AssignIpv6AddressOnCreation),
+		AvailabilityZone:            functions.GetVal(e.AvailabilityZone),
+		CidrBlock:                   functions.GetVal(e.CidrBlock),
+		Ipv6CidrBlock:               functions.GetVal(e.Ipv6CidrBlock),
+		MapPublicIPOnLaunch:         functions.GetVal(e.MapPublicIpOnLaunch),
+		OutpostArn:                  functions.GetVal(e.OutpostArn),
 		VpcID:                       e.VpcId,
 	}
 	return []AWSResourceConfig{{
diff --git a/pkg/mapper/iac-providers/cft/config/waf-size-constraint-set.go b/pkg/mapper/iac-providers/cft/config/waf-size-constraint-set.go
index 84d9819b8..ea3a0ea6c 100644
--- a/pkg/mapper/iac-providers/cft/config/waf-size-constraint-set.go
+++ b/pkg/mapper/iac-providers/cft/config/waf-size-constraint-set.go
@@ -16,7 +16,10 @@
 
 package config
 
-import "github.com/awslabs/goformation/v5/cloudformation/waf"
+import (
+	"github.com/awslabs/goformation/v6/cloudformation/waf"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
+)
 
 // FieldToMatchBlock holds field_to_match attribute
 type FieldToMatchBlock struct {
@@ -73,8 +76,8 @@ func setFieldToMatch(w *waf.SizeConstraintSet, index int) []FieldToMatchBlock {
 	fieldToMatchBlock := make([]FieldToMatchBlock, 1)
 	fieldToMatchBlock[0].Type = w.SizeConstraints[index].FieldToMatch.Type
 
-	if w.SizeConstraints[index].FieldToMatch.Data != "" {
-		fieldToMatchBlock[0].Data = w.SizeConstraints[index].FieldToMatch.Data
+	if w.SizeConstraints[index].FieldToMatch.Data != nil {
+		fieldToMatchBlock[0].Data = functions.GetVal(w.SizeConstraints[index].FieldToMatch.Data)
 	}
 
 	return fieldToMatchBlock
diff --git a/pkg/mapper/iac-providers/cft/config/workspaces-workspace.go b/pkg/mapper/iac-providers/cft/config/workspaces-workspace.go
index 4922234d6..954bf145b 100644
--- a/pkg/mapper/iac-providers/cft/config/workspaces-workspace.go
+++ b/pkg/mapper/iac-providers/cft/config/workspaces-workspace.go
@@ -17,7 +17,8 @@
 package config
 
 import (
-	"github.com/awslabs/goformation/v5/cloudformation/workspaces"
+	"github.com/awslabs/goformation/v6/cloudformation/workspaces"
+	"github.com/tenable/terrascan/pkg/mapper/iac-providers/cft/functions"
 )
 
 // WorkspacesWorkspaceConfig holds config for aws_workspaces_workspace
@@ -34,8 +35,8 @@ func GetWorkspacesWorkspaceConfig(w *workspaces.Workspace) []AWSResourceConfig {
 			Name: w.UserName,
 			Tags: w.Tags,
 		},
-		UserVolumeEncryptionEnabled: w.UserVolumeEncryptionEnabled,
-		RootVolumeEncryptionEnabled: w.RootVolumeEncryptionEnabled,
+		UserVolumeEncryptionEnabled: functions.GetVal(w.UserVolumeEncryptionEnabled),
+		RootVolumeEncryptionEnabled: functions.GetVal(w.RootVolumeEncryptionEnabled),
 	}
 	return []AWSResourceConfig{{
 		Resource: cf,
diff --git a/pkg/mapper/iac-providers/cft/functions/s3-download.go b/pkg/mapper/iac-providers/cft/functions/s3-download.go
index 279ce0a1f..e03acd328 100644
--- a/pkg/mapper/iac-providers/cft/functions/s3-download.go
+++ b/pkg/mapper/iac-providers/cft/functions/s3-download.go
@@ -20,7 +20,6 @@ import (
 	"context"
 	"fmt"
 	"io"
-	"io/ioutil"
 	"net/url"
 	"os"
 	"path/filepath"
@@ -152,7 +151,7 @@ func downloadPublicTemplate(uri string) ([]byte, error) {
 		return nil, err
 	}
 
-	fileData, err := ioutil.ReadFile(path)
+	fileData, err := os.ReadFile(path)
 	if err != nil {
 		return nil, err
 	}
diff --git a/pkg/mapper/iac-providers/cft/functions/util.go b/pkg/mapper/iac-providers/cft/functions/util.go
new file mode 100644
index 000000000..c91ca10f1
--- /dev/null
+++ b/pkg/mapper/iac-providers/cft/functions/util.go
@@ -0,0 +1,26 @@
+/*
+	    Copyright (C) 2022 Tenable, Inc.
+
+		Licensed under the Apache License, Version 2.0 (the "License");
+	    you may not use this file except in compliance with the License.
+	    You may obtain a copy of the License at
+
+			http://www.apache.org/licenses/LICENSE-2.0
+
+		Unless required by applicable law or agreed to in writing, software
+	    distributed under the License is distributed on an "AS IS" BASIS,
+	    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+	    See the License for the specific language governing permissions and
+	    limitations under the License.
+*/
+
+package functions
+
+// GetVal function pointer of any type, validates and returns value
+func GetVal[T any](ptr *T) T {
+	if ptr == nil {
+		var retval T
+		return retval
+	}
+	return *ptr
+}
diff --git a/pkg/mapper/iac-providers/cft/store/store.go b/pkg/mapper/iac-providers/cft/store/store.go
index 0783206d5..fd3cc6b21 100644
--- a/pkg/mapper/iac-providers/cft/store/store.go
+++ b/pkg/mapper/iac-providers/cft/store/store.go
@@ -22,7 +22,7 @@ var ResourceTypes = map[string]string{
 	"AWS::ApiGatewayV2::Stage":                         AwsAPIGatewayV2Stage,
 	"AWS::ApiGatewayV2::Api":                           AwsAPIGatewayV2Api,
 	"AWS::ApiGateway::Stage":                           AwsAPIGatewayStage,
-	"AWS::ApiGateway::Stage.MethodSettings":            AwsAPIGatewayStageMethodSettings,
+	"AWS::ApiGateway::Stage.MethodSetting":             AwsAPIGatewayStageMethodSettings,
 	"AWS::ApiGateway::RestApi":                         AwsAPIGatewayRestAPI,
 	"AWS::Athena::WorkGroup":                           AwsAthenaWorkGroup,
 	"AWS::QLDB::Ledger":                                AwsQldbLedger,
diff --git a/pkg/policy/opa/engine.go b/pkg/policy/opa/engine.go
index c62b7b400..872bd61cd 100644
--- a/pkg/policy/opa/engine.go
+++ b/pkg/policy/opa/engine.go
@@ -22,7 +22,6 @@ import (
 	"encoding/json"
 	"errors"
 	"fmt"
-	"io/ioutil"
 	"os"
 	"path/filepath"
 	"sort"
@@ -57,7 +56,7 @@ func NewEngine() (*Engine, error) {
 // LoadRegoMetadata Loads rego metadata from a given file
 func (e *Engine) LoadRegoMetadata(metaFilename string) (*policy.RegoMetadata, error) {
 	// Load metadata file if it exists
-	metadata, err := ioutil.ReadFile(metaFilename)
+	metadata, err := os.ReadFile(metaFilename)
 	if err != nil {
 		if !errors.Is(err, os.ErrNotExist) {
 			zap.S().Error("failed to load rego metadata", zap.String("file", metaFilename), zap.Error(err))
@@ -78,7 +77,7 @@ func (e *Engine) LoadRegoMetadata(metaFilename string) (*policy.RegoMetadata, er
 func (e *Engine) loadRawRegoFilesIntoMap(currentDir string, regoDataList []*policy.RegoData, regoFileMap *map[string][]byte) error {
 	for i := range regoDataList {
 		regoPath := filepath.Join(currentDir, regoDataList[i].Metadata.File)
-		rawRegoData, err := ioutil.ReadFile(regoPath)
+		rawRegoData, err := os.ReadFile(regoPath)
 		if err != nil {
 			zap.S().Error("failed to load rego file", zap.String("file", regoPath), zap.Error(err))
 			continue
@@ -118,8 +117,8 @@ func (e *Engine) LoadRegoFiles(policyPath string, filter policy.PreLoadFilter) e
 	sort.Strings(dirList)
 	for i := range dirList {
 		// Find all files in the current dir
-		var fileInfo []os.FileInfo
-		fileInfo, err = ioutil.ReadDir(dirList[i])
+		var dirEntries []os.DirEntry
+		dirEntries, err = os.ReadDir(dirList[i])
 		if err != nil {
 			if !errors.Is(err, os.ErrNotExist) {
 				zap.S().Debug("error while searching for files", zap.String("dir", dirList[i]))
@@ -128,7 +127,7 @@ func (e *Engine) LoadRegoFiles(policyPath string, filter policy.PreLoadFilter) e
 		}
 
 		// Load the rego metadata first (*.json)
-		metadataFiles := utils.FilterFileInfoBySuffix(&fileInfo, []string{RegoMetadataFileSuffix})
+		metadataFiles := utils.FilterFileInfoBySuffix(&dirEntries, []string{RegoMetadataFileSuffix})
 		if len(metadataFiles) == 0 {
 			zap.S().Debug("no metadata files were found", zap.String("dir", dirList[i]))
 			continue
diff --git a/pkg/results/types.go b/pkg/results/types.go
index a37513f50..4633560c8 100644
--- a/pkg/results/types.go
+++ b/pkg/results/types.go
@@ -84,7 +84,7 @@ type CVSS struct {
 	V3Score  float64 `json:"v3_score,omitempty" yaml:"v3_score,omitempty" xml:"v3_score,attr,omitempty"`
 }
 
-//Vulnerability will hold vulnerability details that will be displayed in scan summary
+// Vulnerability will hold vulnerability details that will be displayed in scan summary
 type Vulnerability struct {
 	Image            string `json:"image" yaml:"image"`
 	Container        string `json:"container,omitempty" yaml:"container,omitempty" xml:"container,attr"`
diff --git a/pkg/termcolor/colorpatterns.go b/pkg/termcolor/colorpatterns.go
index 23094fa0b..7da08b9a0 100644
--- a/pkg/termcolor/colorpatterns.go
+++ b/pkg/termcolor/colorpatterns.go
@@ -3,7 +3,6 @@ package termcolor
 import (
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
 	"os"
 	"regexp"
 
@@ -86,7 +85,7 @@ func GetColorPatterns() map[*regexp.Regexp]FieldStyle {
 
 	if len(patternFile) > 0 {
 		var err error
-		pdata, err = ioutil.ReadFile(patternFile)
+		pdata, err = os.ReadFile(patternFile)
 		if err != nil {
 			zap.S().Warnf("Unable to read color patterns: %v", err)
 			zap.S().Warn("Will proceed with defaults")
diff --git a/pkg/utils/json.go b/pkg/utils/json.go
index 984a7dd85..68cb33076 100644
--- a/pkg/utils/json.go
+++ b/pkg/utils/json.go
@@ -20,7 +20,6 @@ import (
 	"bufio"
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
 	"os"
 	"reflect"
 )
@@ -54,7 +53,7 @@ func LoadJSON(filePath string) ([]*IacDocument, error) {
 	}
 
 	// Second pass extracts raw data
-	fileBytes, err := ioutil.ReadFile(filePath)
+	fileBytes, err := os.ReadFile(filePath)
 	if err != nil {
 		return iacDocumentList, err
 	}
diff --git a/pkg/utils/path.go b/pkg/utils/path.go
index a0e5833de..64baef39b 100644
--- a/pkg/utils/path.go
+++ b/pkg/utils/path.go
@@ -19,7 +19,6 @@ package utils
 import (
 	"errors"
 	"fmt"
-	"io/ioutil"
 	"os"
 	"path/filepath"
 	"sort"
@@ -60,7 +59,7 @@ func FindAllDirectories(basePath string) ([]string, error) {
 }
 
 // FilterFileInfoBySuffix Given a list of files, returns a subset of files containing a suffix which matches the input filter
-func FilterFileInfoBySuffix(allFileList *[]os.FileInfo, filter []string) []*string {
+func FilterFileInfoBySuffix(allFileList *[]os.DirEntry, filter []string) []*string {
 	fileList := make([]*string, 0)
 
 	for i := range *allFileList {
@@ -93,8 +92,8 @@ func FindFilesBySuffix(basePath string, suffixes []string) (map[string][]*string
 	sort.Strings(dirList)
 	for i := range dirList {
 		// Find all files in the current dir
-		var fileInfo []os.FileInfo
-		fileInfo, err = ioutil.ReadDir(dirList[i])
+		var dirEntries []os.DirEntry
+		dirEntries, err = os.ReadDir(dirList[i])
 		if err != nil {
 			if !errors.Is(err, os.ErrNotExist) {
 				zap.S().Debug("error while searching for files", zap.String("dir", dirList[i]), zap.Error(err))
@@ -102,7 +101,7 @@ func FindFilesBySuffix(basePath string, suffixes []string) (map[string][]*string
 			continue
 		}
 
-		fileList := FilterFileInfoBySuffix(&fileInfo, suffixes)
+		fileList := FilterFileInfoBySuffix(&dirEntries, suffixes)
 		if len(fileList) > 0 {
 			retMap[dirList[i]] = fileList
 		}
@@ -115,11 +114,11 @@ func FindFilesBySuffix(basePath string, suffixes []string) (map[string][]*string
 // IT DOES NOT LOOK INTO ANY SUBDIRECTORY. JUST A SINGLE LEVEL FILE SEARCH.
 // Returns an array for string pointers as a list of files
 func FindFilesBySuffixInDir(basePath string, suffixes []string) ([]*string, error) {
-	fileInfos, err := ioutil.ReadDir(basePath)
+	dirEntries, err := os.ReadDir(basePath)
 	if err != nil {
 		return nil, err
 	}
-	return FilterFileInfoBySuffix(&fileInfos, suffixes), nil
+	return FilterFileInfoBySuffix(&dirEntries, suffixes), nil
 }
 
 // AddFileExtension returns full file name string after adding the extension to the filename
diff --git a/pkg/utils/skip_rules.go b/pkg/utils/skip_rules.go
index d24933aff..b962994b3 100644
--- a/pkg/utils/skip_rules.go
+++ b/pkg/utils/skip_rules.go
@@ -94,23 +94,29 @@ func getSkipRuleObject(s string) *output.SkipRule {
 // can be set in annotations for kubernetes manifests and Resource Metadata in AWS cft:
 // k8s:
 // metadata:
-//   annotations:
-//     runterrascan.io/skip: |
-//       [{"rule": "accurics.kubernetes.IAM.109", "comment": "reason to skip the rule"}]
+//
+//	annotations:
+//	  runterrascan.io/skip: |
+//	    [{"rule": "accurics.kubernetes.IAM.109", "comment": "reason to skip the rule"}]
+//
 // cft:
 // Resource:
-//   myResource:
-//     Metadata:
-//       runterrascan.io/skip: |
-//         [{"rule": "AC_AWS_047", "comment": "reason to skip the rule"}]
+//
+//	myResource:
+//	  Metadata:
+//	    runterrascan.io/skip: |
+//	      [{"rule": "AC_AWS_047", "comment": "reason to skip the rule"}]
+//
 // cft json:
-// "Resource":{
-//   "myResource":{
-//     "Metadata":{
-//        "runterrascan.io/skip": "[{\"rule\":\"AWS.CloudFormation.Medium.0603\"}]"
-//     }
-//   }
-// }
+//
+//	"Resource":{
+//	  "myResource":{
+//	    "Metadata":{
+//	       "runterrascan.io/skip": "[{\"rule\":\"AWS.CloudFormation.Medium.0603\"}]"
+//	    }
+//	  }
+//	}
+//
 // each rule and its optional comment must be a string containing an json array like
 // [{rule: ruleID, comment: reason for skipping}]
 func ReadSkipRulesFromMap(skipRulesMap map[string]interface{}, resourceID string) []output.SkipRule {
diff --git a/pkg/utils/tempfile.go b/pkg/utils/tempfile.go
index b01db683a..0b7151115 100644
--- a/pkg/utils/tempfile.go
+++ b/pkg/utils/tempfile.go
@@ -18,7 +18,6 @@ package utils
 
 import (
 	"fmt"
-	"io/ioutil"
 	"os"
 
 	"go.uber.org/zap"
@@ -26,7 +25,7 @@ import (
 
 // CreateTempFile creates a file with provided contents in the temp directory
 func CreateTempFile(content []byte, ext string) (*os.File, error) {
-	tempFile, err := ioutil.TempFile("", fmt.Sprintf("terrascan-*.%s", ext))
+	tempFile, err := os.CreateTemp("", fmt.Sprintf("terrascan-*.%s", ext))
 	if err != nil {
 		zap.S().Errorf("failed to create temp file: '%v'", err)
 		return nil, err
diff --git a/pkg/utils/yaml.go b/pkg/utils/yaml.go
index 8d6285dac..15f02ccf9 100644
--- a/pkg/utils/yaml.go
+++ b/pkg/utils/yaml.go
@@ -5,7 +5,6 @@ import (
 	"bytes"
 	"fmt"
 	"io"
-	"io/ioutil"
 	"os"
 	"strings"
 
@@ -35,7 +34,7 @@ func LoadYAML(filePath string) ([]*IacDocument, error) {
 	}
 	defer file.Close()
 
-	fileBytes, err := ioutil.ReadFile(filePath)
+	fileBytes, err := os.ReadFile(filePath)
 	if err != nil {
 		return iacDocumentList, err
 	}
@@ -51,7 +50,7 @@ func LoadYAMLString(data, absFilePath string) ([]*IacDocument, error) {
 
 // ReadYamlFile reads a yaml file and load content in a map[string]interface{} type
 func ReadYamlFile(path string) (map[string]interface{}, error) {
-	dat, err := ioutil.ReadFile(path)
+	dat, err := os.ReadFile(path)
 	if err != nil {
 		return nil, err
 	}
diff --git a/pkg/vulnerability/acr.go b/pkg/vulnerability/acr.go
index 96ea2e6e9..f473f879e 100644
--- a/pkg/vulnerability/acr.go
+++ b/pkg/vulnerability/acr.go
@@ -37,12 +37,12 @@ const (
 	azureRegistryPassword = "AZURE_ACR_PASSWORD"
 )
 
-//ACR  acr container registry
+// ACR  acr container registry
 type ACR struct {
 	scanner acrScanner
 }
 
-//scanner implementor for acrScanner interface
+// scanner implementor for acrScanner interface
 type scanner struct{}
 
 func init() {
@@ -51,7 +51,7 @@ func init() {
 	})
 }
 
-//acrScanner holds external Azure methods
+// acrScanner holds external Azure methods
 type acrScanner interface {
 	newAuthorizerFromFile() (autorest.Authorizer, error)
 	newResourcegraphClient() resourcegraph.BaseClient
@@ -61,23 +61,23 @@ type acrScanner interface {
 	getAttributes(context.Context, string, string, containerregistry.TagClient) (containerregistry.TagAttributes, error)
 }
 
-//CheckRegistry verify provided image belongs to acr registry
+// CheckRegistry verify provided image belongs to acr registry
 func (a *ACR) checkRegistry(image string) bool {
 	domain := GetDomain(image)
 	return strings.HasSuffix(domain, azureURL)
 }
 
-//newTagClient returns containerregistry tag client
+// newTagClient returns containerregistry tag client
 func (scanner) newTagClient(loginURL string) containerregistry.TagClient {
 	return containerregistry.NewTagClient(loginURL)
 }
 
-//newBasicAuthorizer returns basic athorizer
+// newBasicAuthorizer returns basic athorizer
 func (scanner) newBasicAuthorizer(username string, password string) *autorest.BasicAuthorizer {
 	return autorest.NewBasicAuthorizer(username, password)
 }
 
-//newAuthorizerFromFile creates and returns autherizer
+// newAuthorizerFromFile creates and returns autherizer
 func (scanner) newAuthorizerFromFile() (autorest.Authorizer, error) {
 	authorizer, err := auth.NewAuthorizerFromFile(azure.PublicCloud.ResourceManagerEndpoint)
 	if err != nil {
@@ -87,17 +87,17 @@ func (scanner) newAuthorizerFromFile() (autorest.Authorizer, error) {
 	return authorizer, nil
 }
 
-//newResourcegraphClient returns new resourcegraph client
+// newResourcegraphClient returns new resourcegraph client
 func (scanner) newResourcegraphClient() resourcegraph.BaseClient {
 	return resourcegraph.New()
 }
 
-//getResources returns all the vulnerability resources
+// getResources returns all the vulnerability resources
 func (scanner) getResources(ctx context.Context, request resourcegraph.QueryRequest, client resourcegraph.BaseClient) (resourcegraph.QueryResponse, error) {
 	return client.Resources(ctx, request)
 }
 
-//GetAttributes returns tag attributes
+// GetAttributes returns tag attributes
 func (scanner) getAttributes(ctx context.Context, name string, reference string, client containerregistry.TagClient) (result containerregistry.TagAttributes, err error) {
 	return client.GetAttributes(ctx, name, reference)
 }
@@ -119,7 +119,7 @@ func (a *ACR) getVulnerabilities(container output.ContainerDetails, options map[
 	return
 }
 
-//ScanImage - get the image scan result from ACR registry
+// ScanImage - get the image scan result from ACR registry
 func (a *ACR) ScanImage(image string) ([]output.ACRResponse, error) {
 	results := []output.ACRResponse{}
 	resourcegraphClient := a.scanner.newResourcegraphClient()
diff --git a/pkg/vulnerability/ecr.go b/pkg/vulnerability/ecr.go
index d22d94695..df3aa74d0 100644
--- a/pkg/vulnerability/ecr.go
+++ b/pkg/vulnerability/ecr.go
@@ -38,12 +38,12 @@ var (
 	errorScanningMsg         = "error scanning image %s : %v"
 )
 
-//ECR  ecr container registry
+// ECR  ecr container registry
 type ECR struct {
 	scanner ecrScanner
 }
 
-//scanner implementor for ecrScanner interface
+// scanner implementor for ecrScanner interface
 type escanner struct{}
 
 func init() {
@@ -52,7 +52,7 @@ func init() {
 	})
 }
 
-//ecrScanner  holds external ECR methods
+// ecrScanner  holds external ECR methods
 type ecrScanner interface {
 	newClient() *ecr.ECR
 	describeImageScanFindingsWithContext(ctx context.Context, client *ecr.ECR, input *ecr.DescribeImageScanFindingsInput, opts ...request.Option) (*ecr.DescribeImageScanFindingsOutput, error)
@@ -77,12 +77,12 @@ func (escanner) waitUntilImageScanComplete(client *ecr.ECR, input *ecr.DescribeI
 	return client.WaitUntilImageScanComplete(input)
 }
 
-//startImageScanWithContext start image vulnerability scan
+// startImageScanWithContext start image vulnerability scan
 func (escanner) startImageScanWithContext(ctx context.Context, client *ecr.ECR, input *ecr.StartImageScanInput, opts ...request.Option) (*ecr.StartImageScanOutput, error) {
 	return client.StartImageScanWithContext(ctx, input)
 }
 
-//CheckRegistry verify provided image belongs to ecr registry
+// CheckRegistry verify provided image belongs to ecr registry
 func (e *ECR) checkRegistry(image string) bool {
 	domain := GetDomain(image)
 	return strings.HasSuffix(domain, ecrURL)
diff --git a/pkg/vulnerability/gcr.go b/pkg/vulnerability/gcr.go
index a3a46b632..1f292049e 100644
--- a/pkg/vulnerability/gcr.go
+++ b/pkg/vulnerability/gcr.go
@@ -53,10 +53,10 @@ type gcrScanner interface {
 	listOccurrences(ctx context.Context, client *containeranalysis.Client, req *grafeaspb.ListOccurrencesRequest) ([]*grafeaspb.Occurrence, error)
 }
 
-//scanner implementor for gcrScanner interface
+// scanner implementor for gcrScanner interface
 type gscanner struct{}
 
-//GCR  gcr container registry
+// GCR  gcr container registry
 type GCR struct {
 	scanner gcrScanner
 }
@@ -67,17 +67,17 @@ func init() {
 	})
 }
 
-//newClient  returns new container analysis client
+// newClient  returns new container analysis client
 func (gscanner) newClient(ctx context.Context) (*containeranalysis.Client, error) {
 	return containeranalysis.NewClient(ctx)
 }
 
-//close closes container analysis client
+// close closes container analysis client
 func (gscanner) close(client *containeranalysis.Client) error {
 	return client.Close()
 }
 
-//listOccurrences returns all image vulnerability Occurrences
+// listOccurrences returns all image vulnerability Occurrences
 func (gscanner) listOccurrences(ctx context.Context, client *containeranalysis.Client, req *grafeaspb.ListOccurrencesRequest) ([]*grafeaspb.Occurrence, error) {
 	output := client.GetGrafeasClient().ListOccurrences(ctx, req)
 	occurrences := []*grafeaspb.Occurrence{}
@@ -96,7 +96,7 @@ func (gscanner) listOccurrences(ctx context.Context, client *containeranalysis.C
 	return occurrences, nil
 }
 
-//CheckRegistry verify provided image belongs to gcr registry
+// CheckRegistry verify provided image belongs to gcr registry
 func (g *GCR) checkRegistry(image string) bool {
 	host := GetDomain(image)
 	return strings.HasSuffix(host, gcrURL) || strings.HasSuffix(host, gcrArtifactURL)
@@ -185,7 +185,7 @@ func getProjectIDFromImageName(image string) (string, error) {
 	return projectID, nil
 }
 
-//findDigestForImage - get digest from image name and tag
+// findDigestForImage - get digest from image name and tag
 func findDigestForImage(image string) (digest string, err error) {
 	zap.S().Debug("fetching digest for image %s", image)
 	var nameOpts []name.Option
@@ -229,7 +229,7 @@ func findDigestForImage(image string) (digest string, err error) {
 	return
 }
 
-//getCredentials - get the credentials from the application key
+// getCredentials - get the credentials from the application key
 func getCredentials(image string, domain string) (auth authn.Basic, err error) {
 	gcpCredPath := os.Getenv(googlCredPath)
 	if gcpCredPath == "" {
diff --git a/pkg/vulnerability/harbor.go b/pkg/vulnerability/harbor.go
index 1d5cb1b7a..92a722378 100644
--- a/pkg/vulnerability/harbor.go
+++ b/pkg/vulnerability/harbor.go
@@ -21,7 +21,7 @@ import (
 	"crypto/x509"
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
+	"io"
 	"net/http"
 	"os"
 	"strings"
@@ -40,7 +40,7 @@ const (
 	registryDomain           = "HARBOR_REGISTRY_DOMAIN"
 )
 
-//ServerCaller interface with client methods
+// ServerCaller interface with client methods
 type ServerCaller interface {
 	Do(req *http.Request) (*http.Response, error)
 }
@@ -52,10 +52,10 @@ type harborScanner interface {
 	getClient() *http.Client
 }
 
-//scanner implementor for harborScanner interface
+// scanner implementor for harborScanner interface
 type hscanner struct{}
 
-//Harbor  Harbor container registry
+// Harbor  Harbor container registry
 type Harbor struct {
 	scanner harborScanner
 }
@@ -66,7 +66,7 @@ func init() {
 	})
 }
 
-//prepareRequest prepares http request
+// prepareRequest prepares http request
 func (hscanner) prepareRequest(serverURL string) (*http.Request, error) {
 	username := os.Getenv(registryUsername)
 	password := os.Getenv(registryPassword)
@@ -92,7 +92,7 @@ func (hscanner) prepareRequest(serverURL string) (*http.Request, error) {
 	return req, nil
 }
 
-//getClient prepares http client
+// getClient prepares http client
 func (hscanner) getClient() *http.Client {
 	tlsConfig := &tls.Config{}
 
@@ -105,7 +105,7 @@ func (hscanner) getClient() *http.Client {
 
 	cert := os.Getenv(certificate)
 	if cert != "" {
-		caCert, err := ioutil.ReadFile(cert)
+		caCert, err := os.ReadFile(cert)
 		if err != nil {
 			errorMsg := fmt.Errorf("client certificate not found")
 			zap.S().Error(errorMsg)
@@ -123,7 +123,7 @@ func (hscanner) getClient() *http.Client {
 	}
 }
 
-//sendRequest sends request to harbor
+// sendRequest sends request to harbor
 func (hscanner) sendRequest(caller ServerCaller, req *http.Request) ([]byte, error) {
 	res, err := caller.Do(req)
 	if err != nil {
@@ -134,7 +134,7 @@ func (hscanner) sendRequest(caller ServerCaller, req *http.Request) ([]byte, err
 
 	defer res.Body.Close()
 
-	body, err := ioutil.ReadAll(res.Body)
+	body, err := io.ReadAll(res.Body)
 	if err != nil {
 		errorMsg := fmt.Errorf("error reading response from harbor: %v", err)
 		zap.S().Error(errorMsg)
@@ -149,7 +149,7 @@ func (hscanner) sendRequest(caller ServerCaller, req *http.Request) ([]byte, err
 	return body, nil
 }
 
-//CheckRegistry verify provided image belongs to harbor registry
+// CheckRegistry verify provided image belongs to harbor registry
 func (h *Harbor) checkRegistry(image string) bool {
 	reg := os.Getenv(registryDomain)
 	host := GetDomain(image)
@@ -221,7 +221,7 @@ func (h *Harbor) ScanImage(image string) (result map[string]interface{}, err err
 	return result, nil
 }
 
-//getProjectNameAndRepository fetch project and repo name
+// getProjectNameAndRepository fetch project and repo name
 func getProjectNameAndRepository(name string) (string, string) {
 	parts := strings.Split(name, "/")
 	if len(parts) >= 2 {
diff --git a/pkg/vulnerability/interface.go b/pkg/vulnerability/interface.go
index 8ca5d8921..5e1857973 100644
--- a/pkg/vulnerability/interface.go
+++ b/pkg/vulnerability/interface.go
@@ -20,7 +20,7 @@ import (
 	"github.com/tenable/terrascan/pkg/iac-providers/output"
 )
 
-//ContainerRegistry vulnerability Container Registry
+// ContainerRegistry vulnerability Container Registry
 type ContainerRegistry interface {
 	checkRegistry(image string) bool
 	getVulnerabilities(output.ContainerDetails, map[string]interface{}) []output.Vulnerability
diff --git a/pkg/vulnerability/types.go b/pkg/vulnerability/types.go
index 46701f5ad..bc206dd63 100644
--- a/pkg/vulnerability/types.go
+++ b/pkg/vulnerability/types.go
@@ -50,7 +50,7 @@ type EngineOutput struct {
 	*results.ViolationStore `json:"results" yaml:"results" xml:"results"`
 }
 
-//ImageDetails will hold details about the image being scanned for vulnerabilities.
+// ImageDetails will hold details about the image being scanned for vulnerabilities.
 type ImageDetails struct {
 	Tag        string `json:"tag"`
 	Digest     string `json:"digest"`
@@ -91,7 +91,7 @@ func GetRepository(image string) (repository string) {
 	return
 }
 
-//GetDomain get image domain from image name
+// GetDomain get image domain from image name
 func GetDomain(image string) string {
 	var nameOpts []name.Option
 	ref, err := name.ParseReference(image, nameOpts...)
diff --git a/pkg/vulnerability/vulnerability.go b/pkg/vulnerability/vulnerability.go
index e41d30e5b..fc945d13c 100644
--- a/pkg/vulnerability/vulnerability.go
+++ b/pkg/vulnerability/vulnerability.go
@@ -31,7 +31,7 @@ const (
 	VulnerabilityCVSSSource = "nvd"
 )
 
-//RegisterContainerRegistry register the container registry for vulnerability scanning
+// RegisterContainerRegistry register the container registry for vulnerability scanning
 func RegisterContainerRegistry(registryType string, registry ContainerRegistry) {
 	containerRegistry[registryType] = registry
 }
@@ -46,7 +46,7 @@ func NewVulEngine() (*VulEngine, error) {
 	return engine, nil
 }
 
-//FetchVulnerabilities fetch vulnerabilities for images found in IaC files
+// FetchVulnerabilities fetch vulnerabilities for images found in IaC files
 func (v *VulEngine) FetchVulnerabilities(resourceConfigs output.AllResourceConfigs, options map[string]interface{}) output.AllResourceConfigs {
 	for i, congigs := range resourceConfigs {
 		for j, config := range congigs {
@@ -65,7 +65,7 @@ func (v *VulEngine) FetchVulnerabilities(resourceConfigs output.AllResourceConfi
 	return resourceConfigs
 }
 
-//getVulnerabilitiesByRepository get vulnerabilities depending on type of registry
+// getVulnerabilitiesByRepository get vulnerabilities depending on type of registry
 func getVulnerabilitiesByRepository(container output.ContainerDetails, options map[string]interface{}) []output.Vulnerability {
 	for _, registry := range containerRegistry {
 		if registry.checkRegistry(container.Image) {


Test patch:
diff --git a/pkg/cli/run_test.go b/pkg/cli/run_test.go
index f54da5add..6908cd6dc 100644
--- a/pkg/cli/run_test.go
+++ b/pkg/cli/run_test.go
@@ -17,7 +17,7 @@
 package cli
 
 import (
-	"io/ioutil"
+	"io"
 	"log"
 	"os"
 	"path/filepath"
@@ -59,7 +59,7 @@ var runTestDir = filepath.Join(testDataDir, "run-test")
 func TestRun(t *testing.T) {
 	// disable terraform logs when TF_LOG env variable is not set
 	if os.Getenv("TF_LOG") == "" {
-		log.SetOutput(ioutil.Discard)
+		log.SetOutput(io.Discard)
 	}
 
 	kustomizeTestDirPath := filepath.Join(runTestDir, "kustomize-test")
diff --git a/pkg/downloader/module-download_test.go b/pkg/downloader/module-download_test.go
index ddd2a2da4..ab6328304 100644
--- a/pkg/downloader/module-download_test.go
+++ b/pkg/downloader/module-download_test.go
@@ -18,7 +18,7 @@ package downloader
 
 import (
 	"fmt"
-	"io/ioutil"
+	"io"
 	"log"
 	"os"
 	"path/filepath"
@@ -213,7 +213,7 @@ func TestCleanUp(t *testing.T) {
 	t.Run("test cache clean up", func(t *testing.T) {
 
 		// create temp dir
-		tempDir, err := ioutil.TempDir("", "")
+		tempDir, err := os.MkdirTemp("", "")
 		if err != nil {
 			t.Errorf("failed to create temp dir. error: '%v'", err)
 		}
@@ -238,7 +238,7 @@ func TestDownloadRemoteModule(t *testing.T) {
 
 	// disable terraform logs when TF_LOG env variable is not set
 	if os.Getenv("TF_LOG") == "" {
-		log.SetOutput(ioutil.Discard)
+		log.SetOutput(io.Discard)
 	}
 
 	testConstraintsSecurityGroup, _ := version.NewConstraint("3.17.0")
@@ -597,7 +597,7 @@ func TestBuildDiscoServices(t *testing.T) {
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 			testRCFilePath := filepath.Join(testDirPath, tt.filename)
-			b, err := ioutil.ReadFile(testRCFilePath)
+			b, err := os.ReadFile(testRCFilePath)
 			if err != nil {
 				t.Errorf("Error reading %s: %s", testRCFilePath, err)
 				return
diff --git a/pkg/http-server/webhook-scan_test.go b/pkg/http-server/webhook-scan_test.go
index 055b7afa7..66fe7d2f0 100644
--- a/pkg/http-server/webhook-scan_test.go
+++ b/pkg/http-server/webhook-scan_test.go
@@ -4,7 +4,7 @@ import (
 	"bytes"
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
+	"io"
 	"net/http"
 	"net/http/httptest"
 	"os"
@@ -211,7 +211,7 @@ func TestUWebhooks(t *testing.T) {
 			}
 			defer logger.ClearDbFilePath()
 
-			byteValue, _ := ioutil.ReadAll(jsonFile)
+			byteValue, _ := io.ReadAll(jsonFile)
 
 			var admissionRequest v1.AdmissionReview
 			json.Unmarshal(byteValue, &admissionRequest)
diff --git a/pkg/iac-providers/arm/v1/load-dir_test.go b/pkg/iac-providers/arm/v1/load-dir_test.go
index a597cc9ba..db1c0bc01 100644
--- a/pkg/iac-providers/arm/v1/load-dir_test.go
+++ b/pkg/iac-providers/arm/v1/load-dir_test.go
@@ -19,7 +19,6 @@ package armv1
 import (
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
 	"os"
 	"path/filepath"
 	"syscall"
@@ -58,7 +57,7 @@ func TestLoadIacDir(t *testing.T) {
 	}
 
 	var linkedResConf output.ResourceConfig
-	if templateData, err := ioutil.ReadFile(filepath.Join(testDataDir, "linked", "output.json")); err == nil {
+	if templateData, err := os.ReadFile(filepath.Join(testDataDir, "linked", "output.json")); err == nil {
 		err := json.Unmarshal(templateData, &linkedResConf)
 		if err != nil {
 			t.Errorf("output file not found for linked template test, got %T", err)
@@ -134,7 +133,7 @@ func TestARMMapper(t *testing.T) {
 
 	// get output json to verify
 	var testArc output.AllResourceConfigs
-	outputData, err := ioutil.ReadFile(filepath.Join(root, "output.json"))
+	outputData, err := os.ReadFile(filepath.Join(root, "output.json"))
 	if err != nil {
 		t.Errorf("error reading output.json ResourceConfig, %T", err)
 	}
diff --git a/pkg/iac-providers/cft/v1/load-dir_test.go b/pkg/iac-providers/cft/v1/load-dir_test.go
index a3a196309..b8d700890 100644
--- a/pkg/iac-providers/cft/v1/load-dir_test.go
+++ b/pkg/iac-providers/cft/v1/load-dir_test.go
@@ -19,7 +19,6 @@ package cftv1
 import (
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
 	"log"
 	"os"
 	"path/filepath"
@@ -114,7 +113,7 @@ func TestLoadIacDir(t *testing.T) {
 
 func TestCFTMapper(t *testing.T) {
 	root := filepath.Join(basePath, provider)
-	dirList, err := ioutil.ReadDir(root)
+	dirList, err := os.ReadDir(root)
 	if err != nil {
 		log.Fatal(err)
 	}
@@ -127,7 +126,7 @@ func TestCFTMapper(t *testing.T) {
 
 			// load expected output.json from test artifacts
 			var testArc output.AllResourceConfigs
-			outputData, err := ioutil.ReadFile(filepath.Join(resourceDir, "output.json"))
+			outputData, err := os.ReadFile(filepath.Join(resourceDir, "output.json"))
 			if err != nil {
 				t.Errorf("error reading output.json ResourceConfig, %T", err)
 			}
diff --git a/pkg/iac-providers/cft/v1/sanitize-cft-template_test.go b/pkg/iac-providers/cft/v1/sanitize-cft-template_test.go
index dea13cb84..3233210ae 100644
--- a/pkg/iac-providers/cft/v1/sanitize-cft-template_test.go
+++ b/pkg/iac-providers/cft/v1/sanitize-cft-template_test.go
@@ -18,12 +18,12 @@ package cftv1
 
 import (
 	"encoding/json"
-	"io/ioutil"
+	"os"
 	"path/filepath"
 	"reflect"
 	"testing"
 
-	"github.com/awslabs/goformation/v5"
+	"github.com/awslabs/goformation/v6"
 )
 
 func TestCFTV1_sanitizeCftTemplate(t *testing.T) {
@@ -56,7 +56,7 @@ func TestCFTV1_sanitizeCftTemplate(t *testing.T) {
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 			a := &CFTV1{}
-			data, err := ioutil.ReadFile(tt.inputFile)
+			data, err := os.ReadFile(tt.inputFile)
 			if err != nil {
 				t.Error(err)
 			}
@@ -79,8 +79,8 @@ func TestCFTV1_sanitizeCftTemplate(t *testing.T) {
 			}
 
 			_, err = goformation.ParseJSON(resData)
-			if err != nil {
-				t.Error("CFTV1.sanitizeCftTemplate() got error, expected no error")
+			if err == nil {
+				t.Errorf("CFTV1.sanitizeCftTemplate() expected an error")
 			}
 		})
 	}
diff --git a/pkg/iac-providers/terraform/commons/load-dir_test.go b/pkg/iac-providers/terraform/commons/load-dir_test.go
index 59d1be221..3f5b09f9c 100644
--- a/pkg/iac-providers/terraform/commons/load-dir_test.go
+++ b/pkg/iac-providers/terraform/commons/load-dir_test.go
@@ -19,7 +19,6 @@ package commons
 import (
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
 	"os"
 	"path/filepath"
 	"testing"
@@ -378,7 +377,7 @@ func TestTerraformDirectoryLoaderLoadIacDir(t *testing.T) {
 			var want output.AllResourceConfigs
 
 			// Read the expected value and unmarshal into want
-			contents, _ := ioutil.ReadFile(tt.tfJSONFile)
+			contents, _ := os.ReadFile(tt.tfJSONFile)
 			if utils.IsWindowsPlatform() {
 				contents = utils.ReplaceWinNewLineBytes(contents)
 			}
diff --git a/pkg/iac-providers/terraform/v12/load-dir_test.go b/pkg/iac-providers/terraform/v12/load-dir_test.go
index 233a23f34..7a361ffb0 100644
--- a/pkg/iac-providers/terraform/v12/load-dir_test.go
+++ b/pkg/iac-providers/terraform/v12/load-dir_test.go
@@ -19,7 +19,6 @@ package tfv12
 import (
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
 	"os"
 	"path/filepath"
 	"syscall"
@@ -292,7 +291,7 @@ References to other resources during the destroy phase can cause dependency cycl
 			var want output.AllResourceConfigs
 
 			// Read the expected value and unmarshal into want
-			contents, _ := ioutil.ReadFile(tt.tfJSONFile)
+			contents, _ := os.ReadFile(tt.tfJSONFile)
 			if utils.IsWindowsPlatform() {
 				contents = utils.ReplaceWinNewLineBytes(contents)
 			}
diff --git a/pkg/iac-providers/terraform/v12/load-file_test.go b/pkg/iac-providers/terraform/v12/load-file_test.go
index 5ab979858..afe838271 100644
--- a/pkg/iac-providers/terraform/v12/load-file_test.go
+++ b/pkg/iac-providers/terraform/v12/load-file_test.go
@@ -20,7 +20,7 @@ import (
 	"bytes"
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
+	"os"
 	"path/filepath"
 	"reflect"
 	"testing"
@@ -131,7 +131,7 @@ References to other resources during the destroy phase can cause dependency cycl
 
 			gotBytes, _ := json.MarshalIndent(got, "", "  ")
 			gotBytes = append(gotBytes, []byte{'\n'}...)
-			wantBytes, _ := ioutil.ReadFile(tt.tfJSONFile)
+			wantBytes, _ := os.ReadFile(tt.tfJSONFile)
 
 			if utils.IsWindowsPlatform() {
 				gotBytes = utils.ReplaceCarriageReturnBytes(gotBytes)
diff --git a/pkg/iac-providers/terraform/v14/load-dir_test.go b/pkg/iac-providers/terraform/v14/load-dir_test.go
index 5d67b12b0..853fad040 100644
--- a/pkg/iac-providers/terraform/v14/load-dir_test.go
+++ b/pkg/iac-providers/terraform/v14/load-dir_test.go
@@ -19,7 +19,6 @@ package tfv14
 import (
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
 	"os"
 	"path/filepath"
 	"syscall"
@@ -291,7 +290,7 @@ func TestLoadIacDir(t *testing.T) {
 			var want output.AllResourceConfigs
 
 			// Read the expected value and unmarshal into want
-			contents, _ := ioutil.ReadFile(tt.tfJSONFile)
+			contents, _ := os.ReadFile(tt.tfJSONFile)
 			if utils.IsWindowsPlatform() {
 				contents = utils.ReplaceWinNewLineBytes(contents)
 			}
diff --git a/pkg/iac-providers/terraform/v14/load-file_test.go b/pkg/iac-providers/terraform/v14/load-file_test.go
index 4d893ebc0..883ff449c 100644
--- a/pkg/iac-providers/terraform/v14/load-file_test.go
+++ b/pkg/iac-providers/terraform/v14/load-file_test.go
@@ -20,7 +20,7 @@ import (
 	"bytes"
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
+	"os"
 	"path/filepath"
 	"reflect"
 	"testing"
@@ -132,7 +132,7 @@ func TestLoadIacFile(t *testing.T) {
 
 			gotBytes, _ := json.MarshalIndent(got, "", "  ")
 			gotBytes = append(gotBytes, []byte{'\n'}...)
-			wantBytes, _ := ioutil.ReadFile(tt.tfJSONFile)
+			wantBytes, _ := os.ReadFile(tt.tfJSONFile)
 
 			if utils.IsWindowsPlatform() {
 				gotBytes = utils.ReplaceCarriageReturnBytes(gotBytes)
diff --git a/pkg/iac-providers/terraform/v15/load-dir_test.go b/pkg/iac-providers/terraform/v15/load-dir_test.go
index 9a5d903d1..f9ecda80b 100644
--- a/pkg/iac-providers/terraform/v15/load-dir_test.go
+++ b/pkg/iac-providers/terraform/v15/load-dir_test.go
@@ -19,7 +19,6 @@ package tfv15
 import (
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
 	"os"
 	"path/filepath"
 	"syscall"
@@ -293,7 +292,7 @@ func TestLoadIacDir(t *testing.T) {
 			var want output.AllResourceConfigs
 
 			// Read the expected value and unmarshal into want
-			contents, _ := ioutil.ReadFile(tt.tfJSONFile)
+			contents, _ := os.ReadFile(tt.tfJSONFile)
 			if utils.IsWindowsPlatform() {
 				contents = utils.ReplaceWinNewLineBytes(contents)
 			}
diff --git a/pkg/iac-providers/terraform/v15/load-file_test.go b/pkg/iac-providers/terraform/v15/load-file_test.go
index 90f38fb13..f7c0981f9 100644
--- a/pkg/iac-providers/terraform/v15/load-file_test.go
+++ b/pkg/iac-providers/terraform/v15/load-file_test.go
@@ -20,7 +20,7 @@ import (
 	"bytes"
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
+	"os"
 	"path/filepath"
 	"reflect"
 	"testing"
@@ -142,7 +142,7 @@ func TestLoadIacFile(t *testing.T) {
 
 			gotBytes, _ := json.MarshalIndent(got, "", "  ")
 			gotBytes = append(gotBytes, []byte{'\n'}...)
-			wantBytes, _ := ioutil.ReadFile(tt.tfJSONFile)
+			wantBytes, _ := os.ReadFile(tt.tfJSONFile)
 
 			if utils.IsWindowsPlatform() {
 				gotBytes = utils.ReplaceCarriageReturnBytes(gotBytes)
diff --git a/pkg/iac-providers/tfplan/v1/load-file_test.go b/pkg/iac-providers/tfplan/v1/load-file_test.go
index 644c96e6d..b3611566b 100644
--- a/pkg/iac-providers/tfplan/v1/load-file_test.go
+++ b/pkg/iac-providers/tfplan/v1/load-file_test.go
@@ -20,7 +20,6 @@ import (
 	"bytes"
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
 	"os"
 	"path/filepath"
 	"reflect"
@@ -99,7 +98,7 @@ func TestLoadIacFile(t *testing.T) {
 
 		gotBytes, _ := json.MarshalIndent(got, "", "  ")
 		gotBytes = append(gotBytes, []byte{'\n'}...)
-		wantBytes, _ := ioutil.ReadFile(tfplanOutput)
+		wantBytes, _ := os.ReadFile(tfplanOutput)
 		if utils.IsWindowsPlatform() {
 			wantBytes = utils.ReplaceWinNewLineBytes(wantBytes)
 		}
diff --git a/pkg/initialize/run_test.go b/pkg/initialize/run_test.go
index 2d5a3fa7b..1ce4b6d52 100644
--- a/pkg/initialize/run_test.go
+++ b/pkg/initialize/run_test.go
@@ -21,7 +21,6 @@ import (
 	"errors"
 	"fmt"
 	"io/fs"
-	"io/ioutil"
 	"os"
 	"path/filepath"
 	"strings"
@@ -66,7 +65,7 @@ func TestGetCommercialPolicy(t *testing.T) {
 
 	for _, tt := range table {
 		t.Run(tt.name, func(t *testing.T) {
-			policies, err := ioutil.ReadFile(tt.configFile)
+			policies, err := os.ReadFile(tt.configFile)
 			if err != nil {
 				t.Errorf("unable to read test file")
 			}
@@ -166,12 +165,12 @@ func verifyFiles(files []fs.DirEntry, rscdir string) error {
 		testpath := filepath.Join(TESTDIR, file.Name())
 		convpath := filepath.Join(rscdir, file.Name())
 
-		testbytes, err := ioutil.ReadFile(testpath)
+		testbytes, err := os.ReadFile(testpath)
 		if err != nil {
 			return fmt.Errorf("unable to read test file: '%s', err: '%w'", testpath, err)
 		}
 
-		databytes, err := ioutil.ReadFile(convpath)
+		databytes, err := os.ReadFile(convpath)
 		if err != nil {
 			return fmt.Errorf("unable to read converted file: '%s', err: '%w'", convpath, err)
 		}
diff --git a/pkg/k8s/admission-webhook/validating-webhook_test.go b/pkg/k8s/admission-webhook/validating-webhook_test.go
index d56898c37..a7fba26aa 100644
--- a/pkg/k8s/admission-webhook/validating-webhook_test.go
+++ b/pkg/k8s/admission-webhook/validating-webhook_test.go
@@ -17,7 +17,6 @@
 package admissionwebhook
 
 import (
-	"io/ioutil"
 	"os"
 	"path/filepath"
 	"testing"
@@ -104,7 +103,7 @@ func TestDecodeAdmissionReviewRequest(t *testing.T) {
 	for _, test := range table {
 
 		// read test request from file
-		requestBody, err := ioutil.ReadFile(test.requestFile)
+		requestBody, err := os.ReadFile(test.requestFile)
 		if err != nil {
 			t.Errorf("failed to read test data, error: '%v'", err)
 		}
diff --git a/pkg/mapper/iac-providers/arm/types/template_test.go b/pkg/mapper/iac-providers/arm/types/template_test.go
index 81c45960c..0ce9caff1 100644
--- a/pkg/mapper/iac-providers/arm/types/template_test.go
+++ b/pkg/mapper/iac-providers/arm/types/template_test.go
@@ -18,7 +18,7 @@ package types
 
 import (
 	"encoding/json"
-	"io/ioutil"
+	"io"
 	"os"
 	"path/filepath"
 	"testing"
@@ -46,5 +46,5 @@ func readTemplate(name string) ([]byte, error) {
 	}
 	defer f.Close()
 
-	return ioutil.ReadAll(f)
+	return io.ReadAll(f)
 }
diff --git a/pkg/mapper/iac-providers/cft/functions/s3-download_test.go b/pkg/mapper/iac-providers/cft/functions/s3-download_test.go
index afef8dae7..e39b1d0b9 100644
--- a/pkg/mapper/iac-providers/cft/functions/s3-download_test.go
+++ b/pkg/mapper/iac-providers/cft/functions/s3-download_test.go
@@ -1,17 +1,17 @@
 /*
-    Copyright (C) 2022 Tenable, Inc.
+	    Copyright (C) 2022 Tenable, Inc.
 
-	Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
+		Licensed under the Apache License, Version 2.0 (the "License");
+	    you may not use this file except in compliance with the License.
+	    You may obtain a copy of the License at
 
-		http://www.apache.org/licenses/LICENSE-2.0
+			http://www.apache.org/licenses/LICENSE-2.0
 
-	Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
+		Unless required by applicable law or agreed to in writing, software
+	    distributed under the License is distributed on an "AS IS" BASIS,
+	    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+	    See the License for the specific language governing permissions and
+	    limitations under the License.
 */
 package functions
 
diff --git a/pkg/policies/opa/rego/policy-test-util.go b/pkg/policies/opa/rego/policy-test-util.go
index 0b8e0e86d..328834bbd 100644
--- a/pkg/policies/opa/rego/policy-test-util.go
+++ b/pkg/policies/opa/rego/policy-test-util.go
@@ -18,14 +18,14 @@ package rego
 
 import (
 	"encoding/json"
-	"io/ioutil"
+	"os"
 
 	"github.com/tenable/terrascan/pkg/policy"
 )
 
 // LoadRegoMetadata reads rego meta data file
 func LoadRegoMetadata(file string) (*policy.RegoMetadata, error) {
-	metadata, err := ioutil.ReadFile(file)
+	metadata, err := os.ReadFile(file)
 	if err != nil {
 		return nil, err
 	}
diff --git a/pkg/policies/opa/rego/policy_test.go b/pkg/policies/opa/rego/policy_test.go
index 7e9c9fe80..a8cd1c0a2 100644
--- a/pkg/policies/opa/rego/policy_test.go
+++ b/pkg/policies/opa/rego/policy_test.go
@@ -19,7 +19,6 @@ package rego
 import (
 	"errors"
 	"fmt"
-	"io/ioutil"
 	"os"
 	"path/filepath"
 	"regexp"
@@ -52,14 +51,12 @@ func TestPolicyValidation(t *testing.T) {
 }
 
 func Validate(dir string, t *testing.T) {
-
-	var fileInfo []os.FileInfo
-	fileInfo, err := ioutil.ReadDir(dir)
+	dirEntries, err := os.ReadDir(dir)
 	if err != nil {
 		t.Error(err)
 		return
 	}
-	metadataFiles := utils.FilterFileInfoBySuffix(&fileInfo, []string{".json"})
+	metadataFiles := utils.FilterFileInfoBySuffix(&dirEntries, []string{".json"})
 
 	for j := range metadataFiles {
 		filePath := filepath.Join(dir, *metadataFiles[j])
diff --git a/pkg/utils/printer_test.go b/pkg/utils/printer_test.go
index 946b9def8..9fdc7de3c 100644
--- a/pkg/utils/printer_test.go
+++ b/pkg/utils/printer_test.go
@@ -18,7 +18,7 @@ package utils
 
 import (
 	"bytes"
-	"io/ioutil"
+	"os"
 	"path/filepath"
 	"strings"
 	"testing"
@@ -31,7 +31,7 @@ var (
 )
 
 func init() {
-	validJSON, _ = ioutil.ReadFile(validJSONFile)
+	validJSON, _ = os.ReadFile(validJSONFile)
 
 }
 
diff --git a/pkg/utils/severity_test.go b/pkg/utils/severity_test.go
index 20556c355..32000b76c 100644
--- a/pkg/utils/severity_test.go
+++ b/pkg/utils/severity_test.go
@@ -1,17 +1,17 @@
 /*
-    Copyright (C) 2022 Tenable, Inc.
+	    Copyright (C) 2022 Tenable, Inc.
 
-	Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
+		Licensed under the Apache License, Version 2.0 (the "License");
+	    you may not use this file except in compliance with the License.
+	    You may obtain a copy of the License at
 
-		http://www.apache.org/licenses/LICENSE-2.0
+			http://www.apache.org/licenses/LICENSE-2.0
 
-	Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
+		Unless required by applicable law or agreed to in writing, software
+	    distributed under the License is distributed on an "AS IS" BASIS,
+	    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+	    See the License for the specific language governing permissions and
+	    limitations under the License.
 */
 package utils
 
diff --git a/pkg/utils/skip_rules_test.go b/pkg/utils/skip_rules_test.go
index 154d1eda4..c8bdecadd 100644
--- a/pkg/utils/skip_rules_test.go
+++ b/pkg/utils/skip_rules_test.go
@@ -101,7 +101,7 @@ func TestGetSkipRules(t *testing.T) {
 			},
 		},
 		{
-			name: "rule and comment with random space characters",
+			name:  "rule and comment with random space characters",
 			input: "#ts:skip=  AWS.S3Bucket.DS.High.1041  		reason_to skip. the rule\n",
 			expected: []output.SkipRule{
 				{
diff --git a/pkg/vulnerability/acr_test.go b/pkg/vulnerability/acr_test.go
index 9e74ee895..b2a985d11 100644
--- a/pkg/vulnerability/acr_test.go
+++ b/pkg/vulnerability/acr_test.go
@@ -41,32 +41,32 @@ type mockScanner struct {
 	digest          string
 }
 
-//newTagClient
+// newTagClient
 func (m mockScanner) newTagClient(loginURL string) containerregistry.TagClient {
 	return m.tagClient
 }
 
-//newBasicAuthorizer
+// newBasicAuthorizer
 func (m mockScanner) newBasicAuthorizer(username string, password string) *autorest.BasicAuthorizer {
 	return m.basicAuthorizer
 }
 
-//newAuthorizerFromFile
+// newAuthorizerFromFile
 func (m mockScanner) newAuthorizerFromFile() (autorest.Authorizer, error) {
 	return m.authorizer, m.authorizerError
 }
 
-//newResourcegraphClient
+// newResourcegraphClient
 func (mockScanner) newResourcegraphClient() resourcegraph.BaseClient {
 	return resourcegraph.New()
 }
 
-//getResources
+// getResources
 func (m mockScanner) getResources(ctx context.Context, request resourcegraph.QueryRequest, client resourcegraph.BaseClient) (resourcegraph.QueryResponse, error) {
 	return m.queryResponse, m.queryError
 }
 
-//GetAttributes
+// GetAttributes
 func (m mockScanner) getAttributes(ctx context.Context, name string, reference string, client containerregistry.TagClient) (result containerregistry.TagAttributes, err error) {
 	return m.attributes, m.attributesError
 }
diff --git a/pkg/vulnerability/harbor_test.go b/pkg/vulnerability/harbor_test.go
index f357f33d5..13c864735 100644
--- a/pkg/vulnerability/harbor_test.go
+++ b/pkg/vulnerability/harbor_test.go
@@ -20,7 +20,7 @@ import (
 	"bytes"
 	"crypto/tls"
 	"fmt"
-	"io/ioutil"
+	"io"
 	"net/http"
 	"os"
 	"reflect"
@@ -386,7 +386,7 @@ func TestSendRequest(t *testing.T) {
 				caller: mockClient{
 					res: &http.Response{
 						StatusCode: 401,
-						Body:       ioutil.NopCloser(bytes.NewReader([]byte(`error:["unauthorized"]`))),
+						Body:       io.NopCloser(bytes.NewReader([]byte(`error:["unauthorized"]`))),
 					},
 				},
 			},
@@ -398,7 +398,7 @@ func TestSendRequest(t *testing.T) {
 				caller: mockClient{
 					res: &http.Response{
 						StatusCode: 200,
-						Body:       ioutil.NopCloser(bytes.NewReader([]byte(vulnerabilityResponse))),
+						Body:       io.NopCloser(bytes.NewReader([]byte(vulnerabilityResponse))),
 					},
 				},
 			},
diff --git a/test/e2e/help/help_suite_test.go b/test/e2e/help/help_suite_test.go
index c156b2f95..707bced4c 100644
--- a/test/e2e/help/help_suite_test.go
+++ b/test/e2e/help/help_suite_test.go
@@ -1,17 +1,17 @@
 /*
-    Copyright (C) 2022 Tenable, Inc.
+	    Copyright (C) 2022 Tenable, Inc.
 
-	Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
+		Licensed under the Apache License, Version 2.0 (the "License");
+	    you may not use this file except in compliance with the License.
+	    You may obtain a copy of the License at
 
-		http://www.apache.org/licenses/LICENSE-2.0
+			http://www.apache.org/licenses/LICENSE-2.0
 
-	Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
+		Unless required by applicable law or agreed to in writing, software
+	    distributed under the License is distributed on an "AS IS" BASIS,
+	    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+	    See the License for the specific language governing permissions and
+	    limitations under the License.
 */
 package help_test
 
diff --git a/test/e2e/help/help_test.go b/test/e2e/help/help_test.go
index d261a0075..f15005493 100644
--- a/test/e2e/help/help_test.go
+++ b/test/e2e/help/help_test.go
@@ -1,17 +1,17 @@
 /*
-    Copyright (C) 2022 Tenable, Inc.
+	    Copyright (C) 2022 Tenable, Inc.
 
-	Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
+		Licensed under the Apache License, Version 2.0 (the "License");
+	    you may not use this file except in compliance with the License.
+	    You may obtain a copy of the License at
 
-		http://www.apache.org/licenses/LICENSE-2.0
+			http://www.apache.org/licenses/LICENSE-2.0
 
-	Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
+		Unless required by applicable law or agreed to in writing, software
+	    distributed under the License is distributed on an "AS IS" BASIS,
+	    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+	    See the License for the specific language governing permissions and
+	    limitations under the License.
 */
 package help_test
 
diff --git a/test/e2e/server/server_utils.go b/test/e2e/server/server_utils.go
index b8c6d4475..81008e29f 100644
--- a/test/e2e/server/server_utils.go
+++ b/test/e2e/server/server_utils.go
@@ -20,7 +20,6 @@ import (
 	"bytes"
 	"encoding/json"
 	"io"
-	"io/ioutil"
 	"mime/multipart"
 	"net/http"
 	"os"
@@ -135,7 +134,7 @@ func MakeRemoteScanRequest(URL string, bodyAttributes map[string]interface{}, ex
 // CompareResponseAndGoldenOutput compares the json response and golden json output
 func CompareResponseAndGoldenOutput(goldenFilePath string, responseBytes []byte) {
 	var responseEngineOutput, fileDataEngineOutput policy.EngineOutput
-	fileBytes, err := ioutil.ReadFile(goldenFilePath)
+	fileBytes, err := os.ReadFile(goldenFilePath)
 	gomega.Expect(err).NotTo(gomega.HaveOccurred())
 
 	err = json.Unmarshal(responseBytes, &responseEngineOutput)
diff --git a/test/e2e/validatingwebhook/kubeclient.go b/test/e2e/validatingwebhook/kubeclient.go
index bc7c43c40..2edab7e76 100644
--- a/test/e2e/validatingwebhook/kubeclient.go
+++ b/test/e2e/validatingwebhook/kubeclient.go
@@ -20,7 +20,7 @@ import (
 	"bytes"
 	"context"
 	"fmt"
-	"io/ioutil"
+	"os"
 	"path/filepath"
 	"time"
 
@@ -79,7 +79,7 @@ func (k *KubernetesClient) getK8sClient() (*kubernetes.Clientset, error) {
 // CreateValidatingWebhookConfiguration creates a ValidatingWebhookConfiguration
 func (k *KubernetesClient) CreateValidatingWebhookConfiguration(webhookFile, certFile, apiKey, port string) (*admissionv1.ValidatingWebhookConfiguration, error) {
 	webhooks := admissionv1.ValidatingWebhookConfiguration{}
-	data, err := ioutil.ReadFile(webhookFile)
+	data, err := os.ReadFile(webhookFile)
 	if err != nil {
 		return nil, err
 	}
@@ -91,7 +91,7 @@ func (k *KubernetesClient) CreateValidatingWebhookConfiguration(webhookFile, cer
 		return nil, err
 	}
 
-	certData, err := ioutil.ReadFile(certFile)
+	certData, err := os.ReadFile(certFile)
 	if err != nil {
 		return nil, err
 	}
@@ -123,7 +123,7 @@ func (k *KubernetesClient) DeleteValidatingWebhookConfiguration(webhookConfigNam
 // CreatePod will create a pod by parsing a resource file
 func (k *KubernetesClient) CreatePod(resourceFile string) (*v1.Pod, error) {
 	pod := v1.Pod{}
-	data, err := ioutil.ReadFile(resourceFile)
+	data, err := os.ReadFile(resourceFile)
 	if err != nil {
 		return nil, err
 	}
@@ -149,7 +149,7 @@ func (k *KubernetesClient) DeletePod(podName string) error {
 // CreateService will a service by parsing a resource file
 func (k *KubernetesClient) CreateService(resourceFile string) (*v1.Service, error) {
 	service := v1.Service{}
-	data, err := ioutil.ReadFile(resourceFile)
+	data, err := os.ReadFile(resourceFile)
 	if err != nil {
 		return nil, err
 	}
diff --git a/test/e2e/vulnerability/vulnerability_test.go b/test/e2e/vulnerability/vulnerability_test.go
index 4fa153fce..d07c13a27 100644
--- a/test/e2e/vulnerability/vulnerability_test.go
+++ b/test/e2e/vulnerability/vulnerability_test.go
@@ -18,7 +18,6 @@ package vulnerability_test
 
 import (
 	"io"
-	"io/ioutil"
 	"os"
 	"path/filepath"
 
@@ -76,7 +75,7 @@ var _ = Describe("Vulnerabilty", func() {
 			JustBeforeEach(func() {
 				data := os.Getenv(azureAuthKeyTestEnvName)
 				if data != "" {
-					tempFile, err = ioutil.TempFile("", "azure.auth")
+					tempFile, err = os.CreateTemp("", "azure.auth")
 					Expect(err).NotTo(HaveOccurred())
 					tempFile.Write([]byte(data))
 					os.Setenv(azureAuthKeyEnvName, tempFile.Name())
@@ -98,7 +97,7 @@ var _ = Describe("Vulnerabilty", func() {
 			JustBeforeEach(func() {
 				data := os.Getenv(googleApplicationKeyTestEnvName)
 				if data != "" {
-					tempFile, err = ioutil.TempFile("", "app-key.json")
+					tempFile, err = os.CreateTemp("", "app-key.json")
 					Expect(err).NotTo(HaveOccurred())
 					tempFile.Write([]byte(data))
 					os.Setenv(googleApplicationKeyEnvName, tempFile.Name())
diff --git a/test/helper/helper.go b/test/helper/helper.go
index a1f3c02c3..2ce333a47 100644
--- a/test/helper/helper.go
+++ b/test/helper/helper.go
@@ -21,7 +21,6 @@ import (
 	"encoding/json"
 	"encoding/xml"
 	"io"
-	"io/ioutil"
 	"os"
 	"os/exec"
 	"path/filepath"
@@ -124,7 +123,7 @@ func CompareActualWithGoldenConfigOnlyRegex(session *gexec.Session, goldenFileAb
 // CompareActualWithGoldenSummaryRegex compares actual string with contents of golden file passed as parameter
 // ignores specified regex patterns from the actual and golden text
 func CompareActualWithGoldenSummaryRegex(session *gexec.Session, goldenFileAbsPath string, isJunitXML, isStdOut bool) {
-	fileData, err := ioutil.ReadFile(goldenFileAbsPath)
+	fileData, err := os.ReadFile(goldenFileAbsPath)
 	if utils.IsWindowsPlatform() {
 		fileData = utils.ReplaceWinNewLineBytes(fileData)
 	}
@@ -292,7 +291,7 @@ func getSession(cmd *exec.Cmd, outWriter, errWriter io.Writer) *gexec.Session {
 
 // GetByteData is a helper function to get data in byte slice from session and golden file
 func GetByteData(session *gexec.Session, goldenFileAbsPath string, isStdOut bool) ([]byte, []byte) {
-	fileBytes, err := ioutil.ReadFile(goldenFileAbsPath)
+	fileBytes, err := os.ReadFile(goldenFileAbsPath)
 	gomega.Expect(err).NotTo(gomega.HaveOccurred())
 	var sessionBytes []byte
 
@@ -403,7 +402,7 @@ func GetAbsoluteFilePathForSarif(resourcePath, filePath string) (string, error)
 // CompareActualSarifOutputWithGoldenSummaryRegex compares actual string with contents of golden file passed as parameter
 // ignores specified regex patterns from the actual and golden text
 func CompareActualSarifOutputWithGoldenSummaryRegex(session *gexec.Session, goldenFileAbsPath string) {
-	fileData, err := ioutil.ReadFile(goldenFileAbsPath)
+	fileData, err := os.ReadFile(goldenFileAbsPath)
 	if utils.IsWindowsPlatform() {
 		fileData = utils.ReplaceWinNewLineBytes(fileData)
 	}