Owncast, a self-hosted live video streaming server, has made it seamless for users to broadcast their content. However, recently a serious SQL injection vulnerability (CVE-2022-3751) was detected in the Owncast GitHub repository (owncast/owncast) before version ..13. This vulnerability could be exploited by attackers to manipulate the database, potentially jeopardizing the application's functionality and user data.

In this long read, we'll look at the vulnerability in detail and explore the necessary steps to remediate the issue.

Exploit Details

The vulnerable code is present in the webroot/chat/save.go file within the saveChatMessage function. Below is a snippet of the code:

func saveChatMessage(message components.ChatEvent) error {
    query := "INSERT INTO chat_messages (authorDisplayName, authorUsername, authorID, authorPhotoURL, message, rawMessage, sent) VALUES (?, ?, ?, ?, ?, ?, ?)"

    // Send the message to the database
    _, err := database.db.Exec(
        query,
        message.Message.DisplayName,
        message.Message.Author,
        message.Message.UserID,
        message.Message.Photo,
        message.Message.Message,
        message.RawMessage,
        time.Now(),
    )
    if err != nil {
        return err
    }

    return nil
}

The code above constructs an SQL query through string concatenation using the message variable, which is derived from user input. This user input can potentially contain malicious SQL code that, when executed, manipulates the database.

Original References

1. Owncast GitHub Repository
2. Owncast v..13 Release Notes
3. CVE-2022-3751 Official Reference

Remediation Steps

To mitigate the SQL injection vulnerability (CVE-2022-3751), upgrade your Owncast instance to version ..13 or later by following these steps:

1. Start by taking a backup of your Owncast instance's configuration, database, and other essential files.

2. Download the latest release of Owncast (v..13 or later) from the official GitHub repository.

3. Extract the downloaded release and replace the /webroot/chat/save.go file with the updated version found in the new release.

Rebuild your Owncast instance with the updated code.

5. Verify if the vulnerability is resolved by testing the recent changes with sample input via the chat feature.

Consider enforcing the following best practices for a more secure solution

- Utilize prepared statements, parameterized queries or stored procedures when dealing with SQL queries to avoid exposure to SQL injection attacks.
- Implement input validation to filter out potentially harmful data before processing it in the application.
- Perform regular security reviews and penetration tests to identify potential vulnerabilities in your application.

Conclusion

By addressing the SQL injection vulnerability (CVE-2022-3751) in Owncast prior to v..13, you can secure your self-hosted live video streaming server against potential attacks. Always ensure you are using the latest version and implementing the best security practices to maintain the confidentiality, integrity, and availability of your Owncast instance and user data.

Timeline

Published on: 11/29/2022 21:15:00 UTC
Last modified on: 12/01/2022 20:48:00 UTC