- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
",t};e.buildCustomizationMenuUi=t;function n(e){let t='
",t}function s(e){let n=e.filter.currentValue||e.filter.defaultValue,t='${e.filter.label}
`,e.filter.options.forEach(s=>{let o=s.id===n;t+=``}),t+="${e.filter.label}
`,t+=`ID: swift-security/insecure-user-defaults
Language: Unknown
Severity: Error
Category: Security
CWE: 311
This analysis pattern identifies the insecure storage of sensitive data in Swift applications for iOS and macOS. The weakness occurs when UserDefaults.standard.set()
is used to save information that appears to be a credential, secret, or cryptographic key. A static analysis check can detect this by inspecting calls to this function and examining the key name or the variable being stored for common sensitive-data keywords, such as “password,” “api_key,” “secret_token,” or “private_key.”
Storing such information in UserDefaults
constitutes a significant security vulnerability (CWE-311) because it saves the data in an unencrypted property list (plist) file on the device’s filesystem. This file can be easily accessed by an attacker with local access to the device or through other system compromises, leading to sensitive data exposure. To mitigate this risk, applications should leverage the system Keychain, which is an encrypted and secure database provided by the operating system specifically for storing secrets.
UserDefaults.standard.set(passphrase, forKey: "passphrase")
UserDefaults.standard.set(passWord, forKey: "userPassword")
UserDefaults.standard.set("123-456-789", forKey: "apiKey")
UserDefaults.standard.set(apiKey, forKey: "MY_TOKEN")
UserDefaults.standard.set(key, forKey: "cryptoKey")
UserDefaults.standard.set(key, forKey: "clientSecret")
UserDefaults.standard.set(key, forKey: "rsaPrivateKey")
UserDefaults.standard.set(passphrase, forKey: "pass_phrase")
UserDefaults.standard.set(username, forKey: "userName")
UserDefaults.standard.set("value", forKey: "key")