logo

Database

Dart File Storage Of Sensitive Data

Description

Detects when sensitive user data is written to local files or streams in Dart applications. This is a security risk because storing sensitive information in local files can expose user data to unauthorized access if the storage location is not properly secured or if the device is compromised.

Weakness:

020 - Non-encrypted confidential information

Category: Information Collection

Detection Strategy

    • Checks if the Dart IO library (dart:io) is imported in the source code

    • Identifies file writing operations through methods like writeAsString, writeAsBytes or stream write operations

    • Verifies if the data being written contains sensitive user information

    • Confirms the write operation is targeting a file or stream object opened in write mode

    • Reports a vulnerability when sensitive data is being written to local storage

Vulnerable code example

import 'dart:io';
import 'package:shelf/shelf.dart';

void storePassword(Request req) async {
  final password = req.body['password'];
  final file = File('/storage/password.txt');
  await file.writeAsString(password); // Vulnerable: Storing password in plaintext file
}

✅ Secure code example

import 'dart:io';
import 'dart:convert';
import 'package:shelf/shelf.dart';
import 'package:cryptography/cryptography.dart';

Future<void> storePassword(Request req) async {
  final password = req.body['password'];
  if (password == null) return;...