[ 
https://issues.apache.org/jira/browse/CASSANDRA-12548?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dave Brosius updated CASSANDRA-12548:
-------------------------------------
    Priority: Minor  (was: Major)

> Improper Neutralization of Special Elements used in a Command ('Command 
> Injection'), Improper Neutralization of Special Elements used in an OS 
> Command ('OS Command Injection')
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-12548
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-12548
>             Project: Cassandra
>          Issue Type: Sub-task
>            Reporter: Eduardo Aguinaga
>            Priority: Minor
>
> Overview:
> In May through June of 2016 a static analysis was performed on version 3.0.5 
> of the Cassandra source code. The analysis included an automated analysis 
> using HP Fortify v4.21 SCA and a manual analysis utilizing SciTools 
> Understand v4. The results of that analysis includes the issue below.
> Issue:
> The software constructs all or part of a command using externally-influenced 
> input from an upstream component, but it does not neutralize or incorrectly 
> neutralizes special elements that could modify the intended command when it 
> is sent to a downstream component.
> The source file CommitLogArchiver.java retrieves commands stored as system 
> properties and executes these commands after replacing tokens with relevant 
> data. The commands retrieved are not verified to ensure that the commands do 
> not contain malicious content. An adversary could perform part of its attack 
> on Cassandra by replacing the "archive_command" or "restore_command" property 
> with commands to achieve their goal. 
> Line numbers 141, 163, 251 and 265
> {code:java}
> CommitLogArchiver.java, lines 91-92:
> 91 String archiveCommand = commitlog_commands.getProperty("archive_command");
> 92 String restoreCommand = commitlog_commands.getProperty("restore_command");
> CommitLogArchiver.java, lines 129-144:
> 129 public void maybeArchive(final CommitLogSegment segment)
> 130 {
> 131     if (Strings.isNullOrEmpty(archiveCommand))
> 132         return;
> 133 
> 134     archivePending.put(segment.getName(), executor.submit(new 
> WrappedRunnable()
> 135     {
> 136         protected void runMayThrow() throws IOException
> 137         {
> 138             segment.waitForFinalSync();
> 139             String command = archiveCommand.replace("%name", 
> segment.getName());
> 140             command = command.replace("%path", segment.getPath());
> 141             exec(command);
> 142         }
> 143     }));
> 144 }
> CommitLogArchiver.java, lines 261-266:
> 261 private void exec(String command) throws IOException
> 262 {
> 263     ProcessBuilder pb = new ProcessBuilder(command.split(" "));
> 264     pb.redirectErrorStream(true);
> 265     FBUtilities.exec(pb);
> 266 }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to