Study & contribute to bitcoin and lightning open source
Interactive AI chat to learn about bitcoin technology and its history
Technical bitcoin search engine
Daily summary of key bitcoin tech development discussions and updates
Engaging bitcoin dev intro for coders using technical texts and code challenges
Review technical bitcoin transcripts and earn sats
Slides: https://docs.google.com/presentation/d/1NlTw_n60z9bvqziZqU3H3Jw7Xs5slnQoehYXhEKrzOE
parse_json
que podría bloquearse en alguna entrada extraña, pero no informará de entradas json no válidas que pasan el análisis. libFuzzer hace la cobertura de bucle de retroalimentación guiada + ayuda con la exploración del flujo de control.Assume()
cuando continuar no es peor que fallar. Assert()
se bloqueará en producción. Assume()
se bloqueará en depuración. Lanzar todo tipo de Assume()
en el código está bien pero ralentiza la producción. Coloca aserciones en el objetivo fuzz.ProcessMessage()
es una sentencia switch gigante en su mayor parte - libFuzzer no es capaz de producir transacciones válidas, bloques, cabeceras debido a PoW, firmas, hashes, etc. Podríamos/deberíamos simular la validación para permitir un mejor fuzzing del procesamiento de la red.
Boundary testing - no es realmente fuzzing - una técnica diferente que está bien tener a una nueva técnica para probar interacciones? Aún es necesario lanzar envoltorios alrededor de las funciones.txrequest
, txorphan
, headerssync
- encapsular en módulos propios y probarlos por separado.
Queremos procesamiento neto fuzz en el aislamiento - haciendo más refactorización / mocks. algo de trabajo ya, pero más correcciones necesarias.FuzzDataProvider
- utilidad para dividir entradas fuzz en estructuras de datos c++. Por ejemplo, si quieres procesar bloques fuzz, usa FuzzDataProvider
para parsear las entradas fuzz en bloques válidos.
podríamos escribir código para producir semántica válida pero demasiado código en la parte de pruebas.ProcessMessage()
. si la única motivación es refactorizar tal vez no deberíamos. Fuzzing encuentra bugs - tan importante también.ProcessMessage()
de los peers, necesitan ser inicializados.--generate
.Community-maintained archive to unlocking knowledge from technical bitcoin transcripts