system: You are an expert security code reviewer. You will be shown a source code file along with a multi-select question listing several CWE (Common Weakness Enumeration) categories. Your task is to identify which of the listed CWEs are present in the code.

OUTPUT FORMAT: Respond with the letter(s) of all correct options, sorted alphabetically and comma-separated, wrapped in a single \boxed{...}. Examples: `\boxed{A}` for one correct, `\boxed{A,C}` for two, `\boxed{A,C,E}` for three. Output the boxed answer ONLY -- no explanation, no other text.

user: ```python
import asyncio
import configparser
from datetime import datetime
import json
import signal
import sys
import time
from urllib.parse import urlparse

RETRIES = 10


async def send_auth(reader, writer, user, password):
    auth = {"params": [user, password], "id": 2, "method": "mining.authorize"}
    print(f'send: {auth}')
    writer.write(f'{json.dumps(auth)}\n'.encode())

    line = await reader.readline()
    print(f'auth response: {line}')


def send_subscribe(writer):
    subscribe = {"id": 1, "method": "mining.subscribe", "params": []}
    writer.write(f'{json.dumps(subscribe)}\n'.encode())


async def pool_listener(poolname, url, user, password):
    parsed = urlparse(url)
    timestamp = datetime.now().isoformat(timespec='minutes')
    with open(f'./data/{poolname}-{timestamp}.json', 'wt') as file:
        for i in range(RETRIES):
            try:
                reader, writer = await asyncio.open_connection(
                    parsed.hostname, parsed.port)

                send_subscribe(writer)
                await send_auth(reader, writer, user, password)

                while True:
                    line = await reader.readline()
                    msg = json.loads(line.decode())
                    msg["r"] = datetime.now().isoformat()
                    file.write(json.dumps(msg)+'\n')
                    file.flush()
            except:
                if i < RETRIES:
                    time.sleep(5)
                    print(f'Reconnecting {poolname}')
                    continue
                else:
                    raise


async def run_with(config):
    tasks = []
    for pool in config.sections():
        if not config[pool].getboolean("enabled"):
            continue
        print(f'Starting {pool}')
        task = asyncio.create_task(
            pool_listener(pool, config[pool]["url"],
                          config[pool]["user"], config[pool]["password"]))
        tasks.append(task)

    def signal_handler(sig, frame):
        print('Stopping..')
        for task in tasks:
            task.cancel()
        print('Stopped.')
        sys.exit(0)

    signal.signal(signal.SIGINT, signal_handler)

    for task in tasks:
        await task


if __name__ == "__main__":
    config = configparser.ConfigParser()
    config.read("pools.ini")
    asyncio.run(run_with(config))


```

Which of the following CWE vulnerability categories are present in this code? Multiple options may be correct.

  A) CWE-730: OWASP Top Ten 2004 Category A9 - Denial of Service
  B) CWE-94: Improper Control of Generation of Code ('Code Injection')
  C) CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')
  D) CWE-312: Cleartext Storage of Sensitive Information
  E) CWE-732: Incorrect Permission Assignment for Critical Resource
  F) CWE-377: Insecure Temporary File
Answer: D