I am writing a paper on the implementation of QKD in the future. I want to know if there are any viable attacks on the BB84 protocol or QKD in general? I know of the Photon Number Splitting attack or spectroscopy in the case of diode manufacturing but I have heard that there are already solutions for those. Are there any other attacks that I have missed out?
The Attack you mentioned (PNS) is a "hardware attack" it depends on how you physically distribute the qubits.
The only "protocol attack" (known for the BB84) is the "intercept & resend" that can be applied on every hardware you use and can be performed very easily(but Eve is easy to detect if the key is, at least, 72 bit long).
Another attack that can be performed is the man-in-the-middle, but this is not related to the protocol but to the total absence of authentication in the BB84.
This answer is focused on the BB84 protocol because of every protocol have different points of strength and weakness so "QKD in general" is a bit vague... i hope this can help you.
But practical adversaries think outside of the box and actively modify the quantum experiment so that the model is no longer a close fit. Like they blinds the photon detector! Quoting Lars Lydersen, Carlos Wiechers, Christoffer Wittmann, Dominique Elser, Johannes Skaar and Vadim Makarov: Hacking commercial quantum cryptography systems by tailored bright illumination, in Nature Photonics Letter 2010:
we demonstrate how two commercial QKD systems id3110 Clavis2 and QPN 5505, from the commercial vendors ID Quantique and MagiQ Technologies, can be fully cracked. We show experimentally that Eve can blind the gated detectors in the QKD systems using bright illumination, thereby converting them into classical, linear detectors. The detectors are then fully controlled by classical laser pulses superimposed over the bright continuous-wave (c.w.) illumination. Remarkably, the detectors exactly measure what is dictated by Eve.
More generally, the full spectrum of classical side-channel attacks and hacks appears applicable to QKD decices, or the classical cryptography devices they seed.
[This is extracted from my overly long answer on what makes QKD secure - or not]