Venue: ICLR 2018 Workshop

Reviews:

final_score: rating: 6: Marginally above acceptance threshold
review_content: The paper presents an end to end approach for malware detection based on byte sequences.

+ The authors added strong baselines with hand crafted features
+ the authors attempted to understand the decisions of the network

- files with obfuscation methods were excluded
- The approach does not perform as well as hand engineered features
- not all details given

Interesting idea and in my opinion good enough for the workshop. 

review_title: Interesting idea, slightly negative result, but solid work

final_score: rating: 7: Good paper, accept
review_content: The new network architecture proposed in the paper is novel. The experiment results show this architecture compares favorable with MalConv on a data set collected by the authors. It is good to know that learned features also help to improve accuracy. Several questions:
1) Are the malicious and benign examples balanced? 
2) Is the good performance due to its deeper structure comparing with MalConv? How long is training time?
3) Why does SELU help here?


review_title: A new convolutional network architecture for malware classification

final_score: rating: 6: Marginally above acceptance threshold
review_content: This paper proposes to use a convolutional neural network, taking program binaries as inputs, to detect malware. The results are on par with a network that takes in hand-crafted features, and the hidden layers are shown to be complementary to the hand-crafted features.

The paper is well written and easy to follow. The descriptions of the experiments are complete. One minor thing missing is the learning rate of the Adam optimizer.

I have a more fundamental question about the task. How much does the model learn to identify parts of the problematic source code? How much does the model learn to identify signs unrelated to the source code, such as things in the header? I assume that in many cases you can judge whether a piece of binary is malware just by looking at the cosmetics of the program, but these features might not generalize well in the long run. I assume it would be much more useful to identify certain sequence of instructions and memory addresses based on cpu architectures. It would be great to analyze the CNN to see what it is paying attention to.

The other fundamental question about the task is obfuscation. On the one hand, in theory there is no universal tool to overcome obfuscation (with the standard crypto assumptions). On the other hand, it's probably easy to detect trivial obfuscation, because the resulting program binaries would look significantly different from regular program binaries. How often are binaries obfuscated in general? How do these affect the model's performance? What are the characteristics of regular program binaries?

Programs as data are more stringent than natural images and words. The CNNs might require a lot of effort just learning the common idioms of programming, such as control flows, loops, from the binaries. I think the CNNs might benefit from these high-level constructs/templates when identifying malwares. Since CNNs or deep models in general are strong at coping with noise, it might be useful to look at how they behave on mutated malware.
review_title: interesting application of CNNs

Meta-review: Congratulations, your paper was accepted to the ICLR workshop.
Decision: Accept