Skip to content

Commit 7003775

Browse files
authored
Merge pull request #109 from sethsec/fix_regions_error
Fix awsservicemap download, added more logging to all commands/sdk calls
2 parents 5115f84 + 1bb8576 commit 7003775

79 files changed

Lines changed: 2501 additions & 750 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

aws/api-gws.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ type ApiGwModule struct {
3030
Goroutines int
3131
AWSProfile string
3232
WrapTable bool
33+
ServiceMap *awsservicemap.AwsServiceMap // Shared service map to avoid repeated HTTP requests
3334

3435
// Main module data
3536
Gateways []ApiGateway
@@ -178,10 +179,14 @@ func (m *ApiGwModule) executeChecks(r string, wg *sync.WaitGroup, semaphore chan
178179
// <-semaphore
179180
// }()
180181

181-
servicemap := &awsservicemap.AwsServiceMap{
182-
JsonFileSource: "DOWNLOAD_FROM_AWS",
182+
// Use shared ServiceMap instance if provided, otherwise create a new one
183+
servicemap := m.ServiceMap
184+
if servicemap == nil {
185+
servicemap = &awsservicemap.AwsServiceMap{
186+
JsonFileSource: "DOWNLOAD_FROM_AWS",
187+
}
183188
}
184-
res, err := servicemap.IsServiceInRegion("apigateway", r)
189+
res, err := servicemap.IsServiceInRegion("api-gateway", r)
185190
if err != nil {
186191
m.modLog.Error(err)
187192
}

aws/api-gws_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,17 @@ import (
1010
"github.com/aws/aws-sdk-go-v2/aws"
1111
"github.com/aws/aws-sdk-go-v2/service/sts"
1212
"github.com/aws/smithy-go/ptr"
13+
"github.com/bishopfox/awsservicemap"
1314
"github.com/spf13/afero"
1415
)
1516

1617
func TestApiGw(t *testing.T) {
1718

19+
// Create a service map that downloads from AWS
20+
serviceMap := &awsservicemap.AwsServiceMap{
21+
JsonFileSource: "DOWNLOAD_FROM_AWS",
22+
}
23+
1824
m := ApiGwModule{
1925
AWSProfile: "unittesting",
2026
AWSRegions: []string{"us-east-1"},
@@ -26,6 +32,7 @@ func TestApiGw(t *testing.T) {
2632
WrapTable: false,
2733
APIGatewayClient: &sdk.MockedAWSAPIGatewayClient{},
2834
APIGatewayv2Client: &sdk.MockedAWSAPIGatewayv2Client{},
35+
ServiceMap: serviceMap,
2936
}
3037

3138
fs := internal.MockFileSystem(true)

aws/client-initializers.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/aws/aws-sdk-go-v2/service/sns"
1818
"github.com/aws/aws-sdk-go-v2/service/sqs"
1919
"github.com/aws/aws-sdk-go-v2/service/sts"
20+
"github.com/sirupsen/logrus"
2021
)
2122

2223
func InitIamCommandClient(iamSimPPClient sdk.AWSIAMClientInterface, caller sts.GetCallerIdentityOutput, AWSProfile string, Goroutines int) IamSimulatorModule {
@@ -26,6 +27,7 @@ func InitIamCommandClient(iamSimPPClient sdk.AWSIAMClientInterface, caller sts.G
2627
Caller: caller,
2728
AWSProfileProvided: AWSProfile,
2829
Goroutines: Goroutines,
30+
modLog: internal.TxtLog.WithFields(logrus.Fields{"module": "iam-simulator"}),
2931
}
3032

3133
return iamSimMod

aws/cloudformation.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ type CloudformationModule struct {
2828
WrapTable bool
2929
AWSOutputType string
3030
AWSTableCols string
31+
ServiceMap *awsservicemap.AwsServiceMap // Shared service map to avoid repeated HTTP requests
3132

3233
// Main module data
3334
CFStacks []CFStack
@@ -192,8 +193,12 @@ func (m *CloudformationModule) PrintCloudformationStacks(outputDirectory string,
192193

193194
func (m *CloudformationModule) executeChecks(r string, wg *sync.WaitGroup, semaphore chan struct{}, dataReceiver chan CFStack) {
194195
defer wg.Done()
195-
servicemap := &awsservicemap.AwsServiceMap{
196-
JsonFileSource: "DOWNLOAD_FROM_AWS",
196+
// Use shared ServiceMap instance if provided, otherwise create a new one
197+
servicemap := m.ServiceMap
198+
if servicemap == nil {
199+
servicemap = &awsservicemap.AwsServiceMap{
200+
JsonFileSource: "DOWNLOAD_FROM_AWS",
201+
}
197202
}
198203
serviceRegions, err := servicemap.GetRegionsForService("cloudformation")
199204
if err != nil {

aws/codebuild.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ type CodeBuildModule struct {
2929
AWSProfile string
3030
SkipAdminCheck bool
3131
WrapTable bool
32+
ServiceMap *awsservicemap.AwsServiceMap // Shared service map to avoid repeated HTTP requests
3233
pmapperMod PmapperModule
3334
pmapperError error
3435
iamSimClient IamSimulatorModule
@@ -211,8 +212,12 @@ func (m *CodeBuildModule) PrintCodeBuildProjects(outputDirectory string, verbosi
211212
func (m *CodeBuildModule) executeChecks(r string, wg *sync.WaitGroup, semaphore chan struct{}, dataReceiver chan Project) {
212213
defer wg.Done()
213214

214-
servicemap := &awsservicemap.AwsServiceMap{
215-
JsonFileSource: "DOWNLOAD_FROM_AWS",
215+
// Use shared ServiceMap instance if provided, otherwise create a new one
216+
servicemap := m.ServiceMap
217+
if servicemap == nil {
218+
servicemap = &awsservicemap.AwsServiceMap{
219+
JsonFileSource: "DOWNLOAD_FROM_AWS",
220+
}
216221
}
217222
res, err := servicemap.IsServiceInRegion("codebuild", r)
218223
if err != nil {

aws/databases.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ type DatabasesModule struct {
3030
Goroutines int
3131
AWSProfile string
3232
WrapTable bool
33+
ServiceMap *awsservicemap.AwsServiceMap // Shared service map to avoid repeated HTTP requests
3334

3435
Databases []Database
3536
CommandCounter internal.CommandCounter
@@ -231,8 +232,12 @@ func (m *DatabasesModule) Receiver(receiver chan Database, receiverDone chan boo
231232
func (m *DatabasesModule) executeChecks(r string, wg *sync.WaitGroup, semaphore chan struct{}, dataReceiver chan Database) {
232233
defer wg.Done()
233234

234-
serviceMap := &awsservicemap.AwsServiceMap{
235-
JsonFileSource: "DOWNLOAD_FROM_AWS",
235+
// Use shared ServiceMap instance if provided, otherwise create a new one
236+
serviceMap := m.ServiceMap
237+
if serviceMap == nil {
238+
serviceMap = &awsservicemap.AwsServiceMap{
239+
JsonFileSource: "DOWNLOAD_FROM_AWS",
240+
}
236241
}
237242
m.executeRdsCheck(r, wg, semaphore, dataReceiver, serviceMap) // Also returns Neptune and DocDB
238243
m.executeRedshiftCheck(r, wg, semaphore, dataReceiver, serviceMap)

aws/directory-services.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ type DirectoryModule struct {
3131
AWSProfileProvided string
3232
AWSProfileStub string
3333
CloudFoxVersion string
34-
34+
ServiceMap *awsservicemap.AwsServiceMap // Shared service map to avoid repeated HTTP requests
35+
3536
Directories []Directory
3637
CommandCounter internal.CommandCounter
3738
output internal.OutputData2
@@ -190,8 +191,12 @@ func (m *DirectoryModule) PrintDirectories(outputDirectory string, verbosity int
190191
func (m *DirectoryModule) executeChecks(r string, wg *sync.WaitGroup, semaphore chan struct{}, dataReceiver chan Directory) {
191192
defer wg.Done()
192193

193-
servicemap := &awsservicemap.AwsServiceMap{
194-
JsonFileSource: "DOWNLOAD_FROM_AWS",
194+
// Use shared ServiceMap instance if provided, otherwise create a new one
195+
servicemap := m.ServiceMap
196+
if servicemap == nil {
197+
servicemap = &awsservicemap.AwsServiceMap{
198+
JsonFileSource: "DOWNLOAD_FROM_AWS",
199+
}
195200
}
196201
res, err := servicemap.IsServiceInRegion("clouddirectory", r)
197202
if err != nil {

aws/ecr.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ type ECRModule struct {
3030
Goroutines int
3131
AWSProfile string
3232
WrapTable bool
33+
ServiceMap *awsservicemap.AwsServiceMap // Shared service map to avoid repeated HTTP requests
3334

3435
// Main module data
3536
Repositories []Repository
@@ -197,8 +198,12 @@ func (m *ECRModule) PrintECR(outputDirectory string, verbosity int) {
197198
func (m *ECRModule) executeChecks(r string, wg *sync.WaitGroup, semaphore chan struct{}, dataReceiver chan Repository) {
198199
defer wg.Done()
199200

200-
servicemap := &awsservicemap.AwsServiceMap{
201-
JsonFileSource: "DOWNLOAD_FROM_AWS",
201+
// Use shared ServiceMap instance if provided, otherwise create a new one
202+
servicemap := m.ServiceMap
203+
if servicemap == nil {
204+
servicemap = &awsservicemap.AwsServiceMap{
205+
JsonFileSource: "DOWNLOAD_FROM_AWS",
206+
}
202207
}
203208
res, err := servicemap.IsServiceInRegion("ecr", r)
204209
if err != nil {

aws/ecs-tasks.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ type ECSTasksModule struct {
3535
Goroutines int
3636
SkipAdminCheck bool
3737
WrapTable bool
38+
ServiceMap *awsservicemap.AwsServiceMap // Shared service map to avoid repeated HTTP requests
3839
pmapperMod PmapperModule
3940
pmapperError error
4041
iamSimClient IamSimulatorModule
@@ -307,8 +308,12 @@ func (m *ECSTasksModule) writeLoot(outputDirectory string) {
307308
func (m *ECSTasksModule) executeChecks(r string, wg *sync.WaitGroup, dataReceiver chan MappedECSTask) {
308309
defer wg.Done()
309310

310-
servicemap := &awsservicemap.AwsServiceMap{
311-
JsonFileSource: "DOWNLOAD_FROM_AWS",
311+
// Use shared ServiceMap instance if provided, otherwise create a new one
312+
servicemap := m.ServiceMap
313+
if servicemap == nil {
314+
servicemap = &awsservicemap.AwsServiceMap{
315+
JsonFileSource: "DOWNLOAD_FROM_AWS",
316+
}
312317
}
313318
res, err := servicemap.IsServiceInRegion("ecs", r)
314319
if err != nil {

aws/eks.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ type EKSModule struct {
3232
AWSProfile string
3333
SkipAdminCheck bool
3434
WrapTable bool
35+
ServiceMap *awsservicemap.AwsServiceMap // Shared service map to avoid repeated HTTP requests
3536
pmapperMod PmapperModule
3637
pmapperError error
3738
iamSimClient IamSimulatorModule
@@ -242,8 +243,12 @@ func (m *EKSModule) EKS(outputDirectory string, verbosity int) {
242243
func (m *EKSModule) executeChecks(r string, wg *sync.WaitGroup, semaphore chan struct{}, dataReceiver chan Cluster) {
243244
defer wg.Done()
244245

245-
servicemap := &awsservicemap.AwsServiceMap{
246-
JsonFileSource: "DOWNLOAD_FROM_AWS",
246+
// Use shared ServiceMap instance if provided, otherwise create a new one
247+
servicemap := m.ServiceMap
248+
if servicemap == nil {
249+
servicemap = &awsservicemap.AwsServiceMap{
250+
JsonFileSource: "DOWNLOAD_FROM_AWS",
251+
}
247252
}
248253
res, err := servicemap.IsServiceInRegion("eks", r)
249254
if err != nil {

0 commit comments

Comments
 (0)