Skip to content

Commit 2813022

Browse files
Explicitly set 0600 permissions on SSO/login cache files (#3373)
1 parent e5aaabf commit 2813022

5 files changed

Lines changed: 7 additions & 1 deletion

File tree

gems/aws-sdk-core/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
Unreleased Changes
22
------------------
33

4+
* Issue - Explicitly set 0600 permissions on SSO/login cache files.
5+
46
3.244.0 (2026-03-18)
57
------------------
68

gems/aws-sdk-core/lib/aws-sdk-core/login_credentials.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ def update_token_cache(token_json)
221221
temp_file.write(Json.dump(cached_token))
222222
temp_file.close
223223
FileUtils.mv(temp_file.path, login_cache_file)
224+
File.chmod(0o600, login_cache_file)
224225
ensure
225226
temp_file.unlink if File.exist?(temp_file.path) # Ensure temp file is cleaned up
226227
end

gems/aws-sdk-core/lib/aws-sdk-core/sso_token_provider.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ def update_token_cache(token_json)
108108
cached_token = token_json.dup
109109
cached_token['expiresAt'] = cached_token['expiresAt'].iso8601
110110
File.write(sso_cache_file, Json.dump(cached_token))
111+
File.chmod(0o600, sso_cache_file)
111112
end
112113

113114
def sso_cache_file

gems/aws-sdk-core/spec/aws/sso_token_provider_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ def expect_token_write_back(sso_session, expected_token)
5656
expect(arg1).to eq(path)
5757
expect(Json.load(arg2)).to eq(expected_token)
5858
end
59+
expect(File).to receive(:chmod).with(0o600, path)
5960
end
6061

6162
describe '#initialize' do

gems/aws-sdk-core/spec/login_credentials_helper.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@ def mock_token_file(login_session, cached_token)
2020
end
2121

2222
def expect_token_write_back(expected_token)
23-
actual_token = JSON.parse(File.read(token_file.path))
23+
actual_token = JSON.load_file(token_file.path)
2424
expect(actual_token).to eq(JSON.parse(JSON.dump(expected_token)))
25+
expect(File.stat(token_file.path).mode & 0o777).to eq(0o600)
2526
end
2627

2728
def verify_dpop(dpop_proof)

0 commit comments

Comments
 (0)